Nmap介紹 (1)
Tags: Cybersecurity
Intro
本篇介紹Nmap這個強大的滲透測試工具,常見的功能有:
- Live Host Discovery(在線主機搜索)
- Port Scan (端口搜索)
- Firewall Detection (測試目標主機防火牆設置) 在使用Nmap時,通常是先利用在線主機搜索,得出所有在線主機;然後再利用端口搜索去進一步搜尋開放的端口及端口上運行的服務。通過這樣的實現才不會在離線主機上進行不必要的端口搜索浪費時間。另外關於測試目標主機防火牆設置是通過幾種巧妙的方式來檢測目標主機是否有防火牆設置,這後面會提到,算是Nmap工具功能的延伸。
Host Discovery using ARP
nmap -PR -sn TARGET
- -sn 的意思是不要做端口掃描,因為目前只想要做在線主機搜索
- -PR 是告訴nmap使用ARP scan。同時請注意使用 -PR 需要有root權限(原因是ARP屬於Data Link Layer,需要自己構造raw packet。而這一步因為系統安全考慮需要有root權限)
- 另外這種在線主機查詢的方法只適用於在同一個Subnet中才有效果(原因也很簡單,因為ARP packet只會在同一個Subnet中廣播,沒辦法透過Router傳遞到其他的Subnet,所以這種策略只適用於目標主機段與你處於同一個Subnet)
- 但如果你指定了 -sn 的情況下與目標主機段處於不同個 Subnet 的話,nmap 會自動將查詢策略轉為使用混合策略:
- ICMP echo requests,
- TCP ACK to port 80,
- TCP SYN to port 443,
- ICMP timestamp request.
- 例子:
sudo nmap -PR -sn 10.10.210.1/24
Host Discovery using ICMP
nmap -PE -sn TARGET
nmap -PP -sn TARGET
nmap -PM -sn TARGET
- 這三種利用ICMP的檢測方式皆不需要root權限,因為ICMP不需要動到raw packet(ICMP基於IP層)
- 這三種策略都可以支持自己與目標主機段處於不同 Subnet,因為ICMP協議是基於IP協議之上(將整個IP packet包裝為payload),所以可以將這些ICMP packet傳送到不同 Subnet 來查詢
- -PE 是告訴nmap使用 ICMP Echo Request
- -PP 是告訴nmap使用 ICMP Timestamp Request
- -PM 是告訴nmap使用 ICMP Address Mask Request
- 例子:
sudo nmap -PE -sn 10.10.210.1/24
sudo nmap -PP -sn 10.10.210.1/24
sudo nmap -PM -sn 10.10.210.1/24
Host Discovery using TCP
nmap -PS -sn TARGET
nmap -PA -sn TARGET
nmap -PU -sn TARGET
- 這三種利用TCP/UDP的檢測方式皆不需要root權限,因為它們也不需要動到raw packet(TCP/UDP基於IP層)
- 這三種策略都可以支持自己與目標主機段處於不同 Subnet,因為TCP/UDP協議是基於IP協議之上(將整個IP packet包裝為payload),所以可以將這些TCP/UDP packet傳送到不同 Subnet 來查詢
- -PS 是告訴nmap傳送 TCP SYN,等待 TCP SYN-ACK,並傳回 TCP ACK
- -PA 是告訴nmap傳送 TCP ACK,並等待 TCP RST (因為target主機會覺得很奇怪,明明都沒有建立tcp連接就收到ACK,所以直接傳回一個RST來回絕這個ACK)
- -PU 是告訴nmap傳送 UDP packet
- 關於 -PU 我們必須要知道,由於UDP是無狀態的協議(代表說即使目標主機接收到我們傳送的UDP packet,也不會有回覆),因此我們判斷的條件要與TCP/ICMP反著來。也就是說,TCP/ICMP大多是由接收到回覆包來判斷目標主機是否在線;而UDP則是藉由接收到回覆包來知道目標主機離線。因此在 -PU 這種策略下,若是接收到回覆的話有兩種可能:
- ICMP(3,3) Port Unreachable: 代表目標主機可能在線,只不過端口關閉
- ICMP(3,1) Host Unreachable: 代表目標主機離線
- 最後,如果在timeout過後沒有收到回覆,就代表說目標主機有可能在線
- 例子:
sudo nmap -PS -sn 10.10.210.1/24
sudo nmap -PA -sn 10.10.210.1/24
sudo nmap -PU -sn 10.10.210.1/24
學習資料
- TryHackMe CompTIA Pentest+ / Information Gathering and Vulnerability Scanning / Nmap Live Host Discovery
- Nmap Host Discovery