Nmap 是個強大又靈活的網路掃描工具,無論是系統管理員、滲透測試人員,還是對網路安全有興趣的朋友,Nmap 都是一把非常好用的瑞士刀。

這篇文章會簡單介紹 Nmap 的安裝方式、常用指令、幾種掃描模式的差異,以及幾個實際應用的例子。如果你是剛接觸 Nmap 的新手,希望這份懶人包能幫助你快速上手!

🔧 安裝方式

最簡單的方式是直接到官網下載:https://nmap.org/download

如果你使用的是 Linux 或 macOS,也可以透過套件管理工具安裝,例如:

  • Ubuntu / Debian:

    sudo apt install nmap
    
  • CentOS / Fedora:

    sudo yum install nmap
    
  • macOS (使用 Homebrew):

    brew install nmap
    

🚀 Nmap 指令懶人包

這邊整理了一些常見又實用的 Nmap 指令,適合平常快速查 IP、掃端口、看主機系統等。

指令說明
nmap {ip}掃描單一 IP
nmap {ip1} {ip2}同時掃描多個 IP
nmap {ip_range}掃描整個 IP 範圍(CIDR)
nmap -p {port} {ip}掃描指定的端口
nmap -sSTCP SYN 掃描(快速)
nmap -sTTCP connect 掃描(完整連線)
nmap -sUUDP 掃描
nmap -O作業系統偵測
nmap -sOIP 協議掃描
nmap -PS使用 SYN Ping 掃描
nmap -sL列出目標列表,不進行掃描
nmap -vv顯示更詳細的輸出

⚔️ 掃描模式比較:sS、sT、sU、sO、PS 有什麼不同?

在用 Nmap 掃描的時候,可能會看到像 -sS-sT 這些參數。這些是不同的掃描技術,根據你的需求與環境,可以選擇適合的方式。

-sS:TCP SYN 掃描(隱密又快速 🔍)

這是最常用也最推薦的掃描方式。Nmap 會發出 TCP SYN 封包(就像在敲門),如果對方回傳 SYN/ACK,就表示端口是開的。如果回 RST,則代表關閉。

優點是 速度快、較不易被偵測,因為它不會完成完整的三路握手。

-sT:TCP connect 掃描(比較笨但可靠 🐢)

這種掃描方式會真的建立一個 TCP 連線(三路握手),然後馬上斷開。

由於這是系統層級的真正連線,比較容易被防火牆或入侵偵測系統(IDS)記錄到,但在某些權限受限的環境下(例如不能發送原始封包)會用到它。

-sU:UDP 掃描(慢但必要 💧)

UDP 沒有像 TCP 那樣的連線確認機制,Nmap 只能靠發封包後的「沉默」或 ICMP 回應來猜測端口狀態。

這讓 UDP 掃描變得特別慢且難判斷準確性,但如果你要找 DNS(53)、NTP(123)等服務,那就非用不可了。

-PS:TCP SYN Ping 掃描(輕量版偵測 🧭)

這個不是全面的端口掃描,而是拿 SYN 封包來確認哪些主機「活著」並且有開某些端口。

比 ICMP Ping 更靈活,而且常能避過禁用 ICMP 的防火牆。

-sO:IP 協議掃描(比較冷門但有用 🧪)

如果你想知道一台主機支援哪些 IP 層協議(例如 ICMP、IGMP、ESP…),可以用 -sO

這通常用在更進階的網路分析或偵錯場景。

🛠 常見實戰範例

這邊舉幾個常見又實用的指令範例,幫助你快速套用在實務上。

✅ 掃描單台主機常見 TCP 端口

nmap -sS -p 1-1024 192.168.1.100

這會對 192.168.1.100 做 TCP SYN 掃描,檢查 1–1024 的知名端口。

✅ 掃描多台主機的指定端口

nmap -p 22,80,443 192.168.1.100 192.168.1.101 192.168.1.102

很適合快速比對不同主機的 Web 或 SSH 開放情況。

✅ UDP 掃描 DNS、DHCP、NTP 等服務

nmap -sU -p 53,67,123 192.168.1.100

這個範例掃描目標主機的 UDP 端口是否有提供 DNS、DHCP、NTP 等服務。

✅ 掃整個網段找活著的主機與常見端口

nmap -sP -p 22,80 192.168.1.0/24

針對整個網段掃描,快速找出哪些機器活著、哪些有開 SSH 或 Web。

✅ 綜合掃描 TCP、UDP 與作業系統

nmap -sS -sU -O 1.1.1.1

這是一個比較全面的掃描組合,針對常見 TCP / UDP 端口做偵測,並試著推測作業系統類型,通常只會掃描 1000 個常見端口,結果如下:

Starting Nmap 7.94 ( https://nmap.org ) at 2024-05-07 16:08 CST
Nmap scan report for one.one.one.one (1.1.1.1)
Host is up (0.0075s latency).
Not shown: 998 open|filtered udp ports (no-response), 993 filtered tcp ports (no-response)
PORT      STATE  SERVICE
53/tcp    open   domain
80/tcp    open   http
113/tcp   closed ident
443/tcp   open   https
8008/tcp  open   http
8080/tcp  open   http-proxy
8443/tcp  open   https-alt
53/udp    open   domain
33459/udp closed unknown
Device type: general purpose|firewall|media device|WAP
Running (JUST GUESSING): Linux 3.X|2.6.X (89%), IPCop 2.X (86%), Tiandy embedded (86%), HP embedded (85%)
OS CPE: cpe:/o:linux:linux_kernel:3.18 cpe:/o:linux:linux_kernel:3.4 cpe:/o:ipcop:ipcop:2 cpe:/h:hp:msm410 cpe:/o:linux:linux_kernel:2.6.32
Aggressive OS guesses: Linux 3.18 (89%), IPCop 2 firewall (Linux 3.4) (86%), Tiandy NVR (86%), HP MSM410 WAP (85%), Linux 2.6.32 (85%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 8 hops

🔗 參考連結:https://nmap.org/book/man.html