Black Hat USA 2000 - Bypassing Intrusion Detection Systems
三句話摘要
入侵偵測系統(IDS)的技術限制與繞過方法——涵蓋網路型、主機型 IDS 以及實際攻擊策略。 安全防禦不是單一的系統或技術,而是多層防禦與持續改進的過程,了解防禦機制的限制正是改進這些防禦的起點。 網路型 IDS 的核心弱點在於失同步——IDS 和目標主機對同一封包的重組方式可能不同。攻擊者若能使 IDS 的隊列失效或造成解釋差異,就能在偵測系統視野中插入看不見的資料,從而逃避簽名偵測。
重點整理
重點- 1
網路型 IDS 的核心弱點在於失同步——IDS 和目標主機對同一封包的重組方式可能不同。攻擊者若能使 IDS 的隊列失效或造成解釋差異,就能在偵測系統視野中插入看不見的資料,從而逃避簽名偵測。
- 2
IP 分片攻擊的多層面性——除了簡單的分片化外,攻擊者可以發送重疊分片或利用不同作業系統對分片的不同處理方式。此外,透過發送大量初始化分片來耗盡 IDS 的重組隊列資源,攻擊者可以在資源耗竭後完成真正的攻擊。
- 3
TCP 層失同步技術的複雜性——檢查和欺騙、序號操縱、時間活躍值濫用等技術都利用了 RFC 實現的細微差異。攻擊者甚至可以偽造重設封包,使 IDS 誤認為工作階段已結束,藉此隱藏後續攻擊流量。
- 4
應用層協定的無限變體問題——HTTP 的各種 URI 編碼方式(點斜線、反向遍歷等)和 Telnet 的退格序列等,都代表合法但非標準的輸入形式。IDS 無法窮盡所有可能的變體,簽名式防禦因此天生存在漏洞。
實用技巧與重點
乾貨- 繞過網路型 IDS 的具體技術:
- IP 分片攻擊(重疊分片、耗盡隊列資源)
- TCP 檢查和欺騙(發送無效檢查和的封包)
- TCP 序號操縱(插入序號無效但被 IDS 接受的封包)
- 時間活躍值 (TTL) 攻擊(利用 TTL 限制使特定封包只被 IDS 看到)
- 最大傳輸單元 (MTU) 濫用(發送超過 MTU 但設置「勿分片」位的封包)
- HTTP 變體:CGI-BIN/./PHF、../../../etc/passwd 等目錄遍歷
- Telnet 退格攻擊:su\b(退格)root 繞過簽名
- 相關工具與研究:
- Whisker(RainForest Puppy,HTTP 變體生成工具)
- Fragrouter(Linux 可載入核心模組,自動化分片攻擊)
- Bro IDS(專注監控伺服器出站流量而非入站攻擊)
- Stack Guard(對抗緩衝區溢位,但可被繞過)
- ITFS 核心模組(隱藏進程、檔案、網路連接)
- Tripwire(檔案完整性檢查工具)
- 主機型 IDS 繞過方法:
- 核心模組修改或後門安裝
- 庫重定向(攔截系統呼叫,如執行 login 時改為執行惡意程式)
- 日誌禁用或修改(如將 IP 位址改為其他值)
- 檔案完整性檢查繞過(修改核心而非修改檔案)
- 識別與繞過 IDS 基礎設施:
- DNS 查詢尋找 IDS 主機名(如 ids1.companyname.com)
- 觀察 IDS 連接重置的方式以識別型號
- 掃描 IDS 管理介面的開放連接埠
- 搜尋已發表文章中該 IDS 的已知限制
- 尋找 DNS 中或網頁上洩露的 IDS 型號資訊
- 連接埠掃描繞過:
- 慢速掃描(數小時至三天)超過 IDS 的時間閾值
- 改變目標連接埠號以避免模式識別
- 分散式掃描(多個源 IP 各發送少量連接,避免單一來源觸發閾值)
- 利用分散式阿尼服務工具(Trinoo、TFN)進行多源連接埠掃描
結論
結論“安全防禦不是單一的系統或技術,而是多層防禦與持續改進的過程,了解防禦機制的限制正是改進這些防禦的起點。”
完整解析
詳細這場技術演講系統性地分析了入侵偵測系統的防禦原理及其固有弱點。演講者開篇強調安全是持續的過程,沒有完美的防禦機制,理解這些限制才能改進防禦策略。
網路型入侵偵測系統的核心運作機制是透過分析網路封包中的特定模式來識別攻擊。這個過程涉及兩個關鍵的系統資源:第一是 IP 分片重組隊列,用於接收和重新組裝被分割的 IP 封包;第二是 TCP 工作階段隊列,用於追蹤跨越多個封包的通訊流。IDS 需要將這些分散的數據片段正確重組,然後與已知攻擊簽名比對。然而,演講者強調,這個看似簡單的過程實際上存在根本性的弱點——IDS 對封包的解釋方式可能與目標主機不同。
IP 分片攻擊是最直接的繞過方法。如果 IDS 根本不支援分片重組,攻擊者只需簡單地分割攻擊負載即可完全逃避偵測。即使 IDS 支援分片重組,攻擊者仍可利用不同作業系統對重疊分片的不同處理方式。例如,某些系統會用後來的分片覆蓋先前的數據,而另一些則保留先前的數據。演講者進一步說明了一種資源耗竭攻擊——發送大量初始化分片片段來填滿 IDS 的隊列記憶體,然後在隊列已滿且 IDS 無法進一步處理時,完成真正的攻擊。由於 IDS 資源已耗盡,它將無法檢測真實攻擊。
TCP 層面的失同步攻擊更加複雜且難以防禦。TCP 協議規定了嚴格的序號、確認號和各種控制位元規則,但不同的實作在細節上存在差異。演講者以 TCP 檢查和為例——每個 TCP 封包都包含一個檢查和欄位,用於驗證資料的完整性。攻擊者可以發送一個具有無效檢查和的封包。IDS 會接受它並加入工作階段隊列(在簽名比對時造成污染),但目標主機的核心會驗證檢查和並直接丟棄該封包。這樣攻擊者就在 IDS 的視圖中植入了目標主機實際上看不到的數據。類似的技術還包括操縱 TCP 序號——發送序號超前或落後的封包,使 IDS 的流量重組與實際主機接收到的流量不同。
時間活躍值 (TTL) 攻擊利用了網路拓撲的特性。如果 IDS 位於網路邊界前方且離目標伺服器有多個路由跳躍,攻擊者可以發送 TTL 值較低的封包。這些封包會被 IDS 看到,但在到達目標主機之前耗盡 TTL 並被路由器丟棄。演講者指出,許多組織有複雜的網路拓撲,特別是大型政府機構,可能有五到六個以上的路由跳躍。最大傳輸單元 (MTU) 濫用則利用了不同網路路徑的不同 MTU 設定。攻擊者可以發送超過某個 VPN 或撥號連接的 MTU 的封包,但設置「勿分片」位。第一個邊界路由器會丟棄該封包(因為它無法分片),但 IDS 可能已經將其納入分析,造成誤判。
應用層協定帶來了另一維度的問題。以 HTTP 為例,Web 伺服器實現非常寬容,接受多種合法但非標準的 URI 形式。演講者提到 Whisker 工具展示了如何使用各種 URI 變體來繞過簽名——包括額外的斜線、反向遍歷序列、不存在的目錄等。這些變體在伺服器端通常會被規範化為相同的資源,但傳輸層的 IDS 無法窮盡所有可能的形式。Telnet 協議中的退格鍵問題更加說明了這一點。標準簽名可能尋找「su root」命令,但使用者可以輸入「su(退格)root」,使傳輸線上看到的字符序列完全不同。演講者指出,即使 IDS 試圖理解退格邏輯,不同的終端設定也會導致不同的解釋——沒有完整的線上資訊來判斷接收方實際理解了什麼。
主機型入侵偵測系統面臨一個根本性的困境——它們必須運行在一個不受信任的作業系統上。一旦攻擊者獲得系統存取權限,他們可以修改核心甚至整個作業系統的行為。演講者提到著名的 ITFS 核心模組只有幾千行代碼,卻能隱藏特定進程、檔案和網路連接。這些隱藏是透過攔截系統呼叫實現的,但基於檔案完整性檢查的工具(如 Tripwire)只會發現核心本身已被修改,而不是發現真實的入侵痕跡。庫重定向是另一種相似的技術——攻擊者可以修改動態連結器,使得執行任何命令時都先執行惡意程式。演講者強調了日誌分析的脆弱性——攻擊者可以進入系統並禁用日誌記錄,或更隱蔽地修改日誌以移除自己的痕跡。
演講者也分析了針對 IDS 基礎設施本身的攻擊。許多組織運行多個 IDS 代理程式並將資料集中到單一伺服器(如大型 Oracle 資料庫),這個中央伺服器本身可能成為拒絕服務攻擊的目標。此外,IDS 通常有可識別的特徵——DNS 中註冊的主機名、特定的連接重置方式、開放的管理介面連接埠。這些特徵允許攻擊者在攻擊前識別系統類型,進而採用針對性的繞過策略。
實際的攻擊者在計劃繞過 IDS 時會考慮多個因素:網路是否有多個進入點,是否存在 IDS 無法處理的協議(如路由協議 OSPF、BGP),以及是否可以透過慢速掃描、隨機化或分散式掃描來避免觸發偵測閾值。演講者特別指出,分散式拒絕服務攻擊工具(如 Trinoo 和 TFN)的代理架構也可用於分散式連接埠掃描——多個源各發送少量連接會難以被相關性檢測系統識別為掃描活動。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

