Nmap 簡介
Nmap(Network Mapper)是一款開源的網路探索和安全稽核工具。它被設計用來快速掃描大型網路,但也能用於單一主機的掃描。Nmap 使用原始 IP 封包來判斷網路上有哪些主機可用、這些主機提供什麼服務(應用程式名稱和版本)、它們執行什麼作業系統(以及作業系統版本)、使用什麼類型的封包過濾器/防火牆,以及其他特徵。
主要功能
- 主機發現:識別網路上的活動主機
- 連接埠掃描:列舉目標主機上開放的連接埠
- 版本偵測:判斷遠端裝置上執行的應用程式名稱和版本號碼
- 作業系統偵測:判斷目標的作業系統和硬體特徵
- 腳本掃描:使用 Nmap 腳本引擎(NSE)進行更進階的偵測
安裝 Nmap
Linux(Debian/Ubuntu)
1
2
| sudo apt update
sudo apt install nmap
|
Linux(CentOS/RHEL)
macOS
Windows
從 Nmap 官方網站 下載安裝程式,執行安裝精靈即可。
驗證安裝
基本掃描指令
掃描單一主機
掃描多個主機
1
| nmap 192.168.1.1 192.168.1.2 192.168.1.3
|
掃描 IP 範圍
掃描子網路
掃描主機名稱
從檔案讀取目標清單
排除特定主機
1
| nmap 192.168.1.0/24 --exclude 192.168.1.1
|
常用掃描類型
TCP SYN 掃描(半開放掃描)
這是最常用的掃描類型,也是預設的掃描方式。它不會完成 TCP 三向交握,因此相對隱蔽。
1
| sudo nmap -sS 192.168.1.1
|
TCP Connect 掃描
完整的 TCP 連線掃描,不需要 root 權限。
UDP 掃描
掃描 UDP 連接埠,速度較慢但對於發現 DNS、SNMP 等服務很重要。
1
| sudo nmap -sU 192.168.1.1
|
Ping 掃描(主機發現)
只進行主機發現,不進行連接埠掃描。
1
| nmap -sn 192.168.1.0/24
|
版本偵測
偵測服務的版本資訊。
作業系統偵測
嘗試識別目標的作業系統。
1
| sudo nmap -O 192.168.1.1
|
積極掃描
啟用作業系統偵測、版本偵測、腳本掃描和路由追蹤。
1
| sudo nmap -A 192.168.1.1
|
連接埠選項
掃描特定連接埠
1
2
| nmap -p 80 192.168.1.1
nmap -p 80,443,8080 192.168.1.1
|
掃描連接埠範圍
1
| nmap -p 1-1000 192.168.1.1
|
掃描所有連接埠
快速掃描(常用連接埠)
掃描最常用的 N 個連接埠
1
| nmap --top-ports 100 192.168.1.1
|
輸出格式
標準輸出
儲存為一般文字檔
1
| nmap -oN scan_result.txt 192.168.1.1
|
儲存為 XML 格式
1
| nmap -oX scan_result.xml 192.168.1.1
|
儲存為 Grepable 格式
1
| nmap -oG scan_result.gnmap 192.168.1.1
|
同時儲存所有格式
1
| nmap -oA scan_result 192.168.1.1
|
時間與效能選項
Nmap 提供時間範本來控制掃描速度:
| 選項 | 名稱 | 說明 |
|---|
-T0 | Paranoid | 極慢,用於 IDS 規避 |
-T1 | Sneaky | 較慢,用於 IDS 規避 |
-T2 | Polite | 降低速度以減少頻寬和目標資源使用 |
-T3 | Normal | 預設模式 |
-T4 | Aggressive | 假設網路快速可靠,加速掃描 |
-T5 | Insane | 極快,可能犧牲準確性 |
Nmap 腳本引擎(NSE)
NSE 允許使用者撰寫腳本來自動化各種網路任務。
執行預設腳本
執行特定腳本
1
| nmap --script=http-title 192.168.1.1
|
執行多個腳本
1
| nmap --script=http-title,http-headers 192.168.1.1
|
執行腳本類別
1
| nmap --script=vuln 192.168.1.1
|
常用腳本類別:
auth:認證相關腳本default:預設腳本discovery:發現相關腳本vuln:弱點掃描腳本safe:安全腳本(不會造成服務中斷)
實用範例
範例 1:快速掃描網路中的活動主機
1
| nmap -sn -T4 192.168.1.0/24
|
範例 2:掃描 Web 伺服器常用連接埠
1
| nmap -p 80,443,8080,8443 -sV 192.168.1.1
|
範例 3:完整的滲透測試初始掃描
1
| sudo nmap -sS -sV -sC -O -T4 -p- 192.168.1.1 -oA full_scan
|
範例 4:掃描並檢查弱點
1
| nmap --script=vuln 192.168.1.1
|
範例 5:隱蔽掃描(規避 IDS)
1
| sudo nmap -sS -T2 -f --data-length 24 192.168.1.1
|
參數說明:
-f:分割封包--data-length 24:附加隨機資料
範例 6:掃描防火牆後的主機
1
| sudo nmap -Pn -sS 192.168.1.1
|
-Pn 選項會跳過主機發現,直接進行連接埠掃描。
注意事項
取得授權:在進行任何掃描之前,請確保您已獲得目標系統擁有者的書面授權。未經授權的掃描可能違反法律。
避免影響服務:某些掃描類型(特別是使用 -T5 或積極的腳本)可能會對目標系統造成負載,請謹慎使用。
記錄掃描:建議將掃描結果儲存下來,以便日後分析和報告使用。
了解輸出:學會解讀 Nmap 的輸出結果,包括連接埠狀態(open、closed、filtered)的含義。
連接埠狀態說明
| 狀態 | 說明 |
|---|
open | 連接埠正在接受連線 |
closed | 連接埠可存取但沒有應用程式監聽 |
filtered | Nmap 無法判斷連接埠是否開放(可能被防火牆過濾) |
unfiltered | 連接埠可存取,但無法判斷是開放還是關閉 |
| `open | filtered` |
| `closed | filtered` |
參考資源
總結
Nmap 是資訊安全專業人員和網路管理員的必備工具。透過本文介紹的基本指令和技巧,您應該能夠開始使用 Nmap 進行網路探索和安全評估。隨著經驗的累積,您可以進一步探索更進階的功能,如自訂 NSE 腳本和複雜的掃描策略。
記住,負責任地使用這些工具,並始終在獲得適當授權的情況下進行掃描。