iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
Security

跨出第一步:D 從0到0.1的Web security 系列 第 22

Day 21: Nmap基礎介紹

  • 分享至 

  • xImage
  •  

今天我們來談談網路安全與系統管理領域中,如同偵察兵一般不可或缺的傳奇工具——Nmap

如果你把網路滲透測試比作一場軍事行動,那麼 Nmap 就是你派出的第一位、也是最得力的偵察兵。在發動任何攻擊之前,你必須先用它來繪製出目標戰場的詳細地圖。


什麼是 Nmap?

Nmap 的全名是 Network Mapper (網路對應器),它是一款開源、免費且功能極其強大的網路掃描工具。它被網路管理員、滲透測試工程師、資安研究人員等廣泛使用,用於:

  • 探索 (Discover):找出網路上有哪些主機是存活的。
  • 盤點 (Inventory):列出這些主機上開放了哪些通訊埠 (Ports)。
  • 識別 (Identify):偵測這些開放的埠口上正在運行什麼服務及其軟體版本。
  • 分析 (Analyze):推斷主機運行的作業系統類型。
  • 檢測 (Detect):透過其強大的指令碼引擎 (NSE) 尋找已知的安全漏洞。

簡單來說,Nmap 的核心工作就是向目標主機發送精心製作的網路封包,然後分析其回應,從而「描繪」出目標的輪廓和特徵。


Nmap 的五大核心功能

Nmap 的強大之處在於它將多種偵測技術整合在一個工具中。

1. 主機探索 (Host Discovery)

這是掃描的第一步:確認目標是否「活著」。

  • 目的:在對大量主機進行掃描前,先快速篩選出那些在線上且有回應的主機,避免浪費時間在無效的目標上。
  • 常用指令nmap -sn <target> (Ping Scan)
  • 運作方式:Nmap 會發送 ICMP echo 請求 (就像 ping 指令)、TCP SYN/ACK 封包等多種探針,來判斷主機是否在線上。

2. 連接埠掃描 (Port Scanning)

這是 Nmap 最核心、最著名的功能。如果說主機是一棟房子,那麼連接埠就是這棟房子上的門窗。

  • 目的:找出目標主機上哪些「門窗」(0 - 65535 的 TCP/UDP 埠口)是開著的。
  • 常用指令與類型
    • nmap -sS <target> (TCP SYN Scan / Stealth Scan):預設且最受歡迎的掃描方式。它只發送 TCP 連線的第一個封包 (SYN),如果收到 SYN/ACK 表示埠口開放,收到 RST 則表示關閉。因為沒有完成完整的三向交握,所以比較隱蔽且快速。
    • nmap -sT <target> (TCP Connect Scan):執行完整的三向交握。比較不隱蔽,容易被記錄下來,但適用於執行掃描的使用者沒有 root/administrator 權限的場景。
    • nmap -sU <target> (UDP Scan):掃描 UDP 埠口,速度較慢且較不穩定。

3. 服務與版本偵測 (Service and Version Detection)

知道了哪些門是開的還不夠,你還需要知道門後面是什麼。

  • 目的:精準識別在開放埠口上運行的應用程式名稱與其確切的版本號。這對於尋找特定版本的漏洞至關重要。
  • 常用指令nmap -sV <target>
  • 運作方式:Nmap 會連線到開放的埠口,並發送一系列的探測封包,分析服務的回應(例如 Banner 資訊)來比對其龐大的服務特徵資料庫。

4. 作業系統偵測 (Operating System Detection)

  • 目的:根據目標主機對特定 TCP/IP 封包的回應特徵(TCP/IP 堆疊指紋),來推斷其運行的作業系統類型與版本(例如 Windows 10, Linux Kernel 5.x)。
  • 常用指令nmap -O <target>
  • 運作方式:Nmap 發送一系列特殊構造的封包,並分析目標系統在回應這些封包時的細微差異,例如 TCP 初始序列號 (ISN) 的取樣、IP 標頭的選項等。

5. Nmap 指令碼引擎 (NSE - Nmap Scripting Engine)

這是讓 Nmap 從一個掃描器進化為多功能安全工具的超級武器

  • 目的:利用 Lua 語言編寫的指令碼,將 Nmap 的功能無限擴展,執行更複雜的任務。
  • 常用指令
    • nmap -sC <target>:執行預設的、被認為是安全且有用的指令碼。
    • nmap --script=<script-name> <target>:執行指定的指令碼。
  • NSE 能做什麼
    • 漏洞偵測:檢查是否存在特定的漏洞(如 smb-vuln-ms17-010)。
    • 進階偵察:爬取網站標題 (http-title)、抓取網頁。
    • 暴力破解:對 FTP, SSH, Telnet 等服務進行簡單的密碼猜解。

實際操作:從基礎到進階的常用指令

假設目標 IP 為 192.168.1.101

  • 僅確認主機是否存活

    nmap -sn 192.168.1.101
    
  • 快速掃描預設的 1000 個 TCP 埠口

    nmap 192.168.1.101
    
  • 掃描所有 65535 個 TCP 埠口,並進行服務與版本偵測 (常用)

    nmap -sV -p- 192.168.1.101
    

    (-p- 代表掃描所有埠口 1-65535)

  • 進行一次「侵略性」掃描 (Aggressive Scan)

    nmap -A 192.168.1.101
    

    這是一個非常方便的複合指令,它等同於同時啟用 OS 偵測 (-O)版本偵測 (-sV)預設指令碼掃描 (-sC)Traceroute。雖然掃描行為較為高調,但能一次性獲取大量資訊。


如何解讀掃描結果

Nmap 會告訴你每個埠口的狀態,最常見的三種是:

  • OPEN:埠口是開放的,並且有應用程式正在監聽。這是攻擊者最感興趣的目標。
  • CLOSED:埠口是關閉的,沒有應用程式在監聽。主機有回應,明確告訴你此路不通。
  • FILTERED:Nmap 無法確定埠口是開放還是關閉,因為有防火牆、過濾規則等設備阻擋了 Nmap 的探測封包。這通常意味著目標有一定的防護。

使用 Nmap 的注意事項

合法性與道德:Nmap 是一個強大的工具,但也是一把雙面刃。絕對不要在未經明確授權的情況下,對任何不屬於你的網路或系統進行掃描。未經授權的掃描行為在許多國家和地區都是非法的。

圖形化介面 - Zenmap

對於不習慣命令列介面的使用者,Nmap 官方也提供了一個名為 Zenmap 的圖形化前端工具,讓你可以透過點擊按鈕來執行掃描並以視覺化的方式查看結果。

Nmap 是網路世界中的「基礎設施普查工具」。無論你是要保護自己的網路(藍隊),還是要評估目標的防禦(紅隊),第一步都是要先有一張精準的地圖。而 Nmap,就是繪製這張地圖最權威、最可靠的工具。


上一篇
Day 20: 駭客的瑞士刀:Burp Suite 基礎介紹
下一篇
Day 22: Metaspolit基礎介紹
系列文
跨出第一步:D 從0到0.1的Web security 23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言