Nmap
Nmap(網絡映射器)是一款用於網絡發現和安全審計的網絡安全工具,在其首次發布後的前幾年之間是 GPL 自由軟件,但最近版本的 nmap 是否是 FOSS 自由軟件還存在許多質疑和爭議。[4] [5] 軟件名字Nmap是Network Mapper的簡稱。通常情況下,Nmap用於:
- 列舉網絡主機清單
- 管理服務升級調度
- 監控主機
- 服務運行狀況
原作者 | Gordon Lyon (Fyodor) |
---|---|
首次發布 | 1997年9月 |
當前版本 | 7.92(2021年8月7日 | )
源代碼庫 | |
編程語言 | C, C++, Python, Lua |
操作系統 | 跨平台 |
語言 | 英語 |
類型 | 計算機安全,網絡管理 |
許可協議 | NPSL [1] 或 被修改過的 GPLv2 [2] 或 專有軟件 [3] |
網站 | nmap.org |
Nmap可以檢測目標主機是否在線、端口開放情況、偵測運行的服務類型及版本信息、偵測操作系統與設備類型等信息。 它是網絡管理員必用的軟件之一,用以評估網絡系統安全。
Nmap 是不少黑客及腳本小子愛用的工具 。系統管理員可以利用Nmap來探測工作環境中未經批准使用的服務器,黑客通常會利用Nmap來搜集目標電腦的網絡設定,從而計劃攻擊的方法。
Nmap通常用在信息搜集階段,用於搜集目標機主機的基本狀態信息。掃描結果可以作為漏洞掃描、漏洞利用和權限提升階段的輸入。例如,業界流行的漏洞掃描工具Nessus與漏洞利用工具Metasploit都支持導入Nmap的XML格式結果,而Metasploit框架內也集成了Nmap工具(支持Metasploit直接掃描)。
Nmap不僅可以用於掃描單個主機,也可以適用於掃描大規模的計算機網絡(例如,掃描英特網上數萬台計算機,從中找出感興趣的主機和服務)。
Nmap 核心功能
主機發現
用於發現目標主機是否處於活動狀態。
Nmap 提供了多種檢測機制,可以更有效地辨識主機。例如可用來列舉目標網絡中哪些主機已經開啟,類似於Ping命令的功能。
端口掃描
用於掃描主機上的端口狀態。
Nmap可以將端口識別為開放(Open)、關閉(Closed)、過濾(Filtered)、未過濾(Unfiltered)、開放或過濾(Open|Filtered)、關閉或過濾(Closed|Filtered)。默認情況下,Nmap會掃描1660個常用的端口[6],可以覆蓋大多數基本應用情況。
版本偵測
用於識別端口上運行的應用程序與程序版本。
Nmap目前可以識別數千種應用的簽名(Signatures),檢測數百種應用協議。而對於不識別的應用,Nmap默認會將應用的指紋(Fingerprint)打印出來,如果用戶確知該應用程序,那麼用戶可以將信息提交到社區,為社區做貢獻。
操作系統偵測
用於識別目標主機的操作系統類型、版本編號及設備類型。
Nmap目前提供1500個操作系統或設備的指紋數據庫[7],可以識別通用PC系統、路由器、交換機等設備類型。
防火牆/IDS規避和哄騙
Nmap提供多種機制來規避防火牆、IDS的的屏蔽和檢查,便於秘密地探查目標主機的狀況。
基本的規避方式包括:封包分片、IP誘騙、IP偽裝、MAC地址偽裝。
NSE腳本引擎
NSE是Nmap最強大最靈活的特性之一,可以用於增強主機發現、端口掃描、版本偵測和操作系統偵測等功能,還可以用來擴展高級的功能如web掃描、漏洞發現和漏洞利用等。Nmap使用Lua語言來作為NSE腳本語言,目前的Nmap腳本庫已經支持350多個腳本。
Nmap基本命令和典型用法
- Nmap 基本指令
nmap [ <掃描類型> ...] [ <選項> ] { <掃描目標說明> }
- 全方位掃描(包括Host Discovery、端口掃描、端口服務版本掃描、OS類型掃描及預設腳本掃描):
nmap -A target_ip
- Ping掃描:
nmap -sn target_ip
- 快速端口掃描(前100個常用端口):
nmap -F target_ip
- 版本掃描:
nmap -sV target_ip
- 作業系統類型掃描:
nmap -O target_ip
- 運行標記為safe的nse script
nmap -sC target_ip
- 運行完整tcp握手掃描(雖然nmap預設使用tcp半開放掃描,即選項-sS。但卻容易被今日大多資安廠商入侵偵測系統發現,因此使用「完整握手掃描-sT」還比「隱形掃描-sS」來得更隱匿)
nmap -sT target_ip
- 發送碎片封包,躲避ids偵測和繞過防火牆(8-bytes為單位),但實際上碎片封包特徵過於明顯,不建議於實際紅隊攻擊中使用
nmap -f target_ip
- 使用同網段上閒置主機(zombie_host)作為跳板掃描
nmap -sI zombie_host:zombie_port target_ip
- 使用大量虛假的源地址,混淆被掃描方日後鑑識、分析的能力,即誘餌掃描
nmap -D ip1,ip2,ip3,... target_ip
或
nmap -D RND:10 target_ip (隨機產生10組ipv4掩護)
其他
Nmap 常被跟評估系統漏洞軟件Nessus混為一談。Nmap 以隱祕的手法,避開入侵檢測系統的監視,並儘可能不影響目標系統的日常操作。
Nmap 在電影《黑客帝國》中,連同SSH1的32位元迴圈冗餘校驗漏洞,被崔妮蒂用以入侵發電站的能源管理系統。
參見
外部連結
參考資料
- ^ Nmap Public Source License. [2021-12-15]. (原始內容存檔於2023-02-16).
- ^ Nmap license. [2019-01-21]. (原始內容存檔於2018-07-20).
- ^ Did nmap just become non-free?. [2023-02-16]. (原始內容存檔於2022-05-11).
- ^ NPSL License Improvements · Issue #2199 · nmap/nmap · GitHub. [2023-02-16]. (原始內容存檔於2023-02-16).
- ^ 因為nmap 開發者將其軟件的許可證更改為 NPSL(Nmap Public Source License),這個 NPSL 是 nmap 開發者自己寫出的許可證文件,其內容源自於 GPLv2 但是增加了一些額外的具有爭議性的限制條款)。一些 "注重自由軟件的許可證問題" 的 GNU/Linux 發行版已經將 nmap 移出其包管理存儲庫 或者是將其固定在最後一個使用原版 GPLv2 許可證的版本(例如 Debian apt 存儲庫里的 nmap 就是因為NPSL許可證問題 所以一直停留在最後一個符合dfsg的版本上)。
- ^ 端口扫描基础. [2016-05-09]. (原始內容存檔於2016-06-04).
- ^ 操作系统探测. [2016-05-09]. (原始內容存檔於2016-06-04).