防火牆規避概述
在進行滲透測試或安全評估時,經常會遇到防火牆、入侵偵測系統(IDS)或入侵防禦系統(IPS)等安全設備。這些設備會監控網路流量,並阻擋可疑的掃描行為。Nmap 提供了多種技術來規避這些安全機制,使掃描能夠更有效地進行。
常見的防火牆阻擋方式
- 封包過濾:根據來源 IP、目的 IP、埠號等過濾流量
- 狀態檢測:追蹤連線狀態,阻擋不符合正常連線流程的封包
- 深度封包檢測(DPI):分析封包內容,識別惡意流量特徵
- 流量異常檢測:識別異常的掃描行為模式
規避技術的應用場景
這些技術主要用於合法的滲透測試中,幫助安全專業人員:
- 測試防火牆規則的有效性
- 評估 IDS/IPS 的檢測能力
- 模擬真實攻擊者的行為
- 發現安全設備的盲點
封包分片
封包分片是一種將 IP 封包拆分成較小片段的技術。某些防火牆和 IDS 可能無法正確重組這些分片,導致無法檢測到掃描行為。
基本分片掃描
| |
-f 選項會將封包分割成 8 位元組的片段。
指定分片大小
| |
--mtu 選項可以指定最大傳輸單元(MTU),必須是 8 的倍數。較小的 MTU 值會產生更多的分片。
雙重分片
| |
使用 -ff 會將封包分割成 16 位元組的片段,提供額外的混淆。
分片技術的限制
- 某些現代防火牆會重組分片後再進行檢測
- 過度分片可能導致封包被丟棄
- 某些目標系統可能無法正確處理分片封包
誘餌掃描
誘餌掃描會在真實掃描流量中混入假的來源 IP 位址,使目標難以識別真正的掃描來源。
使用隨機誘餌
| |
這會產生 10 個隨機的誘餌 IP 位址。
指定誘餌 IP
| |
ME代表您的真實 IP 位址- 誘餌 IP 應該是存活的主機,否則可能導致目標的 SYN 洪水
誘餌掃描的最佳實踐
| |
建議將真實 IP 混在誘餌中間,並使用較慢的掃描速度以避免被檢測。
注意事項
- 誘餌 IP 必須是可達的,否則目標可能識別出假的來源
- 版本偵測(
-sV)和腳本掃描(-sC)不支援誘餌 - 誘餌過多可能導致網路擁塞
空閒掃描(Idle Scan)
空閒掃描是一種極為隱蔽的掃描技術,利用第三方「殭屍」主機進行掃描,使目標完全看不到掃描者的真實 IP。
空閒掃描原理
- 探測殭屍主機的 IP ID 值
- 偽造來自殭屍主機的 SYN 封包發送給目標
- 再次探測殭屍主機的 IP ID 值
- 根據 IP ID 的變化判斷埠口狀態
尋找合適的殭屍主機
殭屍主機必須符合以下條件:
- IP ID 序號是可預測的(遞增式)
- 網路流量較低
- 必須是存活的主機
| |
查看輸出中的 IP ID Sequence Generation,尋找 “Incremental” 的主機。
執行空閒掃描
| |
其中 192.168.1.50 是殭屍主機,192.168.1.1 是目標。
空閒掃描配合特定埠口
| |
可以指定殭屍主機的來源埠口以增加成功率。
空閒掃描的優點與限制
優點:
- 完全匿名,目標只看到殭屍主機的 IP
- 可以繞過基於 IP 的存取控制
限制:
- 找到合適的殭屍主機較困難
- 掃描速度較慢
- 只能進行 TCP 埠口掃描
來源埠偽造
許多防火牆會允許來自特定埠口的流量通過,例如 DNS(53)、HTTP(80)或 FTP(20)。
指定來源埠
| |
或使用簡寫:
| |
常用的可信任來源埠
| 埠號 | 服務 | 說明 |
|---|---|---|
| 20 | FTP-Data | FTP 資料傳輸 |
| 53 | DNS | DNS 查詢回應 |
| 67 | DHCP | DHCP 伺服器 |
| 80 | HTTP | Web 流量 |
| 88 | Kerberos | 認證流量 |
結合其他技術
| |
MAC 位址偽造
在區域網路中,可以偽造 MAC 位址來繞過基於 MAC 的存取控制。
使用隨機 MAC 位址
| |
0 表示使用完全隨機的 MAC 位址。
指定特定廠商
| |
可以使用廠商名稱,Nmap 會使用該廠商的 OUI 前綴。
指定完整 MAC 位址
| |
常用廠商前綴
| |
注意事項
- MAC 偽造只在區域網路中有效
- 需要與目標在同一個廣播域
- 某些交換機可能有埠口安全限制
時間控制
控制掃描速度可以避免觸發基於流量模式的檢測機制。
時間範本
| |
精細時間控制
| |
設定每個探測之間的最小延遲。
| |
設定最大延遲時間。
控制探測速率
| |
限制每秒發送的封包數量。
隱蔽掃描時間配置
| |
這種配置適合需要長時間隱蔽掃描的場景。
資料長度調整
標準的 Nmap 掃描封包具有特定的大小特徵,調整資料長度可以避免特徵匹配。
附加隨機資料
| |
在封包中附加 25 位元組的隨機資料。
使用十六進位資料
| |
附加特定的十六進位資料。
使用字串資料
| |
附加特定的 ASCII 字串。
結合分片使用
| |
綜合規避範例
範例 1:基本隱蔽掃描
| |
結合 SYN 掃描、慢速時間、分片、資料填充和來源埠偽造。
範例 2:使用誘餌的完整掃描
| |
範例 3:極度隱蔽的掃描
| |
範例 4:繞過特定防火牆規則
| |
--badsum 會發送錯誤校驗和的封包,某些防火牆可能會放行。
範例 5:空閒掃描完整配置
| |
範例 6:結合多種技術的滲透測試掃描
| |
其他規避選項
隨機化目標順序
| |
隨機掃描順序可以避免循序掃描的特徵。
跳過主機發現
| |
直接進行埠口掃描,避免 ping 探測被阻擋。
使用特定網路介面
| |
偽造來源 IP
| |
注意:偽造來源 IP 將無法接收回應。
參考資料
- Nmap 官方文件 - 防火牆規避
- Nmap 參考指南
- Nmap Network Scanning - Chapter 10: Detecting and Subverting Firewalls
- SANS - Nmap Cheat Sheet
總結
Nmap 提供了豐富的防火牆規避技術,包括封包分片、誘餌掃描、空閒掃描、來源埠偽造、MAC 位址偽造、時間控制和資料長度調整等。在實際使用中,通常需要結合多種技術來達到最佳效果。
重要提醒:這些技術應僅用於合法的滲透測試和安全評估,並且必須獲得目標系統擁有者的書面授權。未經授權使用這些技術可能違反法律。
在選擇規避技術時,應考慮:
- 目標環境的安全設備類型
- 可接受的掃描時間
- 所需的掃描深度和準確性
- 避免對目標網路造成不當影響