Nmap 防火牆規避掃描技術

Nmap Firewall Evasion Scanning Techniques

防火牆規避概述

在進行滲透測試或安全評估時,經常會遇到防火牆、入侵偵測系統(IDS)或入侵防禦系統(IPS)等安全設備。這些設備會監控網路流量,並阻擋可疑的掃描行為。Nmap 提供了多種技術來規避這些安全機制,使掃描能夠更有效地進行。

常見的防火牆阻擋方式

  • 封包過濾:根據來源 IP、目的 IP、埠號等過濾流量
  • 狀態檢測:追蹤連線狀態,阻擋不符合正常連線流程的封包
  • 深度封包檢測(DPI):分析封包內容,識別惡意流量特徵
  • 流量異常檢測:識別異常的掃描行為模式

規避技術的應用場景

這些技術主要用於合法的滲透測試中,幫助安全專業人員:

  • 測試防火牆規則的有效性
  • 評估 IDS/IPS 的檢測能力
  • 模擬真實攻擊者的行為
  • 發現安全設備的盲點

封包分片

封包分片是一種將 IP 封包拆分成較小片段的技術。某些防火牆和 IDS 可能無法正確重組這些分片,導致無法檢測到掃描行為。

基本分片掃描

1
sudo nmap -f 192.168.1.1

-f 選項會將封包分割成 8 位元組的片段。

指定分片大小

1
sudo nmap --mtu 16 192.168.1.1

--mtu 選項可以指定最大傳輸單元(MTU),必須是 8 的倍數。較小的 MTU 值會產生更多的分片。

雙重分片

1
sudo nmap -ff 192.168.1.1

使用 -ff 會將封包分割成 16 位元組的片段,提供額外的混淆。

分片技術的限制

  • 某些現代防火牆會重組分片後再進行檢測
  • 過度分片可能導致封包被丟棄
  • 某些目標系統可能無法正確處理分片封包

誘餌掃描

誘餌掃描會在真實掃描流量中混入假的來源 IP 位址,使目標難以識別真正的掃描來源。

使用隨機誘餌

1
sudo nmap -D RND:10 192.168.1.1

這會產生 10 個隨機的誘餌 IP 位址。

指定誘餌 IP

1
sudo nmap -D 10.0.0.1,10.0.0.2,ME,10.0.0.3 192.168.1.1
  • ME 代表您的真實 IP 位址
  • 誘餌 IP 應該是存活的主機,否則可能導致目標的 SYN 洪水

誘餌掃描的最佳實踐

1
sudo nmap -D RND:5,ME -sS -T2 192.168.1.1

建議將真實 IP 混在誘餌中間,並使用較慢的掃描速度以避免被檢測。

注意事項

  • 誘餌 IP 必須是可達的,否則目標可能識別出假的來源
  • 版本偵測(-sV)和腳本掃描(-sC)不支援誘餌
  • 誘餌過多可能導致網路擁塞

空閒掃描(Idle Scan)

空閒掃描是一種極為隱蔽的掃描技術,利用第三方「殭屍」主機進行掃描,使目標完全看不到掃描者的真實 IP。

空閒掃描原理

  1. 探測殭屍主機的 IP ID 值
  2. 偽造來自殭屍主機的 SYN 封包發送給目標
  3. 再次探測殭屍主機的 IP ID 值
  4. 根據 IP ID 的變化判斷埠口狀態

尋找合適的殭屍主機

殭屍主機必須符合以下條件:

  • IP ID 序號是可預測的(遞增式)
  • 網路流量較低
  • 必須是存活的主機
1
sudo nmap -O -v 192.168.1.50

查看輸出中的 IP ID Sequence Generation,尋找 “Incremental” 的主機。

執行空閒掃描

1
sudo nmap -sI 192.168.1.50 192.168.1.1

其中 192.168.1.50 是殭屍主機,192.168.1.1 是目標。

空閒掃描配合特定埠口

1
sudo nmap -sI 192.168.1.50:80 -p 22,80,443 192.168.1.1

可以指定殭屍主機的來源埠口以增加成功率。

空閒掃描的優點與限制

優點:

  • 完全匿名,目標只看到殭屍主機的 IP
  • 可以繞過基於 IP 的存取控制

限制:

  • 找到合適的殭屍主機較困難
  • 掃描速度較慢
  • 只能進行 TCP 埠口掃描

來源埠偽造

許多防火牆會允許來自特定埠口的流量通過,例如 DNS(53)、HTTP(80)或 FTP(20)。

指定來源埠

1
sudo nmap --source-port 53 192.168.1.1

或使用簡寫:

1
sudo nmap -g 53 192.168.1.1

常用的可信任來源埠

埠號服務說明
20FTP-DataFTP 資料傳輸
53DNSDNS 查詢回應
67DHCPDHCP 伺服器
80HTTPWeb 流量
88Kerberos認證流量

結合其他技術

1
sudo nmap -g 53 -sS -T2 -f 192.168.1.1

MAC 位址偽造

在區域網路中,可以偽造 MAC 位址來繞過基於 MAC 的存取控制。

使用隨機 MAC 位址

1
sudo nmap --spoof-mac 0 192.168.1.1

0 表示使用完全隨機的 MAC 位址。

指定特定廠商

1
sudo nmap --spoof-mac Apple 192.168.1.1

可以使用廠商名稱,Nmap 會使用該廠商的 OUI 前綴。

指定完整 MAC 位址

1
sudo nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1

常用廠商前綴

1
2
3
sudo nmap --spoof-mac Dell 192.168.1.1
sudo nmap --spoof-mac Cisco 192.168.1.1
sudo nmap --spoof-mac Microsoft 192.168.1.1

注意事項

  • MAC 偽造只在區域網路中有效
  • 需要與目標在同一個廣播域
  • 某些交換機可能有埠口安全限制

時間控制

控制掃描速度可以避免觸發基於流量模式的檢測機制。

時間範本

1
2
3
sudo nmap -T0 192.168.1.1  # Paranoid - 極慢,5分鐘間隔
sudo nmap -T1 192.168.1.1  # Sneaky - 15秒間隔
sudo nmap -T2 192.168.1.1  # Polite - 0.4秒間隔

精細時間控制

1
sudo nmap --scan-delay 5s 192.168.1.1

設定每個探測之間的最小延遲。

1
sudo nmap --max-scan-delay 10s 192.168.1.1

設定最大延遲時間。

控制探測速率

1
sudo nmap --min-rate 10 --max-rate 100 192.168.1.1

限制每秒發送的封包數量。

隱蔽掃描時間配置

1
sudo nmap -T1 --scan-delay 10s --max-retries 1 192.168.1.1

這種配置適合需要長時間隱蔽掃描的場景。

資料長度調整

標準的 Nmap 掃描封包具有特定的大小特徵,調整資料長度可以避免特徵匹配。

附加隨機資料

1
sudo nmap --data-length 25 192.168.1.1

在封包中附加 25 位元組的隨機資料。

使用十六進位資料

1
sudo nmap --data 0xdeadbeef 192.168.1.1

附加特定的十六進位資料。

使用字串資料

1
sudo nmap --data-string "padding" 192.168.1.1

附加特定的 ASCII 字串。

結合分片使用

1
sudo nmap -f --data-length 24 192.168.1.1

綜合規避範例

範例 1:基本隱蔽掃描

1
sudo nmap -sS -T2 -f --data-length 24 -g 53 192.168.1.1

結合 SYN 掃描、慢速時間、分片、資料填充和來源埠偽造。

範例 2:使用誘餌的完整掃描

1
2
sudo nmap -sS -D RND:10,ME -T1 -f --mtu 24 \
  --data-length 30 -g 53 -p 1-1000 192.168.1.1 -oA stealth_scan

範例 3:極度隱蔽的掃描

1
2
3
sudo nmap -sS -T0 -f --mtu 8 --data-length 50 \
  -D RND:20,ME --randomize-hosts -g 53 \
  --scan-delay 30s 192.168.1.0/24

範例 4:繞過特定防火牆規則

1
2
sudo nmap -Pn -sS -g 80 --data-length 32 \
  -T2 --badsum 192.168.1.1

--badsum 會發送錯誤校驗和的封包,某些防火牆可能會放行。

範例 5:空閒掃描完整配置

1
2
3
sudo nmap -sI zombie.example.com:443 \
  -Pn -p 22,80,443,3389 \
  -T2 target.example.com

範例 6:結合多種技術的滲透測試掃描

1
2
3
4
5
6
7
8
sudo nmap -sS -sV -O \
  -T2 -f --mtu 16 \
  --data-length 40 -g 53 \
  -D RND:5,ME \
  --randomize-hosts \
  --scan-delay 2s \
  -p 21,22,23,25,53,80,110,139,443,445,3306,3389 \
  192.168.1.0/24 -oA comprehensive_scan

其他規避選項

隨機化目標順序

1
sudo nmap --randomize-hosts 192.168.1.0/24

隨機掃描順序可以避免循序掃描的特徵。

跳過主機發現

1
sudo nmap -Pn 192.168.1.1

直接進行埠口掃描,避免 ping 探測被阻擋。

使用特定網路介面

1
sudo nmap -e eth0 192.168.1.1

偽造來源 IP

1
sudo nmap -S 10.0.0.100 -e eth0 192.168.1.1

注意:偽造來源 IP 將無法接收回應。

參考資料

總結

Nmap 提供了豐富的防火牆規避技術,包括封包分片、誘餌掃描、空閒掃描、來源埠偽造、MAC 位址偽造、時間控制和資料長度調整等。在實際使用中,通常需要結合多種技術來達到最佳效果。

重要提醒:這些技術應僅用於合法的滲透測試和安全評估,並且必須獲得目標系統擁有者的書面授權。未經授權使用這些技術可能違反法律。

在選擇規避技術時,應考慮:

  1. 目標環境的安全設備類型
  2. 可接受的掃描時間
  3. 所需的掃描深度和準確性
  4. 避免對目標網路造成不當影響
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy