---
# System prepended metadata

title: Nmap 網路掃描筆記

---

# 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 ...`
---