【滲透測試LAB】NMAP Part2,主機掃描(Host Discovery)
在開始說明本次要提及的”主機掃描”前,將針對NMAP功能架構說明,以利建立一個系統性的學習。
NMAP四項基本功能:
- 主機發現(Host Discovery)-本篇要說明的
- 端口掃描(Port Scanning)
- 版本偵測(Version Detection)
- 操作系統偵測(Operating System Detection)
一般而言,滲透測試人員使用NMAP執行步驟,如下圖1所示,同時也會加入相關腳本,但這邊暫不納入腳本範疇進此圖,因為涵蓋範圍甚廣。
1.需要進行主機發現(Host Discovery)以了解主機是否存在或正常運行。
2.執行端口掃描(Port Scanning),以獲取端口運作狀況。
3.會針對已知的主機與端口上以運行的應用程式與版本進行偵測,進而獲取相關軟體相關資訊。
4.再針對主機上的操作系統(作業系統)(Operating System, OS)執行偵測。
基於上述四項基本功能外,NMAP也提供防火牆與IDS(Intrusion Detection System, 入侵檢測系統)的規避技巧,如先前基本指令的第一篇提及的調整掃描速度,可以綜合應用到四個基本功能的各個階段,以強化整體掃描的正確性。同時NMAP提供NSE(Nmap Scripting Language)腳本功能,可擴展滲透時的便利性與完整性,畢竟在執行滲透測試過程中,不會僅執行少數的指令或單一流程。
本篇練習環境如下圖2所示,目標端Mestaploitable IP :10.0.2.5;WIN10 IP:10.0.2.15。
基礎知識複習
(1)TCP/IP Communication (中文可稱TCP連接導向)
在說明主機掃描前,將特別複習三向交握或三向握手(Three-way Handshake)原理以及TCP flags,如下圖3、圖3、圖4所示,而這邊僅提供簡略TCP Flags相關說明,並無帶入數值說明。
一般而言,正常建立連結均是透過Three-way Handshake完成通訊,如下圖2。對NMAP掃描也是運用TCP/IP的通訊原理進行掃描,並採用位元碼來執行不同的掃描方式。
TCP Communication Flags是指,TCP/IP 傳輸通訊協定的 TCP 層級是以連接為導向。 連線導向的方式均需在,傳輸任何資料前,必須先取得並確認可靠的連線。 因此,TCP 層級的資料傳輸、連接建立及連線終止,皆會透過控制參數(位元碼)來運作,如下圖所示。這6項控制參數(位元碼)說明如下:
- URG : 高優先級封包,是屬於緊急指標欄位有效。
- ACK : 確認號欄位有效。
- PSH : 是帶有PUSH標誌的資料,指示接收方應該儘快將這個報文段交給應用層,不需等待緩衝區裝滿才傳送。
- RST : 出現傳送終非預期的錯誤,故需要重新建立TCP連接。同時可用於拒絕非法連結與拒絕連接請求。
- SYN : 這是連接請求或接受連線請求,用於建立訊號傳送連接同步化。
- FIN : 傳送方沒有資料要傳輸了,要求釋放連接。
綜上六種控制傳遞狀態的位元碼,如下圖4、圖5所示為實際於TCP Flags位置,因為要讓讀者明確了解Code的所在區域,才採用兩張相似圖片說明。
正文開始
使用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。
2. TCP SYN Ping Scan
若傳送SYN至目標端後,有收到對方回覆的ACK封包,代表對方主機是已在運行的,故NMAP會於回覆封包時,以RST TCP FLAGS來告知對方結束通訊,亦代表未完成三向交握的過程,如下圖8所示,進而降低被防火牆或監測系統發現。
範例:nmap -PS IP,結果如下圖9、圖10。
備註: -sn指令可以自由選擇是否要加入。
3. TCP ACK Ping Scan
向目標端發送TCP ACK封包,若目標端主機回復RST封包,代表目標端主機已運行的。
範例:nmap -PA IP,結果如下圖11。
4. IP Protocol Ping Scan
向目標端發送封包中建立了特定的IP標頭,用於探索使用相同服務協定的主機目標,或是用於不支援讀取 ICMP protocol主機,其結果皆代表目標端主機是有在運行的。
範例:nmap -PO IP,結果如下圖12、圖13。
備註: -sn指令可以自由選擇是否要加入
5. UDP ping scan(UDP掃描)
範例:nmap -PU IP,結果如下圖14。
6. 利用-v了解NMAP掃描過程細節
"-v"這項指令能協助對於尚未熟習NMAP運用或對於網路通訊協定不熟的人,可以更加瞭解NMAP在掃描時的流程與運作內容。
下方以NMAP來掃描目標IP:10.0.2.15,並透過兩種方式,讓讀者可以更明確了解。
範例1: nmap -PS 指令 IP,圖15是我們先前最常看到的掃瞄結果畫面。
範例2: nmap -PS 指令 IP -v,下圖16是有加入-v指令後所顯示的掃描結果畫面,可以發現從初始掃描執行的ARP、DNS解析,至TCP SYN Ping Scan的所有執行過程細節。
綜上所述,為本篇 Host Discovery Scan 的資訊分享,本篇指令也彙整至下表,供讀者查閱。
後續將會分享端口掃描(Port Scanning)、版本偵測(Version Detection)、操作系統偵測(Operating System Detection)、NSE腳本實務演練。