交流評論、關注點贊

  • Facebook Icon臉書專頁
  • telegram Icon翻牆交流電報群
  • telegram Icon電報頻道
  • RSS訂閱禁聞RSS/FEED訂閱

GFW技術報告:入侵防禦系統的評測和問題

2016年02月17日 11:06 PDF版 分享轉發

KLZ畢業 2009年8月24日

CC0 1.0 Universal
在法律允許的範圍內,本文作者放棄本文的一切著作權和鄰接權。

1. 前言

隨著網路與信息技術的發展,尤其是互聯網的廣泛普及和應用,網路正逐步改變著人類的生活和工作方式。越來越多的政府、企業組織建立了依賴於網路的業務信息 系統,比如電子政務、電子商務、網上銀行、網路辦公等,對社會的各行各業產生了巨大深遠的影響,信息安全的重要性也在不斷提升。近年來,企業所面臨的安全 問題越來越複雜,安全威脅正在飛速增長,尤其混合威脅的風險,如黑客攻擊、蠕蟲病毒、木馬後門、間諜軟體、殭屍網路、DDoS攻擊、垃圾郵件、網路資源濫 用(P2P下載、IM即時通訊、網游、視頻)等,極大地困擾著用戶,給企業的信息網路造成嚴重的破壞。能否及時發現並成功阻止網路黑客的入侵、保證計算機 和網路系統的安全和正常運行便成為企業所面臨的一個重要問題。

基於目前網路安全形勢的嚴 峻,入侵防禦系統(Intrusion Prevention System)作為新一代安全防護產品應運而生。網路入侵防禦系統作為一種在線部署的產品,提供主動的、實時的防護,其設計目標旨在準確監測網路異常流 量,自動對各類攻擊性的流量,尤其是應用層的威脅進行實時阻斷,而不是簡單地在監測到惡意流量的同時或之後才發出告警。IPS是通過直接串聯到網路鏈路中 而實現這一功能的,即IPS接收到外部數據流量時,如果檢測到攻擊企圖,就會自動地將攻擊包丟掉或採取措施將攻擊源阻斷,而不把攻擊流量放進內部網路。

雖然入侵防禦系統的概念被各大廠商迅速地用於生產實踐當中,然而值得警惕的是市場上存在的 入侵防禦系統不想廠商聲稱的那樣無所不能,而是仍然存在這 樣那樣的問題需要注意。所以本文就對CNCERT/CC部署的某款入侵防禦系統進行了一些評測,並對業內常見入侵防禦系統的一些問題進行了一些評論

2. 評測

2.1 主要工作範圍

該系統在網路層主要支持IPv4,目前尚未支持IPv6。在傳輸層主要支持TCP和UDP。在應用層支持大量協議,主要面向HTTP、SMTP、DNS等,並可根據實際需要編寫新的協議解析模塊進行更新。

2.2 黑箱測試

該系統採取會話阻斷的方式來應對主要是發生在TCP上的攻擊,實際上這也是一般IPS主要採用的主動防禦方式。

Ad:美好不容錯過,和家人朋友一起享受愉快時光,現在就訂票

通過分析該系統阻斷TCP會話的通信發現,它表現出區分度顯著的幾種會話阻斷方法。下面給出一些分析。(出於安全考慮不給出實驗方法和實驗數據;另外請注意「充要條件」的含義)

方式1

方式1的TCP/IP報文特徵:

  • IP頭部ID不變(0x0040),TTL不變,不設置DF。
  • TCP頭部的窗口尺寸隨機。處理實驗數據發現,窗口尺寸服從均勻分佈,進行自相關分析未發現規律。
  • 無TCP選項,即使通信上下文都有TCP選項。
  • TCP標誌位只設置RST。
  • 往返時間(RTT)的分佈呈現出多條帶樣分佈,每條帶內觀察推測是正態分佈。在某內陸電信節點的實測結果有兩個條帶。無法確定這是動態路由多路徑的結果還是系統特性。

方式1的工作方式特性:

  • 基於TCP流模式對TCP會話進行檢測,會根據連接發起方的單向通信重建會話狀態。實驗顯示:在發送SYN之後無論是否有SYN/ACK響應,繼續發送ACK和含有攻擊性數據荷載的PSH/ACK包都會被阻斷會話[注1];而缺少SYN或ACK都不會被阻斷;如果在攻擊數據之前發出RST自行關閉連接,也不會觸發阻斷。
  • 如果連接是有效的則會進行TCP重組提取數據負載並進行應用層協議分析。實驗顯示,即使將關鍵詞分在兩個TCP包里分別發送也可以檢測出來。
  • 新連接檢測的超時時間很長,實驗結果表明至少有200秒。尚未確定其準確數值。
  • 當檢測出攻擊性關鍵詞之後,發送RST阻斷會話,並對相同IP地址對和目標埠(客戶端更換埠依然觸發)之間的後繼連接產生一定時間的繼發阻斷。
  • 繼發阻斷不檢測TCP會話狀態,也不檢測TCP數據負載,也不檢測TCP頭部除了目標埠號的其他信息。經過對TCP六個標誌位64種組合的實驗發現,在檢測到攻擊性關鍵詞觸發阻斷之後產生一個RST的充要條件是截獲一個報文的SYN、FIN、RST位同時為零目標埠號一致。符合此條件的TCP標誌常見有ACK和PSH/ACK。
  • 繼發阻斷會持續一段時間。具體時長有待準確測量。
  • 含有攻擊性數據的HTTP報文會在除21、25、42、53、110、135、136、 137、138、139、143、445、 593、1025、1068、1434、3127、3128、3129、3130、3332、4444、5554、6669、9996、30100以外的 埠觸發阻斷。(此實乃實驗環境造成的系統誤差,2009-08-25)
  • HTTP GET之後的路徑只檢查前2048位元組。如果路徑長度小於2048位元組,可能還會將主機名連接到路徑之前一併進行模式匹配。
  • 經過大量實驗沒有發現證據證明方式1存在HTTP協議的深度檢測。(有。2009-09-19)
  • 方式1在其他埠上對其他應用層協議的檢測特性有待了解。需要進一步實驗。

方式2

方式2的TCP/IP報文特徵:

  • IP頭設置DF。
  • 無TCP選項,即使通信上下文都有TCP選項。
  • TCP標誌位只設置RST和ACK。
  • IP頭ID、TTL,TCP頭窗口隨時間連續變化。
  • TCP頭th_win從0到5042連續遞增循環。
  • IP頭ip_id與TCP頭th_win滿足:ip_id = (unsigned short)(i – th_win*n),其中內陸電信節點測量得n為13,i為-1(即65535),如下圖。
  • IP頭ip_ttl與TCP頭th_win滿足:ip_ttl = th_win%64 + k。在內陸電信節點測得,k以11/12的概率為某個值,以1/12的概率為另一個小2的值。根據跳數測量的結果推測初始時k應在48附近。
  • 往返時間的分佈呈現出多條帶樣分佈,每條帶內可能是正態分佈。在內陸電信節點測量得圖樣與方式1基本一致,但條帶內分佈似乎更集中。無法確定這是動態路由多路徑的結果還是系統特性。

方式2的工作方式特性:

  • 如未說明,則TCP層各工作特性與方式1基本一樣。
  • 在首次阻斷中會先發送一組三個左右RST/ACK,序列號依次加1460,再根據後續情況發送RST/ACK。
  • 在繼發阻斷中有時會對攻擊者發送的SYN趕在目標主機之前響應一個偽造的SYN/ACK破壞其會話。
  • 如果HTTP報文的換行符是’\n’,即使方式1會進行阻斷,方式2也不會反應。
  • 如果HTTP GET後面的路徑不是以’/’開始的,即使方式1會進行阻斷,方式2也不會反應。
  • 方式會將主機名連接到路徑之前一起匹配,只檢測拼接之後字串的前約8000位元組。
  • 針對重點站點,方式2會額外對其進行從服務端到客戶端的單向檢測。會對HTTP除了頭部以外的主體部進行嚴格的深度檢測。攻擊性關鍵詞經過deflate壓縮仍然會觸發阻斷。含有攻擊性關鍵詞的某些特殊Content-Type頁面不會觸發阻斷。
  • 方式2在其他埠上對其他應用層協議的檢測特性有待了解。

方式3

  • 偶爾發現有帶有根據上下文合理設置TCP選項的會話阻斷RST。但由於無法找到其出現的規律性,因此無法細緻測量。由於其往返時間很小,懷疑是部署在離測試者很近的位置。

另外,由於UDP的無狀態性,在UDP上發生的主動防禦,比如對攻擊者的DNS查詢進行干擾的報文則具有很明顯的時序特徵。

3. 問題和反思

聰明的攻擊者可能採取各種手段來避免入侵防禦系統的主動防禦。一般意義上攻擊者為此可能採取的策略有這樣幾類:規避、忽略、監測、攻擊。

3.1 規避

這通常是攻擊者被動避免入侵檢測的方式,入侵者使用特殊手段讓IPS無法檢測到惡意通信而無法進行主動防禦從而達到攻擊的目的。

常見的規避手段的要素可以分為幾類:

  • 採用代理的方式繞過路由對其的IP封鎖和入侵檢測。
  • 採用加密的方式使得IPS無法檢測到攻擊字串。
  • 採用特殊協議和常見協議的特殊設置(比如罕見TCP埠)脫離檢測範圍。
  • 採用特殊的DNS解析方法或者設置靜態DNS映射以繞過DNS干擾。

通常攻擊者都會綜合多種要素企圖逃過IPS的檢測,然而這些手段無疑為攻擊者的入侵增加了難度。

3.1.1 注入和閃避

T. Ptacek等在1998年的論文[Ptacek98]中提出兩種特殊的規避入侵檢測的方法,一種是注入法、一種是閃避法。它們的基本原理是製造歧義讓 IPS錯誤地分析協議從而錯誤地認為網路上正在發生著或者沒有發生某種事件。注入法是指製造不會被其他節點接受的報文而讓這些數據注入IPS;閃避法是指 讓最終被其他節點接受的報文閃避開IPS的檢測。兩種方法主要有三類原理,一類是特定的網路拓撲會導致一些報文被丟棄,一類是目的地的特定設置導致一些報 文被丟棄,一類是不同操作系統之間TCP/IP棧實現的微妙差異。一般的IPS對常見攻擊方法都有一定的防範能力,然而一種簡單的基於修改TTL的注入法卻可能成為難以避免的弱點。

IP包頭部的TTL欄位表示報文在網路上生存多少「跳」,每通過一個路由器該值減1,為0時將被路由器丟棄。因此攻擊者可以發送TTL值經特別設置的報文 使其通過IPS卻不會到達目的地從而能夠向IPS注入任意數據。比如將偽報文的TTL設置為可以到達目的地的最小值減1,那麼路徑上的任何IPS都不能逃 脫被注入攻擊的命運。而IPS如果要進行狀態檢測,攻擊者能夠很容易地破壞IPS維護的會話狀態而讓後續會話隱身[注2],從而逃避IPS的檢測;或者讓 IPS以為實際上清白的主機進行了攻擊而錯誤地進行主動防禦。

中小型網路對此有一定的反 制措施,可以通過設置路由器丟棄TTL過小的IP包來保護IPS免於注入攻擊。不過IPS本身不能忽略TTL值較小的報 文,否則反而可能打開閃避攻擊的大門。丟棄TTL的閾值需要根據網路拓撲精確選取,這造成在較大型的動態網路上難以選取一個合理的閾值。部署在較大型網路 上的IPS處在遠離連接兩方終端節點的位置上,難以推測兩端的距離,也沒有反TTL過期攻擊的路由保護。可以說這種位置上的IPS具有對於TTL注入攻擊 的天生弱點,需要進行特別注意。

3.2 忽略

這 是一種攻擊者被動避免IPS攻擊的方式。攻擊者可能會根據IPS的報文特徵或者時序特性(RTT)等特徵識別出IPS進行主動防禦所發送的報文並 進行有意的忽略,造成IPS即使可以檢測也無法有效進行防禦。對這種情況IPS應該與周邊的防火牆和路由進行聯動,即使更新靜態過濾規則對攻擊者進行硬性 防禦。另一方面,由於通常受害者的TCP/IP棧都會收到IPS雙向發出的RST並關閉連接,所以只要攻擊者不侵入IPS內部網路並修改受害者的TCP /IP棧特性或者採取其他手段同樣忽略IPS發出的RST,那麼IPS就能夠成功關閉攻擊者的連接從而成功進行主動防禦。

3.3 監測

IPS進行主動防禦會發送一些數據。這就讓攻擊者有機會對IPS進行掃描和監聽以獲取IPS的特徵和特性、IPS的位置、IPS的數量等信息。這可能產生潛在的安全問題,因此IPS應該對發送的數據進行充分的隨機化和模糊化。

3.4 攻擊

IPS 要進行大計算量的檢測,如果設計不當或者缺乏反拒絕服務措施,很可能給攻擊者造成拒絕服務的弱點。IPS首先要排除各種樸素洪水攻擊的影響。 另外,比如前面進行評測的該IPS,只檢測TCP單向狀態,沒有三次握手仍然會繼續重組會話[注1],這就為偽造源IP地址的拒絕服務攻擊造成隱患。攻擊 者可能用大流量的偽造連接填滿IPS的狀態空間或者造成IPS計算能力低下,使得真正的攻擊連接得不到阻止。即使IPS進行包括三次握手在內的雙向狀態檢 測,拒絕服務攻擊的可能性仍然存在。因為,攻擊者只需要在IPS路徑的兩端各部署一些結點,使用偽造源地址以事先確定好的序列號進行的三次握手,進行這種 注入攻擊,攻擊者還可特別選取地址或者設置TTL以避免被偽造者進行響應而干擾攻擊。

另外,攻擊者可能利用IPS的主動防禦特性來阻斷無辜主機之間的通信。無論IPS是檢測單向狀態還是包括三次握手在內的雙向狀態,都顯然有類似上述拒絕服務攻擊的攻擊方法。因此IPS的主動防禦如果沒有白名單進行特別檢查,可能會造成各種嚴重問題。

另 外,大陸的攻擊者也很可能從暴風DNS事件中得到經驗,試圖利用廣泛使用的軟體來進行分散式拒絕服務攻擊。一種可能性就是利用迅雷廣泛的用戶分佈 和迅雷的軟體特性,首先對迅雷的資源自動提交協議進行反向工程,然後大量提交會觸發IPS主動防禦的熱門資源偽URL進行URL污染,最終使得大量用戶經 過IPS進行大量觸發性連接,消耗IPS的計算資源、擾亂IPS的日誌記錄。

對於攻擊者可能採取的以上針對IPS本身的攻擊,一種解決方法是IPS採取分散式布局,將防禦散布到整個網路之中而不是僅僅堆積在網關出入口。當然,這也需要良好的同步技術。

註釋

  • 注1 演示程序ufw,代碼見[1]
  • 注2 演示程序notarget,代碼見[2]。?

喜歡、支持,請轉發分享↓Follow Us 責任編輯:周楓