Nmap是什么? (What is Nmap?)
你好,未來的網(wǎng)絡安全探索者! 歡迎來到 Nmap 的世界。
想象一下,你是一名城市規(guī)劃師,在規(guī)劃一座新城市之前,你需要了解這片土地的每一寸細節(jié):哪里有河流,哪里有山丘,哪里已經(jīng)有了建筑。Nmap (NetworkMapper) 就是你在數(shù)字世界中的“勘探工具”,它可以幫助你發(fā)現(xiàn)網(wǎng)絡上的設備,以及這些設備上開放了哪些“大門”(也就是端口)。
Nmap 的主要用途包括:
? 主機發(fā)現(xiàn) (Host Discovery): 找出網(wǎng)絡上有哪些活躍的設備,比如電腦、服務器、路由器、甚至智能冰箱!
? 端口掃描 (Port Scanning): 識別目標設備上哪些網(wǎng)絡端口是開放的。端口就像是設備上的不同服務窗口,比如 80 端口通常是網(wǎng)頁服務,22 端口通常是遠程登錄服務。
? 服務與版本探測 (Service and Version Detection): 找出在開放端口上運行的具體網(wǎng)絡服務是什么,以及它們的軟件版本。這很重要,因為某些特定版本的軟件可能存在已知的安全漏洞。
? 操作系統(tǒng)探測 (Operating System Detection): 嘗試識別目標設備的操作系統(tǒng)類型和版本。
? 漏洞掃描 (Vulnerability Scanning): 通過 Nmap 腳本引擎 (NSE),Nmap 還可以執(zhí)行一些基本的漏洞掃描,幫助發(fā)現(xiàn)潛在的安全風險。
為什么學習 Nmap?它為什么這么重要?
Nmap 是網(wǎng)絡安全領域中最基礎、最強大的工具之一。無論你是想成為一名滲透測試工程師 (Penetration Tester)、安全分析師 (Security Analyst),還是僅僅想更好地了解你自己的網(wǎng)絡環(huán)境,Nmap 都是必備技能。
? 對于防御者 (Blue Team): Nmap 可以幫助你了解自己網(wǎng)絡的暴露面,及時發(fā)現(xiàn)未經(jīng)授權的設備或開放了不必要端口的服務,從而加固防線。
? 對于攻擊者/測試者 (Red Team/Penetration Testers): Nmap 是信息收集階段的核心工具,幫助他們繪制目標網(wǎng)絡的拓撲結構,找到潛在的攻擊入口。
Nmap 的合法和道德使用準則
這是一個非常非常重要的話題!Nmap 本身是一個中立的工具,就像一把錘子,你可以用它來蓋房子,也可以用它來搞破壞。 我們必須強調:未經(jīng)授權掃描他人網(wǎng)絡是非法且不道德的!
請牢記:始終在獲得明確授權的情況下使用 Nmap。 我們學習 Nmap 是為了更好地保護網(wǎng)絡,而不是去侵犯他人。
小成就解鎖: 你已經(jīng)了解了 Nmap 的基本概念和重要性!這是成為網(wǎng)絡安全高手的第一步!
安裝與初識 Nmap (Installation and First Look)
現(xiàn)在我們已經(jīng)知道了 Nmap 是什么以及它的重要性,是時候親自動手,把這個強大的工具安裝到我們的電腦上了!別擔心,安裝過程通常很簡單。
Nmap 支持多種操作系統(tǒng)。下面我們分別介紹在 Windows、Linux 和 macOS上的安裝方法。你可以根據(jù)自己的操作系統(tǒng)選擇相應的指南。
操作系統(tǒng)安裝指南
操作系統(tǒng) | 安裝方法 |
Windows | 訪問 Nmap 官方網(wǎng)站的下載頁面 (https://nmap.org/download.html)。找到最新的穩(wěn)定版 Windows 安裝程序 (通常是一個.exe文件,例如nmap-x.yy-setup.exe)。下載并運行該程序,按照安裝向導的提示完成安裝。安裝過程中,請確保勾選了 “Nmap core files” 和 “Command-line Nmap executable”。 |
Linux |
大多數(shù) Linux 發(fā)行版都可以通過包管理器輕松安裝 Nmap。 -Debian/Ubuntu (及衍生版):打開終端,輸入命令sudo apt update && sudo apt install nmap -Fedora/CentOS/RHEL (及衍生版):打開終端,輸入命令sudo dnf install nmap(較新版本) 或sudo yum install nmap(較老版本) |
macOS |
方法一 (推薦): 使用 Homebrew 。如果你安裝了 Homebrew (macOS 的一個流行包管理器),打開終端,輸入命令brew install nmap。 方法二: 官方安裝包。訪問 Nmap 官方網(wǎng)站的下載頁面,下載適用于 macOS 的.dmg安裝包。雙擊打開.dmg文件,然后運行其中的安裝程序。 |
小提示 :安裝完成后,可以打開你的命令行終端 (Windows 上是cmd或PowerShell,Linux 和 macOS 上是Terminal),輸入nmap -V(注意 V 是大寫) 并按回車。如果安裝成功,你會看到 Nmap 的版本信息。
Nmap 的基本命令行界面
Nmap 主要通過命令行來操作。這意味著你需要打開終端,然后輸入nmap命令,后面跟著一些參數(shù)和目標地址。
基本的命令格式看起來像這樣:
nmap [掃描類型...] [選項...] {目標規(guī)范}
別被這個嚇到!我們后面會一步步學習各種掃描類型和選項的含義。
第一次掃描:nmap scanme.nmap.org示例與結果解讀
激動人心的時刻到了!讓我們進行第一次 Nmap 掃描。Nmap 的開發(fā)者提供了一個專門用于測試掃描的網(wǎng)站:scanme.nmap.org。掃描這個網(wǎng)站是完全合法的。
打開你的終端,輸入以下命令并按回車:
`nmap scanme.nmap.org`
請注意:第一次運行掃描可能需要一點時間,因為它需要下載一些必要的數(shù)據(jù)文件。請耐心等待。
掃描完成后,你會看到類似下面的輸出 (具體結果可能會因 Nmap 版本和網(wǎng)絡狀況略有不同):
Starting Nmap X.YY ( https://nmap.org ) at YYYY-MM-DD HH:MM ZZZ Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.12s latency). Not shown: 995 closed tcp ports (conn-refused) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 9929/tcp open nping-echo 31337/tcp open Elite Nmap done: 1 IP address (1 host up) scanned in X.XX seconds plaintext
讓我們來解讀一下這些信息:
?Starting Nmap X.YY ...: 顯示你正在使用的 Nmap 版本和啟動時間。
?Nmap scan report for scanme.nmap.org (45.33.32.156): 表明這是針對scanme.nmap.org(其 IP 地址是45.33.32.156) 的掃描報告。
?Host is up (0.12s latency).: 表示目標主機是活躍的 (在線),并且網(wǎng)絡延遲大約是 0.12 秒。
?Not shown: 995 closed tcp ports (conn-refused): Nmap 默認會掃描最常見的 1000 個 TCP 端口。這里告訴我們,有 995 個被掃描的 TCP 端口是關閉的 (狀態(tài)是conn-refused,意味著連接被拒絕)。
?核心部分來了!下面列出的是開放的端口及其服務:
?22/tcp open ssh: 端口 22 是開放的 (open),運行的是ssh(Secure Shell) 服務。
?80/tcp open http: 端口 80 是開放的,運行的是http(Hypertext Transfer Protocol) 服務,也就是我們常說的 Web 服務。
?9929/tcp open nping-echo: 端口 9929 是開放的,運行的是nping-echo服務 (Nmap 項目的一個工具)。
?31337/tcp open Elite: 端口 31337 是開放的,被標記為Elite(這是一個歷史悠久的黑客文化端口)。
?Nmap done: 1 IP address (1 host up) scanned in X.XX seconds: 掃描完成,總共掃描了 1 個 IP 地址,發(fā)現(xiàn) 1 個主機是活躍的,耗時 X.XX 秒。
小成就解鎖:你成功安裝了 Nmap 并完成了你的第一次網(wǎng)絡掃描!是不是很有成就感?
通過這次簡單的掃描,我們就發(fā)現(xiàn)scanme.nmap.org這個服務器對外開放了 SSH、HTTP 等服務。這些信息對于了解一個網(wǎng)絡系統(tǒng)至關重要。
在接下來的章節(jié)中,我們將學習如何更精確地指定掃描目標,以及探索 Nmap 更多強大的掃描功能。
指定掃描目標 (Specifying Targets)
在上一節(jié)中,我們對scanme.nmap.org進行了一次掃描。但在實際應用中,你需要告訴 Nmap 具體要掃描哪些設備。Nmap 提供了多種靈活的方式來指定掃描目標。
想象一下,你是一名偵察兵,你需要精確地知道你的偵察范圍。同樣,在使用 Nmap 時,明確目標至關重要。
以下是一些常用的指定目標的方法:
指定方式 | 示例命令 | 說明 |
單個 IP 地址 | nmap 192.168.1.1 | 直接指定一個 IPv4 地址進行掃描。這是最直接的方式。 |
主機名 | nmap example.com | 你也可以使用主機名。Nmap 會自動解析該主機名對應的 IP 地址進行掃描。 |
IP 地址范圍 (CIDR) | nmap 192.168.1.0/24 | 使用 CIDR (Classless Inter-Domain Routing) 表示法指定一個網(wǎng)段。例如,/24表示掃描從192.168.1.0到192.168.1.255的所有 256 個 IP 地址。這是掃描整個子網(wǎng)的常用方法。 |
IP 地址范圍 (八位字節(jié)) | nmap 192.168.1.100-150 | 指定 IP 地址的最后一個八位字節(jié)的范圍。這個例子會掃描從192.168.1.100到192.168.1.150的 IP 地址。 |
nmap 192.168.1,2,3.1-10 | 你甚至可以指定多個八位字節(jié)的范圍或列表。這個例子會掃描192.168.1.1到192.168.1.10,192.168.2.1到192.168.2.10,以及192.168.3.1到192.168.3.10。 | |
從文件中讀取目標 | nmap -iL targets.txt | 使用-iL(Input from List) 參數(shù),Nmap 會從指定的文件 (targets.txt) 中讀取目標列表。文件中的每一行可以是一個 IP 地址、主機名或范圍。這對于掃描大量目標非常方便。 |
排除特定目標 | nmap 192.168.1.0/24 --exclude 192.168.1.5 | 使用--exclude參數(shù)可以從掃描范圍中排除一個或多個 IP 地址。 |
nmap 192.168.1.0/24 --excludefile exclude.txt | 也可以使用--excludefile參數(shù),從一個文件中讀取要排除的目標列表。 |
生活化比喻:
?單個 IP 地址:就像給快遞員一個精確的門牌號碼,例如“幸福路 8 號”。
?主機名:就像告訴出租車司機要去“市中心廣場”,司機會知道具體的地址。
?IP 地址范圍 (CIDR):就像告訴郵遞員派送整個“陽光小區(qū)”的信件。
?從文件中讀取目標:就像你有一張客戶名單,需要挨個拜訪。
?排除特定目標:就像在派對邀請函上注明“除了小明都可以來”。
重要提示:再次強調,務必確保你擁有掃描目標的明確授權!未經(jīng)許可掃描他人網(wǎng)絡是違法的。
思考題 :
1. 如果你想掃描你家路由器(假設 IP 地址是192.168.0.1)和你的筆記本電腦(假設 IP 地址是192.168.0.101),你會使用什么 Nmap 命令?
2. 如果你們公司有一個網(wǎng)段是10.0.0.0/24,但其中10.0.0.50是一臺非常敏感的服務器,不希望被掃描到,你會如何設置 Nmap 命令?
小成就解鎖:你現(xiàn)在知道如何告訴 Nmap 要掃描誰了!這是進行有效網(wǎng)絡探測的關鍵一步。
掌握了如何指定目標后,我們下一步將學習 Nmap 如何發(fā)現(xiàn)這些目標是否真的“活著”(在線)——也就是主機發(fā)現(xiàn)技術。
主機發(fā)現(xiàn) (Host Discovery - Ping Scans)
在我們開始對目標進行詳細的端口掃描之前,通常需要先確認哪些目標主機是“活著的”,也就是在線并且可以響應網(wǎng)絡請求。這個過程就叫做主機發(fā)現(xiàn) (Host Discovery),有時也被稱為Ping 掃描 (Ping Scan)。
為什么主機發(fā)現(xiàn)很重要?
想象一下,你要給一個城市的所有住戶送信,但你事先不知道哪些房子是空置的。如果你挨家挨戶地敲門(進行端口掃描),會浪費大量時間在那些根本沒人的空房子上。主機發(fā)現(xiàn)就像是先派無人機偵察一下,看看哪些房子亮著燈,然后再針對性地去送信。
默認情況下,當你指定一個目標給 Nmap 時(例如nmap target.com),Nmap 會先進行主機發(fā)現(xiàn)。如果主機被認為是離線的,Nmap 通常就不會再對其進行端口掃描了,這樣可以大大提高掃描效率,尤其是在掃描大范圍網(wǎng)段時。
常用的主機發(fā)現(xiàn)技術
Nmap 使用多種技術來判斷主機是否在線。這些技術就像是偵察兵的不同工具,各有特點:
?ICMP Echo Request (Ping):這是最常見的方式,就像我們平時在命令行里用ping命令一樣。Nmap 發(fā)送一個 ICMP Echo 請求包到目標主機,如果收到 Echo 回復,就認為主機在線。
?TCP SYN Ping:Nmap 向目標主機的特定端口(默認是 80 端口,HTTP 服務)發(fā)送一個 TCP SYN 包(請求建立連接的第一個包)。如果收到 SYN/ACK 包(表示端口開放并同意建立連接)或 RST 包(表示端口關閉但主機在線),都認為主機在線。
?TCP ACK Ping:Nmap 向目標主機的特定端口(默認是 80 端口)發(fā)送一個 TCP ACK 包(確認包)。如果收到 RST 包,通常意味著主機在線,因為只有在線的主機才會響應一個它未曾期望的 ACK 包。
?UDP Ping:Nmap 向目標主機的特定高位 UDP 端口發(fā)送一個空的 UDP 包。如果收到 ICMP Port Unreachable 錯誤,說明主機在線但該 UDP 端口關閉。如果沒有任何響應,也可能意味著主機在線(因為 UDP 是無連接的,不保證響應)。
?ARP Ping (僅限局域網(wǎng)):當 Nmap 掃描與你處于同一個局域網(wǎng) (LAN) 內的目標時,它會使用 ARP (Address Resolution Protocol) 請求來發(fā)現(xiàn)主機。ARP 請求直接在鏈路層工作,非??焖俸涂煽?。如果目標主機回復了 ARP 響應,Nmap 就知道它在線了。
-sn(Ping Scan - No port scan) 參數(shù)詳解
如果你只想進行主機發(fā)現(xiàn),而不進行后續(xù)的端口掃描,可以使用-sn參數(shù) (可以記作 “Scan No ports” 或者 “Skip port scan”)。
例如,要發(fā)現(xiàn)192.168.1.0/24網(wǎng)段中哪些主機在線,但不掃描它們的端口,可以使用:
`nmap -sn 192.168.1.0/24`
這個命令會列出所有響應了 Nmap 主機發(fā)現(xiàn)探測的主機,并報告它們的狀態(tài) (Host is up)。
更多主機發(fā)現(xiàn)選項 (Ping Types)
Nmap 允許你更精細地控制使用哪些主機發(fā)現(xiàn)技術。以下是一些常用的選項:
選項 | 技術說明 | 示例命令 |
-PE | ICMP Echo Ping (默認選項之一,如果 Nmap 有權限發(fā)送原始套接字) | nmap -PE target.com |
-PP | ICMP Timestamp Ping (發(fā)送時間戳請求) | nmap -PP target.com |
-PM | ICMP Address Mask Ping (發(fā)送地址掩碼請求) | nmap -PM target.com |
-PS[portlist] | TCP SYN Ping ??梢灾付ǘ丝诹斜?,例如-PS22,80,443。默認是端口 80。 | nmap -PS80,443 scanme.nmap.org |
-PA[portlist] | TCP ACK Ping ??梢灾付ǘ丝诹斜?,默認是端口 80。 | nmap -PA21,22 192.168.1.1 |
-PU[portlist] | UDP Ping ??梢灾付ǘ丝诹斜?,默認是端口 40125。 | nmap -PU53 192.168.1.1 |
-PR | ARP Ping (僅限局域網(wǎng),通常是默認行為,如果 Nmap 檢測到目標在本地網(wǎng)絡) | nmap -PR 192.168.1.0/24 |
-Pn | No Ping - Treat all hosts as online. 這個選項會跳過主機發(fā)現(xiàn)階段,直接對所有指定的目標進行端口掃描,即使它們可能并不在線。謹慎使用,因為它可能會對大量離線主機進行耗時的端口掃描。在你知道目標肯定在線,但它們可能屏蔽了 Ping 請求時比較有用。 | nmap -Pn scanme.nmap.org |
小提示 :
? 在掃描本地網(wǎng)絡時,ARP Ping (-PR) 通常是最快和最可靠的主機發(fā)現(xiàn)方法。
? 如果目標網(wǎng)絡有防火墻,它們可能會阻止某些類型的 Ping 請求。這時你可能需要嘗試不同的 Ping 類型 (-PS,-PA,-PU等) 或者使用-Pn(但要小心)。
小成就解鎖:你現(xiàn)在理解了主機發(fā)現(xiàn)的原理和常用方法!這能幫助你更高效地進行網(wǎng)絡掃描。
思考題 :
1. 如果你想快速檢查你家局域網(wǎng) (192.168.0.0/24) 中有哪些設備在線,你會使用哪個 Nmap 命令?為什么?
2. 你正在對一個已知的 Web 服務器進行安全評估,你知道它肯定在線,但它似乎屏蔽了所有 ICMP Ping 請求。為了掃描它的端口,你會使用哪個 Nmap 參數(shù)來確保 Nmap 不會因為 Ping 不通而跳過它?
了解了如何發(fā)現(xiàn)活躍主機后,我們就可以開始探索這些主機上到底開放了哪些“大門”了。下一節(jié),我們將進入端口掃描的世界!
教程的第六部分:服務與版本探測 (Service and Version Detection)。
6. 服務與版本探測 (Service and Version Detection)
僅僅知道端口是開放的還不夠,更重要的是了解這些端口上究竟運行著什么服務以及它們的具體版本。這就像我們不僅知道一扇門開著,還想知道門后是客廳、臥室還是廚房,以及里面的電器是什么品牌和型號。這些信息對于評估潛在的安全風險至關重要,因為很多漏洞都是特定于軟件的某個版本的。
Nmap通過向開放端口發(fā)送一系列精心構造的探測報文,并分析返回的數(shù)據(jù)來識別服務和版本信息。這個過程有點像一位經(jīng)驗豐富的偵探,通過詢問和觀察來判斷一個人的職業(yè)和背景。
6.1 為什么服務與版本探測如此重要?
?精確識別服務:標準的端口號并不總是可靠。例如,一個Web服務器可能運行在80端口,但也可能運行在8080或其他非標準端口。服務探測可以幫助我們確認端口上運行的真實服務,而不是僅僅依賴于端口號的約定。
?發(fā)現(xiàn)潛在漏洞:知道了服務的具體版本,我們就可以查詢該版本是否存在已知的安全漏洞。例如,如果發(fā)現(xiàn)目標運行著一個過時的Apache Web服務器版本,那么它可能容易受到某些已知漏洞的攻擊。
?制定后續(xù)滲透策略:版本信息可以幫助我們選擇更具針對性的攻擊載荷或利用工具。
6.2 如何進行服務與版本探測?
Nmap中使用-sV選項來啟用服務與版本探測。這個選項會告訴Nmap在完成端口掃描后,對所有識別出的開放端口進行更深入的探測。
基本命令格式:
nmap -sV
示例:
讓我們嘗試對scanme.nmap.org進行服務與版本探測:
`nmap -sV scanme.nmap.org`
預期輸出解讀:
您會看到類似以下的輸出(具體版本號可能會有所不同):
Starting Nmap X.XX ( https://nmap.org ) at YYYY-MM-DD HH:MM ZZZ Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.18s latency). Not shown: 995 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0) 25/tcp open smtp Postfix smtpd 80/tcp open http Apache httpd 2.4.7 ((Ubuntu)) 9929/tcp open nping-echo Nping echo 31337/tcp open Elite ? Service Info: OS: Linux; CPE: cpe:/olinux_kernel Nmap done: 1 IP address (1 host up) scanned in XX.XX seconds
關鍵信息解讀:
?VERSION列:這是-sV選項的核心價值所在。它顯示了Nmap識別出的運行在對應端口上的服務的具體名稱和版本號。
? 例如,在22/tcp端口,我們看到OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13,這告訴我們目標運行的是OpenSSH服務,版本為6.6.1p1,并且是Ubuntu系統(tǒng)上的一個特定構建版本。
? 在80/tcp端口,我們看到Apache httpd 2.4.7 ((Ubuntu)),表明這是一個Apache Web服務器,版本為2.4.7,運行在Ubuntu上。
? 有時,如果Nmap無法精確識別版本,或者服務比較特殊,版本列可能會顯示?或者一些描述性信息,如31337/tcp open Elite ?。
?SERVICE列:顯示了Nmap根據(jù)端口號和探測結果初步判斷的服務類型。
?Service Info行:有時Nmap還會提供一些額外的服務相關信息,比如操作系統(tǒng)類型(OS: Linux)和通用平臺枚舉(CPE)標識符(cpe:/olinux_kernel)。CPE是一種標準化的命名方式,用于唯一標識IT平臺和產(chǎn)品,這對于自動化漏洞管理非常有用。
6.3 服務探測的強度與精細控制
Nmap的服務探測功能非常強大,但也可能比較耗時,因為它需要與每個開放端口進行多次交互。
?--version-intensity
例如,進行一次輕量級的版本掃描:
nmap -sV --version-light
?--version-light(強度2)
?--version-all(強度9)
?--version-trace:如果您想了解Nmap是如何進行版本探測的,可以使用這個選項。它會顯示詳細的探測過程和Nmap與目標服務的交互數(shù)據(jù),這對于調試或深入理解探測原理非常有幫助。
思考題:
1. 為什么在進行安全評估時,僅僅知道一個端口是開放的是不夠的?服務和版本信息能提供哪些額外的價值?
2. 如果您掃描一個目標,發(fā)現(xiàn)其80端口開放,SERVICE列顯示為http,但VERSION列顯示為Microsoft IIS httpd 10.0。這與您預期的Linux服務器上的Apache服務不符,這可能意味著什么?您會如何進一步分析?
3. 在什么情況下,您可能會選擇使用--version-light而不是默認強度的服務探測?
服務與版本探測是Nmap的核心功能之一,它能為我們提供關于目標系統(tǒng)極其寶貴的信息。掌握好這一節(jié)的內容,將大大提升您的網(wǎng)絡偵察能力。
接下來是第七部分:操作系統(tǒng)探測 (Operating System Detection)。
7. 操作系統(tǒng)探測 (Operating System Detection)
了解目標主機運行的操作系統(tǒng)是網(wǎng)絡偵察中的另一個關鍵環(huán)節(jié)。不同的操作系統(tǒng)有其獨特的特性、默認配置和潛在的漏洞。Nmap可以通過分析目標主機對特定TCP/IP探測報文的響應方式來猜測其操作系統(tǒng)。
想象一下,不同國家的人說同一種語言時可能會有不同的口音和用詞習慣。Nmap就像一位語言學家,通過分析這些細微的“網(wǎng)絡口音”來判斷對方的“國籍”(操作系統(tǒng))。
7.1 為什么操作系統(tǒng)探測很重要?
?定制攻擊策略:針對特定操作系統(tǒng)的漏洞利用成功率更高。例如,一個針對Windows SMB服務的漏洞利用,對Linux系統(tǒng)就無效。
?了解系統(tǒng)環(huán)境:操作系統(tǒng)信息有助于我們推斷目標可能安裝的軟件、默認服務以及安全配置。
?評估安全基線:某些操作系統(tǒng)版本可能已知存在未修補的漏洞,或者默認安全設置較弱。
7.2 如何進行操作系統(tǒng)探測?
Nmap中使用-O(大寫字母O) 選項來啟用操作系統(tǒng)探測。為了獲得準確的結果,Nmap通常需要找到至少一個開放和一個關閉的TCP端口。
基本命令格式:
nmap -O
示例:
讓我們嘗試對scanme.nmap.org進行操作系統(tǒng)探測:
`nmap -O scanme.nmap.org`
預期輸出解讀:
您可能會看到類似以下的輸出:
Starting Nmap X.XX ( https://nmap.org ) at YYYY-MM-DD HH:MM ZZZ Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.18s latency). Not shown: 995 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 9929/tcp open nping-echo 31337/tcp open Elite Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/olinux_kernel:3 cpe:/olinux_kernel:4 OS details: Linux 3.2 - 4.9 Nmap done: 1 IP address (1 host up) scanned in XX.XX seconds
關鍵信息解讀:
?Device type:Nmap嘗試猜測設備類型,例如general purpose(通用服務器/工作站),router,printer等。
?Running:Nmap列出的最有可能的操作系統(tǒng)。這里可能是具體的發(fā)行版和內核版本,例如Linux 3.X|4.X表示可能是Linux內核3系列或4系列。
?OS CPE:操作系統(tǒng)的通用平臺枚舉(CPE)標識符。這對于自動化腳本和漏洞數(shù)據(jù)庫查詢非常有用。
?OS details:更詳細的操作系統(tǒng)猜測信息。Nmap會根據(jù)其指紋數(shù)據(jù)庫中的匹配情況給出最可能的幾個候選項。例如Linux 3.2 - 4.9。
重要提示:操作系統(tǒng)探測并非100%準確。它依賴于目標主機對特定探測報文的響應,而這些響應可能會受到防火墻、負載均衡器或操作系統(tǒng)本身配置的影響。如果Nmap無法獲得足夠的信息,它可能無法給出準確的猜測,或者會給出多個可能的選項。
7.3 操作系統(tǒng)探測的進階選項
?--osscan-limit:如果目標主機沒有任何開放和關閉的TCP端口符合Nmap進行操作系統(tǒng)探測的要求,Nmap通常會跳過對該主機的操作系統(tǒng)探測。使用此選項可以強制Nmap即使在不理想的情況下也嘗試進行探測。
?--osscan-guess或--fuzzy:當Nmap的操作系統(tǒng)探測結果不理想時,它會嘗試進行更積極(或說更模糊)的猜測。這可能會提高識別率,但也可能導致錯誤的猜測。
? 可以把它想象成,如果初步判斷不出來,Nmap會說:“嗯,雖然細節(jié)對不上,但它看起來很像一個Linux系統(tǒng)?!?/p>
?--max-os-tries
7.4 操作系統(tǒng)探測的原理簡述 (選讀)
Nmap的操作系統(tǒng)探測技術非常復雜,它基于一個龐大的指紋數(shù)據(jù)庫 (nmap-os-db)。這個數(shù)據(jù)庫包含了數(shù)千種已知操作系統(tǒng)和服務對特定TCP/IP探測報文的響應特征。
Nmap會向目標發(fā)送一系列精心設計的TCP、UDP和ICMP探測報文,并分析以下特征:
?TCP ISN (Initial Sequence Number) 采樣:不同操作系統(tǒng)生成TCP初始序列號的方式可能不同。
?TCP 選項支持和順序:例如窗口縮放選項、時間戳選項等。
?IP ID 采樣:IP包頭中的ID字段的生成方式。
?顯式擁塞通知 (ECN) 支持。
?對特定標志位組合的響應:例如,對SYN/FIN/URG/PSH同時設置的TCP報文的響應。
?ICMP 報文處理:例如,對不可達端口的ICMP響應。
Nmap收集這些響應特征,然后與數(shù)據(jù)庫中的指紋進行比對,找出最匹配的操作系統(tǒng)。
思考題:
1. 在哪些情況下,操作系統(tǒng)探測的結果可能不準確?你會如何應對這種情況?
2. 如果你掃描一個網(wǎng)絡,發(fā)現(xiàn)大部分主機都是Windows系統(tǒng),但有一臺主機Nmap無法識別其操作系統(tǒng),或者給出了非常模糊的猜測(例如unknown device)。這可能暗示了什么?
3.--osscan-guess選項的潛在好處和風險是什么?
操作系統(tǒng)探測是Nmap工具箱中非常強大的一個功能,它能幫助我們更全面地了解目標網(wǎng)絡環(huán)境。熟練運用它,將使您的安全評估工作更加高效和精準。
我們現(xiàn)在進入Nmap中一個非常強大且靈活的部分——Nmap腳本引擎。這部分將極大地擴展Nmap的功能。
8. Nmap腳本引擎 (NSE - Nmap Scripting Engine)
Nmap腳本引擎(NSE)是Nmap最強大的功能之一。它允許用戶編寫(或使用現(xiàn)有的)Lua腳本來自動化各種網(wǎng)絡任務。這些腳本可以用于更高級的漏洞檢測、更深入的服務發(fā)現(xiàn)、利用某些已知的漏洞、收集更多目標信息等等。
想象一下,Nmap本身是一個多功能工具箱,而NSE腳本就是各種定制的、專用的工具頭,可以裝在工具箱的工具上,執(zhí)行特定的高級任務。
8.1 NSE能做什么?
NSE腳本的用途非常廣泛,Nmap自帶了數(shù)百個腳本,涵蓋以下主要類別:
?auth:嘗試繞過認證機制或獲取目標系統(tǒng)上的憑據(jù)(例如,嘗試默認密碼)。
?broadcast:利用廣播發(fā)現(xiàn)網(wǎng)絡中的主機和服務,收集信息。
?brute:對服務進行暴力破解(例如,F(xiàn)TP、SSH、Telnet的用戶名和密碼)。
?default:一組被認為是安全且有用的默認腳本,通常與-sC或-A選項一起運行。
?discovery:嘗試發(fā)現(xiàn)關于網(wǎng)絡的更多信息(例如,DNS服務器、SNMP信息、目錄服務等)。
?dos:檢測或利用拒絕服務漏洞(使用時需格外小心,并獲得授權)。
?exploit:嘗試利用已知的安全漏洞(同樣,使用時需格外小心,并獲得授權)。
?external:與第三方服務交互以獲取信息(例如,查詢Whois數(shù)據(jù)庫、Shodan等)。
?fuzzer:向目標發(fā)送異?;螂S機數(shù)據(jù),以測試其健壯性或發(fā)現(xiàn)潛在漏洞。
?intrusive:被認為具有侵入性,可能導致目標系統(tǒng)崩潰或留下明顯痕跡的腳本(不建議在未授權的情況下使用)。
?malware:檢測目標系統(tǒng)上是否存在已知的惡意軟件或后門。
?safe:被認為是安全的腳本,不太可能對目標系統(tǒng)造成負面影響。
?version:用于增強版本探測-sV的腳本,嘗試獲取更詳細的服務版本信息。
?vuln:專門用于檢測已知漏洞的腳本。
8.2 如何使用NSE腳本?
主要通過--script選項來指定要運行的腳本或腳本類別。
基本命令格式:
?運行單個腳本:
nmap --script例如,運行http-title腳本來獲取Web服務器的標題:
`nmap --script http-title scanme.nmap.org`
?運行指定類別的所有腳本:
nmap --script例如,運行所有default類別的腳本:
`nmap --script default scanme.nmap.org`或者,更常用的方式是使用-sC選項,它等同于--script default:
`nmap -sC scanme.nmap.org`
?運行多個腳本或類別:
使用逗號分隔腳本名或類別名。
nmap --script http-title,ftp-anonnmap --script default,vuln
?運行所有腳本 (不推薦,除非您知道自己在做什么并且已獲得授權):
nmap --script all這會運行Nmap腳本目錄中的所有腳本,可能非常耗時且具有侵入性。
?使用通配符指定腳本:
nmap --script"http-*"注意:在某些shell中,可能需要將通配符表達式放在引號內。# 運行所有以 http- 開頭的腳本
8.3 腳本參數(shù) (--script-args)
一些NSE腳本接受參數(shù),以定制其行為。可以使用--script-args選項來傳遞這些參數(shù)。
命令格式:
nmap --script--script-args
例如,http-brute腳本可以接受用戶名列表和密碼列表作為參數(shù):
nmap --script http-brute --script-args userdb=users.txt,passdb=passwords.txt
要了解特定腳本支持哪些參數(shù),可以查閱Nmap的官方文檔,或者使用以下命令查看腳本的幫助信息:
nmap --script-help
8.4 更新NSE腳本數(shù)據(jù)庫
Nmap的腳本庫會定期更新,添加新的腳本和修復??梢允褂靡韵旅罡履_本數(shù)據(jù)庫:
`sudonmap --script-updatedb`
(在Windows上可能不需要sudo,直接以管理員權限運行命令提示符即可)
8.5 常用且有用的腳本示例
?http-title: 獲取HTTP服務器的
`nmap -p 80 --script http-title scanme.nmap.org`輸出示例:
PORT STATE SERVICE 80/tcp open http | http-title: Go ahead and ScanMe! |_Requested resource was /
?ftp-anon: 檢查FTP服務器是否允許匿名登錄。
nmap -p 21 --script ftp-anon如果允許匿名登錄,它會顯示:Anonymous FTP login allowed。
?smb-os-discovery: 嘗試通過SMB協(xié)議獲取更詳細的操作系統(tǒng)信息、計算機名、域名等。
nmap -p 139,445 --script smb-os-discovery
?dns-brute: 嘗試通過暴力猜測常見的子域名來發(fā)現(xiàn)目標域的更多主機。
`nmap --script dns-brute --script-args dns-brute.threads=5,dns-brute.hostlist=./subdomains.txt example.com`
?ssl-enum-ciphers: 列出SSL/TLS服務器支持的加密套件。
nmap -p 443 --script ssl-enum-ciphers
8.6-A選項:激進掃描
-A選項是一個方便的快捷方式,它啟用了多種高級掃描選項,包括:
? 操作系統(tǒng)探測 (-O)
? 服務版本探測 (-sV)
? 默認腳本掃描 (-sC)
? Traceroute (--traceroute)
nmap -A
-A選項功能強大,能提供大量信息,但掃描過程也相對較慢且“噪音”較大,更容易被檢測到。
思考題:
1. 您認為NSE腳本在哪些安全評估場景中最有用?請舉例說明。
2. 在使用exploit或intrusive類別的NSE腳本時,需要注意哪些道德和法律問題?
3. 如果您想編寫自己的NSE腳本來檢測一個特定服務的自定義漏洞,您會如何開始?(提示:Lua語言,Nmap API)
4.-sC和-A選項有什么區(qū)別和聯(lián)系?在什么情況下您會選擇使用-sC而不是-A?
Nmap腳本引擎極大地增強了Nmap的功能,使其不僅僅是一個端口掃描器,更是一個強大的網(wǎng)絡安全審計工具。花時間探索和學習不同的NSE腳本,將對您的技能提升大有裨益。
接下來,我們將討論如何優(yōu)化Nmap的掃描過程,使其更高效,并能適應不同的網(wǎng)絡環(huán)境。
9. 掃描優(yōu)化與性能 (Timing and Performance)
Nmap的掃描速度和資源消耗是可以調整的。根據(jù)您的網(wǎng)絡狀況、目標主機的響應能力以及您對掃描隱蔽性的要求,合理配置Nmap的性能參數(shù)非常重要。這就像開車一樣,在高速公路上可以開快點,但在擁擠的市區(qū)或者路況不好的地方就需要慢下來。
9.1 時間模板 (-T
Nmap提供了一些預設的時間模板,方便用戶快速調整掃描速度和隱蔽性。這些模板會影響Nmap的多個底層時間參數(shù),如超時、重試次數(shù)等。
?-T0或-T paranoid:極慢模式,用于IDS規(guī)避。發(fā)送數(shù)據(jù)包的間隔非常長,掃描一個目標可能需要數(shù)小時甚至數(shù)天。這就像一個極其謹慎的間諜,每一步都小心翼翼。
?-T1或-T sneaky:隱蔽模式,也用于IDS規(guī)避,比paranoid稍快一些。
?-T2或-T polite:禮貌模式,降低掃描速度以減少對目標網(wǎng)絡和主機的帶寬消耗和負載。它會等待更長的時間以獲取響應,并且發(fā)送數(shù)據(jù)包的頻率較低。這就像一個有禮貌的訪客,輕輕敲門并耐心等待。
?-T3或-T normal:正常模式,這是Nmap的默認模式。它會根據(jù)網(wǎng)絡狀況動態(tài)調整掃描速度,試圖在速度和可靠性之間取得平衡。
?-T4或-T aggressive:快速模式,假設網(wǎng)絡狀況良好且目標主機響應迅速。它會設置較短的超時時間,并增加并行掃描的數(shù)量。這就像一個急匆匆的快遞員,追求效率。
?-T5或-T insane:瘋狂模式,極快,但只適用于網(wǎng)絡狀況極好且目標主機能快速處理請求的情況。如果網(wǎng)絡或目標主機跟不上,可能會導致結果不準確或丟失數(shù)據(jù)包。這就像F1賽車,速度極快但對路況要求極高。
如何選擇?
? 對于大多數(shù)情況,-T3(normal)是一個不錯的起點。
? 如果您擔心觸發(fā)IDS/IPS,或者目標網(wǎng)絡帶寬有限,可以選擇-T2(polite)或更低的級別。
? 如果您在受控環(huán)境(例如您自己的實驗室網(wǎng)絡)中掃描,并且希望盡快得到結果,可以嘗試-T4(aggressive)。
?-T5(insane)和-T0(paranoid)/-T1(sneaky)屬于比較極端的情況,需要謹慎使用。
示例:
nmap -T4 scanme.nmap.org # 使用快速模式掃描 nmap -T polite 192.168.1.0/24# 對本地網(wǎng)絡進行禮貌掃描
9.2 手動調整時間參數(shù) (高級)
除了預設的時間模板,Nmap還允許您手動調整許多細致的時間參數(shù),以實現(xiàn)更精確的控制。這些選項通常用于高級用戶或特定場景。
?--min-hostgroup
?--min-parallelism
?--min-rtt-timeout
?--max-retries
?--host-timeout
例如,如果您希望每個主機的掃描時間不超過5分鐘:
nmap --host-timeout 300000ms# 或者 --host-timeout 5m
?--scan-delay
例如,在每個探測報文之間至少延遲1秒:
nmap --scan-delay 1s
注意:手動調整這些參數(shù)需要對網(wǎng)絡原理和Nmap的工作方式有較深的理解。不當?shù)脑O置可能會導致掃描速度過慢、結果不準確或對目標網(wǎng)絡造成不必要的負擔。
9.3 帶寬控制
?--min-rate
例如,確保每秒發(fā)送的數(shù)據(jù)包不超過10個:
nmap --max-rate 10
9.4 掃描順序
?--randomize-hosts:隨機化目標主機的掃描順序。這在掃描大量主機時,可以避免因為按順序掃描而產(chǎn)生的明顯模式,從而可能有助于規(guī)避某些簡單的檢測機制。
思考題:
1. 在什么情況下,您會選擇使用-T2 (polite)而不是默認的-T3 (normal)?反之,在什么情況下會選擇-T4 (aggressive)?
2. 如果您正在對一個非常重要且敏感的生產(chǎn)服務器進行例行安全檢查,您會如何調整Nmap的時間和性能參數(shù),以最大限度地減少對其正常服務的影響?
3.--host-timeout和探測報文的RTT超時(如--max-rtt-timeout)有什么區(qū)別?它們分別控制什么?
4. 為什么說-T5 (insane)模式可能會導致結果不準確?
理解并合理運用Nmap的時間和性能選項,可以讓您的掃描任務更加高效、可靠,并且能夠適應各種復雜的網(wǎng)絡環(huán)境。這需要一些實踐和經(jīng)驗積累,但回報是顯著的。
現(xiàn)在,我們來看看如何處理和保存Nmap的掃描結果,這對于后續(xù)的分析、報告以及與其他工具的集成都非常重要。
10. 輸出格式 (Output Formats)
Nmap可以將掃描結果保存為多種格式,以滿足不同的需求。想象一下,您完成了一項調查研究,現(xiàn)在需要將結果整理成不同的報告形式:一份給技術團隊看的詳細報告,一份給管理層看的摘要報告,還有一份可以導入到數(shù)據(jù)庫進行分析的原始數(shù)據(jù)。
Nmap主要支持以下幾種輸出格式:
10.1 普通輸出 (-oN
這是Nmap默認在屏幕上顯示的格式,也是最易讀的格式。它包含了Nmap掃描過程中的主要信息,如開放端口、服務、版本、操作系統(tǒng)猜測等。
命令格式:
nmap -oN output.txt
這會將屏幕上看到的標準輸出保存到output.txt文件中。
優(yōu)點:
? 人類可讀性好。
? 包含了大部分重要信息。
缺點:
? 不太適合程序解析和自動化處理。
10.2 XML 輸出 (-oX
XML (Extensible Markup Language) 格式是一種結構化的數(shù)據(jù)格式,非常適合程序解析。Nmap的XML輸出包含了非常詳細的掃描信息,幾乎涵蓋了所有收集到的數(shù)據(jù)。
命令格式:
nmap -oX output.xml
優(yōu)點:
? 機器可讀性極好,方便程序解析和處理。
? 信息最全面,包含了所有細節(jié)。
? 可以被許多第三方安全工具或腳本導入和使用。
? 可以使用XSLT等技術轉換為HTML或其他格式的報告。
缺點:
? 對于人類直接閱讀不太友好。
示例場景:
? 將Nmap掃描結果導入到漏洞管理平臺。
? 編寫腳本自動分析Nmap結果并生成定制報告。
? 長期存儲掃描數(shù)據(jù)以供后續(xù)審計和比較。
10.3 Grepable 輸出 (-oG
這種格式設計用于方便使用grep、awk、sed等命令行工具進行快速的文本處理和信息提取。每一行代表一個主機,開放的端口和服務信息會以簡潔的方式列出。
命令格式:
nmap -oG output.grep
輸出示例(單行):
Host: 45.33.32.156 (scanme.nmap.org) Status: Up Host: 45.33.32.156 (scanme.nmap.org) Ports: 22/open/tcp//ssh///, 25/open/tcp//smtp///, 80/open/tcp//http/// ... Ignored State: closed (995)
優(yōu)點:
? 非常適合命令行工具進行快速過濾和提取特定信息。
? 格式相對簡單緊湊。
缺點:
? 信息不如XML詳細。
? 可讀性不如普通輸出。
示例場景:
? 快速提取所有開放了80端口的主機列表。
? 統(tǒng)計某個特定服務在網(wǎng)絡中出現(xiàn)的次數(shù)。
10.4 同時輸出到所有主要格式 (-oA
這是一個非常方便的選項,它會同時生成普通輸出 (.nmap)、XML輸出 (.xml) 和 Grepable輸出 (.gnmap),并使用指定的基礎文件名。
命令格式:
nmap -oA scan_results
執(zhí)行后,會在當前目錄下生成三個文件:
?scan_results.nmap(普通輸出)
?scan_results.xml(XML輸出)
?scan_results.gnmap(Grepable輸出)
這是推薦的保存掃描結果的方式,因為它同時兼顧了人類可讀性和機器可處理性。
10.5 腳本小子輸出 (-oS
這是一種比較“有趣”的輸出格式,它會用leet speak (l33t sp34k,一種網(wǎng)絡黑客俚語) 來顯示結果。例如,Nmap會變成||///Delta|>。這種格式主要是為了娛樂,并沒有實際的分析價值,并且在新版本的Nmap中可能已被移除或不推薦使用。
10.6 詳細程度與調試信息
?-v/-vv(詳細輸出):增加輸出的詳細程度。-v會顯示更多關于掃描過程的信息,-vv則更加詳細。這對于理解Nmap正在做什么以及診斷問題很有幫助。
?-d/-dd(調試輸出):啟用調試模式,輸出大量的調試信息。這主要用于Nmap開發(fā)者或高級用戶進行故障排除。
10.7 恢復中斷的掃描
?--resume
# 假設之前的掃描是 nmap -oN scan.log注意:并非所有類型的掃描都能完美恢復,但對于大型掃描任務來說,這是一個非常有用的功能。# 如果中斷了,可以嘗試恢復: nmap --resume scan.log
思考題:
1. 在進行一次正式的安全評估并需要提交報告時,您會選擇哪種Nmap輸出格式?為什么?
2. 如果您需要快速從Nmap掃描結果中找出一個特定端口(例如3389/tcp,遠程桌面)在哪些主機上是開放的,您會傾向于使用哪種輸出格式和什么工具來輔助?
3.-oA選項相比單獨使用-oN,-oX,-oG有什么優(yōu)勢?
4. 在什么情況下,增加詳細程度 (-v或-vv) 會對您有所幫助?
有效地管理和利用Nmap的輸出是整個掃描過程的重要組成部分。選擇合適的輸出格式可以大大簡化后續(xù)的數(shù)據(jù)分析、報告撰寫以及與其他工具的集成工作。
在最后這部分,我們將探討一些更高級的主題:如何嘗試規(guī)避防火墻和入侵檢測系統(tǒng)(IDS),以及一些欺騙技術。這部分內容需要特別強調合法和道德使用的重要性。
11. 防火墻/IDS規(guī)避與欺騙 (Firewall/IDS Evasion and Spoofing)
在真實的網(wǎng)絡環(huán)境中,目標主機通常受到防火墻的保護,網(wǎng)絡中也可能部署了IDS/IPS來檢測和阻止惡意掃描活動。Nmap提供了一些技術來嘗試繞過這些防御機制,或者使掃描行為更難被追蹤。
重要警告:濫用這些技術進行未經(jīng)授權的掃描是非法和不道德的。本節(jié)內容僅用于教育目的,幫助您了解網(wǎng)絡防御和攻擊技術,以便更好地保護自己的系統(tǒng)。在進行任何掃描之前,務必獲得明確的授權。
想象一下,您是一位偵察兵,需要潛入一個有哨兵(防火墻)和監(jiān)控攝像頭(IDS)的區(qū)域。您需要運用一些技巧來避免被發(fā)現(xiàn)。
11.1 分片數(shù)據(jù)包 (-f)
一些簡單的防火墻或IDS可能只檢查TCP頭部信息,而不重新組裝IP分片。-f選項會將Nmap的探測報文分割成多個小的IP分片(通常是8字節(jié)或更?。?。這可能會使得一些配置不當?shù)姆阑饓騃DS難以檢測到真實的掃描意圖。
命令格式:
nmap -f
? 您可以使用-f多次(例如-ff)來使用更小的分片,或者使用--mtu
效果:取決于目標防火墻/IDS的具體實現(xiàn)?,F(xiàn)代的、狀態(tài)化的防火墻通常能夠正確處理IP分片,因此這種技術的效果有限。
11.2 指定源端口 (--source-port
一些配置不當?shù)姆阑饓σ?guī)則可能只允許來自特定源端口(例如DNS的53端口,F(xiàn)TP-DATA的20端口)的流量通過。通過偽造源端口,Nmap可能能夠繞過這類簡單的規(guī)則。
命令格式:
nmap --source-port 53
效果:同樣取決于防火墻的具體配置。如果防火墻規(guī)則確實基于源端口進行過濾,則可能有效。
11.3 偽造MAC地址 (--spoof-mac
在本地以太網(wǎng)環(huán)境中,您可以偽造發(fā)送數(shù)據(jù)包的源MAC地址。這可以使您的掃描在網(wǎng)絡日志中看起來像是來自另一臺設備。
命令格式:
? 指定一個完整的MAC地址:
nmap --spoof-mac 002244:55
? 讓Nmap隨機生成一個MAC地址:
nmap --spoof-mac 0
? 讓Nmap隨機生成一個屬于特定廠商的MAC地址(例如Dell, Apple, Cisco):
nmap --spoof-mac Dell
注意:
? 此技術只在本地網(wǎng)絡(同一廣播域)中有效。
? 如果目標網(wǎng)絡使用了端口安全或其他基于MAC地址的訪問控制,偽造MAC地址可能導致您的合法網(wǎng)絡連接中斷。
11.4 誘餌掃描 (-D
這是一種非常有趣的欺騙技術。Nmap會從您指定的多個誘餌IP地址(以及您真實的IP地址)向目標發(fā)送探測報文。這樣,在目標的日志中,看起來像是多個主機同時在掃描它,從而淹沒您的真實IP,使其更難被發(fā)現(xiàn)。
命令格式:
nmap -D RND:10,192.168.1.101,ME,10.0.0.5
?RND或RND:
?ME:代表您自己的真實IP地址。您需要將ME包含在誘餌列表中,否則目標將不會收到來自您真實IP的任何探測,也就無法獲得掃描結果。
? 您可以直接指定其他IP地址作為誘餌。
工作原理:
? Nmap會輪流使用誘餌IP(和您的真實IP)作為源IP地址發(fā)送探測報文。
? 只有當使用您的真實IP (ME) 發(fā)送探測時,Nmap才能收到響應并記錄結果。
? 目標主機的日志會記錄下來自所有誘餌IP(包括您的真實IP)的連接嘗試。
重要提示:
?不要使用您無法控制或未獲授權的真實IP地址作為誘餌!這可能會給無辜的第三方帶來麻煩,甚至構成網(wǎng)絡攻擊。
? 使用隨機不可路由的IP地址(如RND)或您自己網(wǎng)絡中未使用的IP地址作為誘餌是相對安全的做法。
? 誘餌掃描并不能完全隱藏您的真實IP,因為您仍然需要用真實IP發(fā)送一些探測來獲取結果。但它可以有效地混淆視聽。
11.5 空閑掃描 (-sI
這是一種極其隱蔽的掃描技術,它利用一個空閑的“僵尸主機”(Zombie Host)來代替您向目標發(fā)送探測報文,從而完全隱藏您的真實IP地址。這種掃描方式非常復雜,并且需要滿足特定條件:
1.找到一個合適的僵尸主機:該主機必須是網(wǎng)絡空閑的(即很少有正常的網(wǎng)絡流量),并且其IP ID序列號是可預測的(通常是全局遞增的)。
2. 僵尸主機不能直接過濾掉來自您的探測報文。
工作原理簡述:
1. Nmap向僵尸主機發(fā)送一個探測包,記錄其IP ID。
2. Nmap偽造一個源IP為僵尸主機的探測包發(fā)送給目標主機的特定端口。
3. 如果目標端口是開放的,目標主機會向僵尸主機回復一個SYN/ACK包。僵尸主機收到這個意外的SYN/ACK后,會回復一個RST包給目標主機,并且其IP ID會增加。
4. 如果目標端口是關閉的,目標主機會向僵尸主機回復一個RST包。僵尸主機收到RST后通常不會有響應,其IP ID不會因為這個交互而改變。
5. Nmap再次向僵尸主機發(fā)送一個探測包,檢查其IP ID。通過比較IP ID的變化,Nmap可以推斷出目標端口的狀態(tài)。
? IP ID增加2:目標端口開放。
? IP ID增加1:目標端口關閉。
? IP ID增加超過2或無變化:可能存在其他網(wǎng)絡流量或僵尸主機不適用。
命令格式:
nmap -sI zombie.example.com
優(yōu)點:真正意義上的匿名掃描,目標日志中只會看到僵尸主機的IP。
缺點:
? 難以找到合適的僵尸主機。
? 掃描速度非常慢。
? 結果可能不如直接掃描準確。
? 對僵尸主機有一定的網(wǎng)絡流量,如果僵尸主機不是您控制的,也存在道德和法律風險。
11.6 其他技巧
?避免使用DNS解析 (-n):在掃描時,Nmap默認會進行反向DNS查詢來獲取主機名。這可能會在DNS服務器上留下日志。使用-n選項可以禁止所有DNS解析。
?發(fā)送損壞的校驗和 (--badsum):一些配置不佳的防火墻或IDS可能不會檢查IP/TCP/UDP校驗和。發(fā)送帶有錯誤校驗和的數(shù)據(jù)包有時可以繞過這些檢查,但正常的操作系統(tǒng)通常會丟棄這些數(shù)據(jù)包,因此這種方法主要用于探測防火墻/IDS本身的行為,而不是掃描目標主機。
再次強調:道德與合法性
本節(jié)介紹的技術很多都具有雙刃劍的特性。了解它們有助于您理解網(wǎng)絡攻防的復雜性。但是,嚴禁在未經(jīng)授權的情況下對任何系統(tǒng)使用這些技術。始終遵守法律法規(guī)和道德準則。
思考題:
1. 誘餌掃描 (-D) 和空閑掃描 (-sI) 在隱藏掃描者真實身份方面有什么本質區(qū)別?哪種方法更隱蔽?為什么?
2. 為什么說IP分片 (-f) 技術對現(xiàn)代防火墻的效果越來越有限?
3. 如果您懷疑目標網(wǎng)絡部署了IDS,并且您希望盡可能低調地進行掃描,您會優(yōu)先考慮使用哪些規(guī)避技術組合?(假設您已獲得授權)
4. 使用--spoof-mac偽造MAC地址進行掃描,在什么情況下是有效的,什么情況下是無效的?
到這里,我們關于Nmap入門的主要內容就介紹完畢了。從基礎的安裝、目標指定,到各種掃描技術、腳本引擎,再到性能優(yōu)化和規(guī)避技巧,希望這個教程能為您打開Nmap學習的大門。
鏈接:https://blog.csdn.net/qq_41179365/article/details/148172936
-
WINDOWS
+關注
關注
4文章
3608瀏覽量
90969 -
操作系統(tǒng)
+關注
關注
37文章
7097瀏覽量
124971 -
網(wǎng)絡安全
+關注
關注
11文章
3301瀏覽量
61139
原文標題:Nmap從入門到精通:一文掌握網(wǎng)絡安全掃描的“瑞士軍刀”
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
評論