- Network Scanning (網路掃描) – 列出目標網路上活躍的主機IP位址。
- Port Scanning (埠掃描) – 列出目標主機的開放埠和服務。
- Vulnerability Scanning (弱點掃描) – 列出目標主機上存在的已知漏洞
Network Scanning using Nmap
即Host Discovery, 主機探測, 也稱爲ping sweep, 當處於一個陌生網路時, 掃描的第一件工作就是判定哪些IP位址上有主機存在。
使用 -sn option
不僅發送 ICMP 回應請求(Echo Request), Nmap 還會向port 443 發送 TCP SYN 封包, 向port 80 發送 TCP ACK 封包, 並發送 ICMP 時間戳記請求來驗證主機是否存在。
$
nmap -sn 192.168.217.1-253
使用 -oG option
將掃描結果存成檔。
$
nmap -v -sn 192.168.217.1-253 -oG ping-sweep.txt
使用grep
和cut
調整輸出結果, 過濾出只有Up的主機IP位址
$
grep Up ping-sweep.txt | cut -d " " -f 2

加起來一起用
$
nmap -sn 192.168.217.* -oG - | grep Up | cut -d " " -f 2 > ip.list
使用 -p option
掃描指定port。
$
nmap -p 80 192.168.217.1-253 -oG http.list
使用 --open option
只列出open port
$
nmap 192.168.159.* -p 25 --open
使用 -A option
啟動OS版本探測, service版本探測, script scanning, traceroute
$
sudo nmap -sT -A 172.31.0.1

加上 --top-ports=20
掃描Top20 TCP port。
Nmap Top TCP ports定義的檔案在
/usr/share/nmap/nmap-services
$
nmap -sT -A --top-ports=20 192.168.217.1-253 -oG tp20.list
使用 -O option
啟動OS版本探測
使用 --osscan-guess
顯示猜測結果
$
sudo nmap -O 192.168.50.14 --osscan-guess
Port scan using Netcat
執行掃描時需注意例如PortSentry之類的工具會干擾若阻擋埠口掃描。另外例如SYN-cookies的防火牆功能也會讓埠口實際為關閉時卻呈現出看似開啟的狀態。
測試目標主機port是否開啟:nc [-options] hostname port[s] [ports] ...
$
nc -nvv -w 1 -z 192.168.101.191 20-23
-n numeric-only IP addresses, no DNS
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
-v參數對於不同版本出來的結果有些不同
Ubuntu



Kali



也可以進入listen mode, 開啟指定埠口接受連線
nc -l -p port [-options] [hostname] [port]
$
sudo nc -v -l -p 20

- 開啟listen mode, 例如開啟port 20
- 目標主機port 20連線成功
- 顯示連線主機的IP位址和埠
Port scan using Nmap
SYN Scan, aka “Stealth Scan” (Half-Open Scan)
這是比較常用的Nmap掃描技術, 也稱為「隱形掃描」, 也是Nmap預設的掃描選項。SYN Scan是一種 TCP port掃描方法, 透過向目標機器的各個port發送 SYN 封包來進行, 不完成 TCP 三向交握(the three-way handshake)是其特點。如果 TCP port open, 目標機器會回傳 SYN-ACK, 告訴我們該port open, 此時,nmap不會發送最後的 ACK 來完成三向交握。
由於三向交握不會完成,所以不會傳遞到應用層,也所以不會出現在任何application的log中。SYN Scan快速且高效, 因為其傳輸和接收的封包更少。
使用 -sS option
$
sudo nmap -sS 192.168.217.149
TCP Connect Scan
顧名思義, TCP Connect Scan就是會執行完整的TCP連線(會完成三向交握), 也因為會完成三向交握, 所以掃描時間會比SYN Scan久, 主要使用時機為:
- 沒有特權帳號, 使用TCP Connect Scan不需要sudo
- 掃描會經過一些特定的proxy
使用 -sT option
$
nmap -sT 192.168.217.149
UDP Scan
在執行 UDP 掃描時, 因為不使用像TCP三向交握的過程, 所以比TCP Scan更具挑戰性(誤判機會比較高), 且速度很慢。Nmap 會使用兩種不同方法的組合來判斷port是否開啟。
- 大部分的Port使用: The standard “ICMP port unreachable” method
- 特定服務Port使用: Protocol-specific packet
使用 -sU option
在OSCP+的lab環境, 這個會掃很久很久, 要耐心等候
$
sudo nmap -sU 192.168.217.149
也可以和TCP SYN Scan一起服用
$
sudo nmap -sU -sS 192.168.217.149