開源網路掃描工具 Nmap

簡介

Nmap是一個功能強大的開源網路掃描工具,廣泛應用於網路探索和漏洞偵測。它可以快速掃描單個主機或大型網路,幫助用戶識別網路上的可用主機、運行服務(包括應用程式名稱和版本)、作業系統和防火牆。Nmap 以下特色:
網路清查:了解網路中的主機和設備。
服務管理:檢查服務版本以計劃升級。
漏洞偵測:發現潛在的安全漏洞。
監控:監控主機或服務的運行狀態。

免責聲明:
未經網路或設備所有者明確授權,任何人不得以任何形式干擾、入侵或破壞;本工具僅供教育研究與示範用途,不得用於任何非法或未經授權之活動。

安裝方法

Debian/Ubuntu 系統

1
2
sudo apt-get update
sudo apt-get install nmap

Red Hat/CentOS 系統

sudo dnf install nmap

其他作業系統

  1. 下載源碼壓縮包(例如 nmap-7.97.tar.bz2)從 Nmap 官方網站。
  2. 解壓並編譯:
    1
    2
    3
    4
    5
    bzip2 -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 顯示說明頁面

參考資料

  1. Nmap
  2. Nmap Doc