【滲透測試LAB】NMAP Part3,端口掃描(Port Scanning)

Peter Zhang
9 min readSep 24, 2021

NMAP四項基本功能:

  1. 主機發現(Host Discovery)
  2. 端口掃描(Port Scanning)-本篇要說明的
  3. 版本偵測(Version Detection)
  4. 操作系統偵測(Operating System Detection)

在前期掃描完主機後,通常會依照掃描結果可以偵查的主機進行下個步驟的探測,而這就是端口掃描(Port Scaning)

在執行NMAP 端口掃描前,勢必要了解下圖NMAP端口掃描6種結果,才能了解後續提及的端口掃瞄技術。

圖1. 端口掃描(Port Scanning)結果種類

本篇練習環境如下圖2所示,目標端Mestaploitable IP :10.0.2.5;WIN10 IP:10.0.2.15。

圖2. 本篇實作環境示意圖

端口掃描(Port Scanning)

nmap < -掃描方式 >< IP位址 >

1. TCP connection Scan

針對端口傳送TCP SYN、SYN+ACK、ACK 的旗標(Flags)的封包,建立完整連線。換而言之,就是我們稱的完成三向交握(完成建立溝通連線)

範例: nmap -sT -p- 10.0.2.5,如下圖3所示。

圖3. The results of TCP connection Scan

2. SYN Scan

針對端口傳送TCP SYNSYN+ACK的旗標的封包,但不完成三向交握( Three-way Handshake),如下圖4。

圖4. Don’t complete Three-way Handshake

範例: nmap -sS -p- 10.0.2.5,如下圖5所示。

圖5. The results of SYN Scan

3. UDP Scans

透過UDP Scans找出已開啟或可以連線的UDP類型之端口。

範例: nmap -sU -F 10.0.2.5 -v,如下圖6所示。

圖6. The results of UDP Scans

4. Xmas Scans

Xmas Scans(聖誕節掃描),這是一種同時發送三種(FIN, PSH, URG)Flags包的掃描方式,以透過三種封包掌握端口開啟或關閉的狀態,如下圖7與圖8所示。

TCP Communication 6項 Flags:

  • URG : 高優先級封包,是屬於緊急指標欄位有效
  • ACK : 確認號欄位有效。
  • PSH : 是帶有PUSH標誌的資料,指示接收方應該儘快將這個報文段交給應用層,不需等待緩衝區裝滿才傳送。
  • RST : 出現傳送終非預期的錯誤,故需要重新建立TCP連接。同時可用於拒絕非法連結與拒絕連接請求。
  • SYN : 這是連接請求接受連線請求,用於建立訊號傳送連接同步化。
  • FIN : 傳送方沒有資料要傳輸了,要求釋放連接。

(1).當端口是屬於開啟狀態,其會導致掃描結果是"無回應",如圖7所示。

圖7. The port open of Xmas Scans

(2).當端口是屬於關閉狀態,掃描結果會回傳RST封包,如圖8所示。另回傳細部資訊請參閱圖8。

圖8. The port close of Xmas Scans

範例: nmap -sX -p 1-65535 -v 10.0.2.5,如下圖9所示,抓包細節請參閱圖10所示。

圖9. The Results of Xmas Scans
圖10. The Results of Xmas Scans with Wireshark

5. FIN Scans

FIN Scans類似上述提及的Xmas Scans方式,但主要是發送FIN Flags的封包,來掌握端口開啟或關閉的狀態,如下圖11是端口屬於開啟狀態,圖12是端口關閉狀態。

(1).當端口是屬於開啟狀態,其會導致掃描結果是”無回應”,如圖11所示。

圖11. The Port open of FIN Scans

(2).當端口是屬於關閉狀態,掃描結果會回傳RST封包,如圖12所示。

圖12. The Port close of FIN Scans

範例1:目前80port已開始,來測試 nmap -sF -p80 -v 10.0.2.5掃描結果,如下圖13與圖14所示。

圖13. The results of FIN Scans 1
圖14. The results of FIN Scans with Wireshark 1

範例2:目前81port已關閉,來測試 nmap -sF -p81 -v 10.0.2.5掃描結果,如下圖15及圖16所示。

圖15. The results of FIN Scans 2
圖16. The results of FIN Scans with Wireshark 2

6. TCP ACK Scans

傳送ACK Flags的封包來檢查是否有防火牆封鎖端口進出,如果端口回傳"RST"代表是無防火牆的或相關過濾機制,如下圖17與圖18所示。

圖17. The Port close of TCP ACK Scans
圖18. The Port open of TCP ACK Scans

範例:此環境是未安裝防火牆,故用於nmap -sA -p- -v 10.0.2.5掃描來檢測TCP ACK Scans,如下圖19所示。

圖19. The results of TCP ACK Scans

7. IP Protocol Scan

NMAP提供IP Protocol Scan功能用於找出目標端口所執行通訊協定,但前提該端口所預作的協定資訊是有建立於NMAP資料庫。

範例:nmap -sO -p- -v 10.0.2.5掃描來檢測目標主機全部端口的協定,如下圖20所示。

圖20. The Results of IP Protocol Scan

8. Randomize Target Scans

採用NMAP進行網域掃描時候,若是相同單一來源,Firewall或IDS肯定會偵測到,並採用管理人員所制定的規則進行攔截或阻擋,為此採用隨機掃描順序方式可以大幅降低被某些防禦機制偵測到掃描動作。

--randomize-hosts (隨機掃描掃描)

範例:nmap -sS --randomize-host -p-10.0.2.0/24,如下圖21。

圖21. Randomize Target Scans
圖22. The progress of Randomize Target Scans

9. Cloak a scan with decoys (誘餌掩蓋掃描)

有關於第8項提及的Randomize Target Scans(--randomize-hosts 隨機掃描掃描)是針對目標端主機採用非固定順序掃描,但封包的來源端使用是來自相同的輸出源。因此這邊將介紹NMAP提供的"Cloak a scan with decoys",中文又稱為以誘餌掩蓋掃描(好直翻XD),這是一項透過NMAP偽造多個IP進行流量傳輸

Cloak a scan with decoys公式: -D RND:數值

範例: nmap -sS -D RND:100 -p- 10.0.2.5,如下圖23與圖24。

圖23. The results of Cloak a scan with decoys
圖24. The results of Cloak a scan with decoys with wireshark

有關本篇的端口掃描共介紹7項常用指令以及2項利於端口掃描使用的指令(隨機掃描以及偽照IP流量),同時本篇的指令也彙整如下表,供各位讀者參考。

表1 本篇Port Scanning彙整表

後續會再分享版本偵測(Version Detection)、操作系統偵測(Operating System Detection)、NSE腳本實務演練資訊。

NMAP系列相關文章:

  1. 【滲透測試LAB】建立環境 Kali 2021、Metasploitable
  2. 【滲透測試LAB】NMAP Part1,基本指令,基於Kali 2021、Metasploitable環境執行
  3. 【滲透測試LAB】NMAP Part2,主機掃描(Host Discovery)

--

--

Peter Zhang

現任資安顧問,熱衷於資安治理、資安技術研究、Azure雲端安全技術、網路架構自動化、容器服務;曾任軟體業系統分析師,專注於資料庫規劃、API建置、使用者訪談、梳理業務流程、容器部屬與管理;跨國大型製造業資安管理師,專注於資安治理、DLP導入等資安技術應用,期望藉由分享自身學習與工作歷程經驗,讓我們在科技風潮下持續成長!