# Nmap 網路掃描筆記 ## Nmap 是什麼? Nmap(Network Mapper)是知名的開源網路安全與主機/服務探測工具,功能包括掃描大量主機端口、判斷主機存活、偵測作業系統和服務版本、腳本自動測試等,廣泛用於滲透測試與資安管理。 --- ## 安裝方法 - Ubuntu/Debian:`sudo apt install nmap` - CentOS/Fedora:`sudo yum install nmap` - macOS(Homebrew):`brew install nmap` - 也可至官方下載可攜版:[https://nmap.org/download](https://nmap.org/download) --- ## 常用指令與掃描範例 | 指令範例 | 說明 | | ----------------------------------- | -------------------------------------------------------------------- | | `nmap 192.168.1.100` | 掃描單一主機常見 1000 埠口 | | `nmap -p 80,443,22 192.168.1.100` | 指定掃描 TCP 80,443,22 埠口 | | `nmap -p 1-65535 192.168.1.100` | 掃描全部 TCP 埠口(1~65535) | | `nmap -sS 192.168.1.100` | TCP SYN(半連線)快速隱密掃描 | | `nmap -sT 192.168.1.100` | TCP connect(三向握手)普通/易被記錄 | | `nmap -sU -p 53,123 192.168.1.100` | 掃描目標 UDP 埠,如 DNS (53)、NTP (123) | | `nmap -O 192.168.1.100` | 作業系統偵測(需 root) | | `nmap -sV 192.168.1.100` | 偵測服務和版本 | | `nmap -T4 192.168.1.x` | 加快掃描速度,適合穩定網路環境 | | `nmap -A 192.168.1.100` | 全面偵測(OS+版本+腳本+追蹤等) | | `nmap -oN result.txt ...` | 掃描結果輸出為純文字 | | `nmap -oX result.xml ...` | 掃描結果輸出為 XML | --- ## 掃描速度與效能參數 - `-T0 ~ -T5`:掃描時間範本(推薦 `-T4`,兼顧速度與品質) - T0/T1:慢、隱蔽 - T3:預設 - T4:積極建議值 - T5:極快但準度差 --- ## 端口(Port)狀態詳細解釋 | 狀態 | 說明 | |----------------|----------------------------------------------------------------------------------------| | open | 端口開啟,有服務在監聽(SYN/ACK 回應) | | closed | 端口沒程式監聽(RST 回應),但主機存活 | | filtered | 無法確定開關,沒回應或被防火牆過濾,Nmap 會多次重試 | | unfiltered | 端口回應但無法確定狀態,典型於 ACK 掃描 | | open|filtered | 無法判斷是開啟還是過濾,通常 udp、FIN、Xmas、Null 等特定掃描會出現 | | closed|filtered| 無回應,無法判斷關閉還是被過濾,常見於 idle 掃描 | --- ## TCP 掃描技術比較 | 參數 | 技術 | 詳細說明 | | ------ | ----------------------- | --------------------------------------------------------------------------------------- | | -sS | TCP SYN(半開掃描) | 只送 SYN,若收到 SYN/ACK 表示開啟,RST 表關閉,不完成三向交握(較隱密、預設 root 執行) | | -sT | TCP Connect(三向握手) | 建立完整連線較易被防火牆/日誌察覺,適合無 root 權限 | | -sU | UDP 掃描 | 送空 UDP 封包,收不到 ICMP/port unreachable 就當開啟。UDP 無連線、慢且不準確 | | -sF/-sX/-sN| Stealth 掃描 | 用 FIN、Xmas、Null 等封包偵測,有些情境可偽裝或繞過防火牆 | --- ## 常見掃描情境與技巧 1. **快速掃描主機** `nmap -T4 192.168.0.1` 2. **列舉服務細節** `nmap -sV -T4 192.168.0.1` 3. **存活主機偵測(網路 ping 掃描)** `nmap -sn 192.168.1.0/24` 4. **全部端口完整掃描** `nmap -p 1-65535 -T4 -sT 192.168.0.1` 5. **跳過 ping,直接掃描** `nmap -Pn 192.168.0.1` 6. **整合 TCP/UDP 掃描作 OS Fingerprinting** `sudo nmap -sS -sU -O 192.168.1.100` 7. **防火牆下端口掃描** - 白名單防火牆:阻擋未納入清單端口,要加 `-Pn` - 黑名單防火牆:預設允許,僅特定端口 filtered --- ## 服務版本與 Banner 探測(-sV) 啟用 `-sV` 會自動對每個已開啟端口送出特定封包(來自 nmap-service-probes 資料庫),判斷詳細的軟體服務與版本。例如可獲取 apache、openssh、ftp、ms-wbt-server 等的版本及 banner。 - 查詢深度由 `--version-intensity` 決定,0 最快只查常見服務,9 最深入可能較慢,一般預設值即可。 - 適合滲透測試與脆弱性檢查。 --- ## Nmap 與防火牆的互動 - Nmap 會先對主機常見端口發 SYN/ACK,若不回應或直接丟棄,Nmap 會認為 filtered。 - 有些只開部分端口(白名單或黑名單規則),nmap 掃描狀態會有很大差異,須妥善規劃命令參數。 --- ## 掃描結果輸出 - 純文字:`nmap -oN result.txt ...` - XML 格式:`nmap -oX result.xml ...` - GREP格式:`nmap -oG result.grep ...` ---