1. Network Scanning (網路掃描) – 列出目標網路上活躍的主機IP位址。
  2. Port Scanning (埠掃描) – 列出目標主機的開放埠和服務。
  3. 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

使用grepcut調整輸出結果, 過濾出只有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
  1. 開啟listen mode, 例如開啟port 20
  2. 目標主機port 20連線成功
  3. 顯示連線主機的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久, 主要使用時機為:

  1. 沒有特權帳號, 使用TCP Connect Scan不需要sudo
  2. 掃描會經過一些特定的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

Similar Posts