開源網路掃描工具 Nmap
簡介
Nmap是一個功能強大的開源網路掃描工具,廣泛應用於網路探索和漏洞偵測。它可以快速掃描單個主機或大型網路,幫助用戶識別網路上的可用主機、運行服務(包括應用程式名稱和版本)、作業系統和防火牆。Nmap
以下特色:
網路清查:了解網路中的主機和設備。
服務管理:檢查服務版本以計劃升級。
漏洞偵測:發現潛在的安全漏洞。
監控:監控主機或服務的運行狀態。
免責聲明:
未經網路或設備所有者明確授權,任何人不得以任何形式干擾、入侵或破壞;本工具僅供教育研究與示範用途,不得用於任何非法或未經授權之活動。
安裝方法
Debian/Ubuntu 系統
1 | sudo apt-get update |
Red Hat/CentOS 系統
sudo dnf install nmap
其他作業系統
- 下載源碼壓縮包(例如 nmap-7.97.tar.bz2)從 Nmap 官方網站。
- 解壓並編譯:
1
2
3
4
5bzip2 -cd nmap-7.97.tar.bz2 | tar xvf -
cd nmap-7.97
./configure
make
sudo make install
用法
指令語法
nmap [掃描類型] [選項] {目標}
目標可用單一 IP、主機名稱、網段(CIDR)、範圍...等形式
常用參數
分類名稱 | 常用參數與說明 | 指令範例 | |
---|---|---|---|
1 | 目標指定 | -iL <file> :從檔案匯入目標清單-iR <num> :隨機掃描目標--exclude <host> :排除特定主機 |
nmap -iL targets.txt --exclude 10.0.0.1 |
2 | 主機發現 | -sn :僅 ping
不掃埠-Pn :略過存活檢測-PS/PA/PU :TCP/UDP
Ping 探測-PE :ICMP Echo |
nmap -sn 192.168.1.0/24 nmap -Pn -PS80 scanme.nmap.org |
3 | 掃描技術 | -sS :SYN 掃描-sT :TCP
Connect()-sU :UDP
掃描-sN/sF/sX :隱匿掃描技法 |
nmap -sS -p22,80 192.168.1.1 nmap -sU -p53 target.com |
4 | 埠口設定與順序 | -p <port> :自訂掃描埠-F :快速模式--top-ports <n> :最常見前
n 個埠--exclude-ports :排除埠 |
nmap -p1-1000 target nmap --top-ports 50 target |
5 | 服務與版本偵測 | -sV :偵測版本--version-light :快速--version-all :完整偵測 |
nmap -sV --version-light 192.168.1.1 |
6 | NSE 腳本掃描 | -sC :預設腳本--script=<name> :自訂腳本--script-args :傳參數 |
nmap -sC target.com nmap --script=http-enum target.com |
7 | 作業系統偵測 | -O :啟用 OS
偵測--osscan-limit :限制至有效主機--osscan-guess :強力猜測 |
nmap -O 192.168.1.1 nmap --osscan-guess target.com |
8 | 掃描時間與效能調整 | -T<0-5> :掃描速度(0最慢,5最快)--min/max-rate :封包速率調整--host-timeout :主機超時設定 |
nmap -T4 target.com nmap --host-timeout 3m target.com |
Nmap 參數總整理表格(依功能分類)
分類名稱 | 參數 | 說明 |
---|---|---|
主機發現(Host Discovery) | -sL |
僅列出掃描目標,不執行掃描 |
-sn |
Ping 掃描,僅檢查是否在線 | |
-Pn |
假設主機在線,跳過存活檢測 | |
-PS/PA/PU/PY[portlist] |
TCP SYN、ACK、UDP、SCTP 發現掃描 | |
-PE/PP/PM |
使用 ICMP echo、timestamp、netmask 請求發現 | |
-PO[protocol list] |
IP 協議 Ping 掃描 | |
-n/-R |
不解析 DNS / 一定解析 DNS | |
--dns-servers |
指定 DNS 伺服器 | |
--system-dns |
使用系統 DNS 解析器 | |
--traceroute |
顯示到主機的路徑 | |
掃描技術(Scan Techniques) | -sS |
TCP SYN 掃描(默認) |
-sT |
TCP Connect 掃描 | |
-sA |
TCP ACK 掃描 | |
-sW |
TCP Window 掃描 | |
-sM |
TCP Maimon 掃描 | |
-sU |
UDP 掃描 | |
-sN/sF/sX |
TCP Null、FIN、Xmas 掃描 | |
--scanflags |
自定義 TCP 掃描標誌 | |
-sI |
Idle Zombie 掃描 | |
-sY/sZ |
SCTP INIT / COOKIE 掃描 | |
-sO |
IP 協定掃描 | |
-b |
FTP Bounce 掃描 | |
埠口指定與掃描順序 | -p |
指定要掃描的埠範圍 |
--exclude-ports |
排除指定埠口 | |
-F |
快速掃描常用埠口 | |
-r |
按順序掃描,不隨機化 | |
--top-ports |
掃描最常見前幾名埠口 | |
--port-ratio |
掃描使用率高於指定比例的埠口 | |
服務與版本偵測 | -sV |
探測開放埠的服務與版本資訊 |
--version-intensity |
設定探測強度 (0-9) | |
--version-light |
輕量版本檢測(快速) | |
--version-all |
所有版本檢測(完整) | |
--version-trace |
詳細列出版本掃描活動 | |
腳本掃描(Script Scan) | -sC |
執行預設腳本,等同 --script=default |
--script |
指定 Lua 腳本、目錄或分類 | |
--script-args |
傳遞參數給 NSE 腳本 | |
--script-args-file |
從檔案傳遞腳本參數 | |
--script-trace |
顯示傳送與接收資料 | |
--script-updatedb |
更新腳本資料庫 | |
--script-help |
顯示腳本說明 | |
操作系統偵測 | -O |
啟用 OS 偵測 |
--osscan-limit |
僅對有潛力的目標進行 OS 偵測 | |
--osscan-guess |
更積極猜測 OS | |
掃描速度與效能 | -T<0-5> |
掃描速度模板(0 最慢,5 最快) |
--min/max-hostgroup |
設定並行主機群組大小 | |
--min/max-parallelism |
設定探針並行度 | |
--min/max/initial-rtt-timeout |
設定往返時間 RTT | |
--max-retries |
限制探針重傳次數 | |
--host-timeout |
單一主機超時時間限制 | |
--scan-delay/--max-scan-delay |
控制探針間的延遲 | |
--min-rate/--max-rate |
最小/最大封包傳送速率 | |
防火牆/IDS 規避與偽裝 | -f; --mtu |
封包分片,可指定 MTU |
-D |
使用誘餌主機隱藏來源 | |
-S |
偽造來源 IP 地址 | |
-e |
指定介面裝置掃描 | |
-g/--source-port |
設定來源埠口 | |
--proxies |
經由 HTTP/SOCKS4 代理連線 | |
--data / --data-string |
附加自訂資料(Hex / ASCII) | |
--data-length |
附加隨機資料長度 | |
--ip-options |
設定 IP 標頭選項欄位 | |
--ttl |
IP 封包 TTL 設定值 | |
--spoof-mac |
偽裝 MAC 位址 | |
--badsum |
傳送錯誤校驗和的封包 | |
輸出(Output) | -oN/-oX/-oS/-oG |
分別為普通、XML、Script kiddie、Grepable 輸出 |
-oA |
同時輸出全部主要格式 | |
-v/-vv/-vvv |
增加詳細輸出程度 | |
-d/-dd/-ddd |
增加除錯輸出程度 | |
--reason |
顯示端口狀態原因 | |
--open |
僅顯示開放的端口 | |
--packet-trace |
顯示所有傳輸封包內容 | |
--iflist |
列出介面與路由資訊 | |
--append-output |
附加輸出而非覆蓋 | |
--resume |
從掃描中斷處繼續 | |
--noninteractive |
關閉鍵盤互動功能 | |
--stylesheet |
指定 XSL 樣式表 | |
--webxml |
使用官方 Web 樣式表 | |
--no-stylesheet |
不使用樣式表 | |
其他(Misc) | -6 |
使用 IPv6 掃描 |
-A |
啟用綜合模式(OS/版本/腳本/路由) | |
--datadir |
自訂 Nmap 資料檔路徑 | |
--send-eth / --send-ip |
使用 Ethernet/IP 封包傳送方式 | |
--privileged / --unprivileged |
假設具/不具備完整權限 | |
-V |
顯示版本號 | |
-h |
顯示說明頁面 |
參考資料
- Nmap
- Nmap Doc