【滲透測試LAB】NMAP Part2,主機掃描(Host Discovery)

Peter Zhang
8 min readSep 1, 2021

在開始說明本次要提及的”主機掃描”前,將針對NMAP功能架構說明,以利建立一個系統性的學習。

先前第一篇NMAP基本操作指令,可以請參考這篇~

NMAP四項基本功能:

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

一般而言,滲透測試人員使用NMAP執行步驟,如下圖1所示,同時也會加入相關腳本,但這邊暫不納入腳本範疇進此圖,因為涵蓋範圍甚廣

1.需要進行主機發現(Host Discovery)以了解主機是否存在或正常運行。

2.執行端口掃描(Port Scanning),以獲取端口運作狀況。

3.會針對已知的主機與端口上以運行的應用程式與版本進行偵測,進而獲取相關軟體相關資訊。

4.再針對主機上的操作系統(作業系統)(Operating System, OS)執行偵測。

圖1. NMAP掃描流程簡化流程圖

基於上述四項基本功能外,NMAP也提供防火牆與IDS(Intrusion Detection System, 入侵檢測系統)的規避技巧,如先前基本指令的第一篇提及的調整掃描速度,可以綜合應用到四個基本功能的各個階段,以強化整體掃描的正確性。同時NMAP提供NSE(Nmap Scripting Language)腳本功能,可擴展滲透時的便利性與完整性,畢竟在執行滲透測試過程中,不會僅執行少數的指令或單一流程。

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

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

基礎知識複習

(1)TCP/IP Communication (中文可稱TCP連接導向)

在說明主機掃描前,將特別複習三向交握三向握手(Three-way Handshake)原理以及TCP flags,如下圖3、圖3、圖4所示,而這邊僅提供簡略TCP Flags相關說明,並無帶入數值說明。

一般而言,正常建立連結均是透過Three-way Handshake完成通訊,如下圖2。對NMAP掃描也是運用TCP/IP的通訊原理進行掃描,並採用位元碼來執行不同的掃描方式。

圖3. Three-way Handshake

TCP Communication Flags是指,TCP/IP 傳輸通訊協定的 TCP 層級是以連接為導向。 連線導向的方式均需在,傳輸任何資料前,必須先取得並確認可靠的連線。 因此,TCP 層級的資料傳輸、連接建立及連線終止,皆會透過控制參數(位元碼)來運作,如下圖所示。這6項控制參數(位元碼)說明如下:

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

綜上六種控制傳遞狀態的位元碼,如下圖4、圖5所示為實際於TCP Flags位置,因為要讓讀者明確了解Code的所在區域,才採用兩張相似圖片說明。

圖4. TCP Flags 1圖片參考連結
圖5. TCP Flags位元碼的位置

正文開始

使用NMAP執行主機掃描(Host Discovery)掃描

1. ARP掃描 (ARP ping scan)

ARP ping scan功能特別說明3點:

(1)NMAP針對目標端網路執行掃描前,一定會優先執行ARP查詢,因為所有裝置通訊前一定會經過位址解析協定Address Resolution Protocol, ARP)過程,這是固定的流程。而執行位址解析(address resolution)就是主機在傳送前,會將目標IP位址轉換成目標MAC位址的過程。

(2)當傳送主機目的主機不在同一個區域網路中時,即便知道對方的MAC位址,兩者也不能直接通訊,故此必定會經路由轉發才可以。所以ARP ping scan僅能用於目標端與本地相同的子網路!!

(3)透過ARP ping scan主要能協助網路或系統管理人員,可以透過該項指令即時掌握該網路中已運行中的設備,若使用ZENMAP的,可進一步自動產製出網路拓譜圖。

範例:nmap -Pn IP,結果如下圖6、圖7

額外補充:NMAP舊版本的ARP掃描指令是-P0 及 -PN。

圖6. -Pn掃描結果1
圖7. -Pn掃描結果2

2. TCP SYN Ping Scan

若傳送SYN至目標端後,有收到對方回覆的ACK封包,代表對方主機是已在運行的,故NMAP會於回覆封包時,以RST TCP FLAGS來告知對方結束通訊,亦代表未完成三向交握的過程,如下圖8所示,進而降低被防火牆或監測系統發現。

圖8. 未完成三向交握的過程示意圖

範例:nmap -PS IP,結果如下圖9、圖10

備註: -sn指令可以自由選擇是否要加入。

圖9. SYN Ping掃描結果
圖10. 根據監測結果,也有顯示回傳遞RST封包進行結束通訊

3. TCP ACK Ping Scan

向目標端發送TCP ACK封包,若目標端主機回復RST封包,代表目標端主機已運行的。

範例:nmap -PA IP,結果如下圖11

圖11. ACK Ping掃描結果

4. IP Protocol Ping Scan

向目標端發送封包中建立了特定的IP標頭,用於探索使用相同服務協定的主機目標,或是用於不支援讀取 ICMP protocol主機其結果皆代表目標端主機是有在運行的。

範例:nmap -PO IP,結果如下圖12、圖13

備註: -sn指令可以自由選擇是否要加入

圖12. 執行IP Protocol Ping Scan結果
圖13.透過Wireshark抓取IP Protocol Ping Scan過程傳遞資訊

5. UDP ping scan(UDP掃描)

範例:nmap -PU IP,結果如下圖14

圖14. 執行UDP掃描結果

6. 利用-v了解NMAP掃描過程細節

"-v"這項指令能協助對於尚未熟習NMAP運用或對於網路通訊協定不熟的人,可以更加瞭解NMAP在掃描時的流程與運作內容。

下方以NMAP來掃描目標IP:10.0.2.15,並透過兩種方式,讓讀者可以更明確了解。

範例1: nmap -PS 指令 IP,圖15是我們先前最常看到的掃瞄結果畫面。

圖15.

範例2: nmap -PS 指令 IP -v,下圖16是有加入-v指令後所顯示的掃描結果畫面,可以發現從初始掃描執行的ARP、DNS解析,至TCP SYN Ping Scan的所有執行過程細節。

圖16.

綜上所述,為本篇 Host Discovery Scan 的資訊分享,本篇指令也彙整至下表,供讀者查閱。

表1

後續將會分享端口掃描(Port Scanning)、版本偵測(Version Detection)、操作系統偵測(Operating System Detection)、NSE腳本實務演練。

NMAP系列相關文章:

  1. 【滲透測試LAB】建立環境 Kali 2021、Metasploitable
  2. 【滲透測試LAB】NMAP Part1,基本指令,基於Kali 2021、Metasploitable環境執行

--

--

Peter Zhang

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