一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Nmap從入門(mén)到精通

馬哥Linux運(yùn)維 ? 來(lái)源:CSDN技術(shù)社區(qū) ? 2025-05-28 16:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Nmap是什么? (What is Nmap?)

你好,未來(lái)的網(wǎng)絡(luò)安全探索者! 歡迎來(lái)到 Nmap 的世界。

想象一下,你是一名城市規(guī)劃師,在規(guī)劃一座新城市之前,你需要了解這片土地的每一寸細(xì)節(jié):哪里有河流,哪里有山丘,哪里已經(jīng)有了建筑。Nmap (NetworkMapper) 就是你在數(shù)字世界中的“勘探工具”,它可以幫助你發(fā)現(xiàn)網(wǎng)絡(luò)上的設(shè)備,以及這些設(shè)備上開(kāi)放了哪些“大門(mén)”(也就是端口)。

Nmap 的主要用途包括:

? 主機(jī)發(fā)現(xiàn) (Host Discovery): 找出網(wǎng)絡(luò)上有哪些活躍的設(shè)備,比如電腦、服務(wù)器、路由器、甚至智能冰箱!

? 端口掃描 (Port Scanning): 識(shí)別目標(biāo)設(shè)備上哪些網(wǎng)絡(luò)端口是開(kāi)放的。端口就像是設(shè)備上的不同服務(wù)窗口,比如 80 端口通常是網(wǎng)頁(yè)服務(wù),22 端口通常是遠(yuǎn)程登錄服務(wù)。

? 服務(wù)與版本探測(cè) (Service and Version Detection): 找出在開(kāi)放端口上運(yùn)行的具體網(wǎng)絡(luò)服務(wù)是什么,以及它們的軟件版本。這很重要,因?yàn)槟承┨囟ò姹镜能浖赡艽嬖谝阎陌踩┒础?/p>

? 操作系統(tǒng)探測(cè) (Operating System Detection): 嘗試識(shí)別目標(biāo)設(shè)備的操作系統(tǒng)類(lèi)型和版本。

? 漏洞掃描 (Vulnerability Scanning): 通過(guò) Nmap 腳本引擎 (NSE),Nmap 還可以執(zhí)行一些基本的漏洞掃描,幫助發(fā)現(xiàn)潛在的安全風(fēng)險(xiǎn)。
為什么學(xué)習(xí) Nmap?它為什么這么重要?
Nmap 是網(wǎng)絡(luò)安全領(lǐng)域中最基礎(chǔ)、最強(qiáng)大的工具之一。無(wú)論你是想成為一名滲透測(cè)試工程師 (Penetration Tester)、安全分析師 (Security Analyst),還是僅僅想更好地了解你自己的網(wǎng)絡(luò)環(huán)境,Nmap 都是必備技能。

? 對(duì)于防御者 (Blue Team): Nmap 可以幫助你了解自己網(wǎng)絡(luò)的暴露面,及時(shí)發(fā)現(xiàn)未經(jīng)授權(quán)的設(shè)備或開(kāi)放了不必要端口的服務(wù),從而加固防線。

? 對(duì)于攻擊者/測(cè)試者 (Red Team/Penetration Testers): Nmap 是信息收集階段的核心工具,幫助他們繪制目標(biāo)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),找到潛在的攻擊入口。
Nmap 的合法和道德使用準(zhǔn)則

這是一個(gè)非常非常重要的話題!Nmap 本身是一個(gè)中立的工具,就像一把錘子,你可以用它來(lái)蓋房子,也可以用它來(lái)搞破壞。 我們必須強(qiáng)調(diào):未經(jīng)授權(quán)掃描他人網(wǎng)絡(luò)是非法且不道德的!

請(qǐng)牢記:始終在獲得明確授權(quán)的情況下使用 Nmap。 我們學(xué)習(xí) Nmap 是為了更好地保護(hù)網(wǎng)絡(luò),而不是去侵犯他人。

小成就解鎖: 你已經(jīng)了解了 Nmap 的基本概念和重要性!這是成為網(wǎng)絡(luò)安全高手的第一步!

安裝與初識(shí) Nmap (Installation and First Look)

現(xiàn)在我們已經(jīng)知道了 Nmap 是什么以及它的重要性,是時(shí)候親自動(dòng)手,把這個(gè)強(qiáng)大的工具安裝到我們的電腦上了!別擔(dān)心,安裝過(guò)程通常很簡(jiǎn)單。

Nmap 支持多種操作系統(tǒng)。下面我們分別介紹在 Windows、Linux 和 macOS上的安裝方法。你可以根據(jù)自己的操作系統(tǒng)選擇相應(yīng)的指南。

操作系統(tǒng)安裝指南

操作系統(tǒng) 安裝方法
Windows 訪問(wèn) Nmap 官方網(wǎng)站的下載頁(yè)面 (https://nmap.org/download.html)。找到最新的穩(wěn)定版 Windows 安裝程序 (通常是一個(gè).exe文件,例如nmap-x.yy-setup.exe)。下載并運(yùn)行該程序,按照安裝向?qū)У奶崾就瓿砂惭b。安裝過(guò)程中,請(qǐng)確保勾選了 “Nmap core files” 和 “Command-line Nmap executable”。
Linux 大多數(shù) Linux 發(fā)行版都可以通過(guò)包管理器輕松安裝 Nmap。
-Debian/Ubuntu (及衍生版):打開(kāi)終端,輸入命令sudo apt update && sudo apt install nmap
-Fedora/CentOS/RHEL (及衍生版):打開(kāi)終端,輸入命令sudo dnf install nmap(較新版本) 或sudo yum install nmap(較老版本)
macOS 方法一 (推薦): 使用 Homebrew 。如果你安裝了 Homebrew (macOS 的一個(gè)流行包管理器),打開(kāi)終端,輸入命令brew install nmap。
方法二: 官方安裝包。訪問(wèn) Nmap 官方網(wǎng)站的下載頁(yè)面,下載適用于 macOS 的.dmg安裝包。雙擊打開(kāi).dmg文件,然后運(yùn)行其中的安裝程序。

小提示 :安裝完成后,可以打開(kāi)你的命令行終端 (Windows 上是cmd或PowerShell,Linux 和 macOS 上是Terminal),輸入nmap -V(注意 V 是大寫(xiě)) 并按回車(chē)。如果安裝成功,你會(huì)看到 Nmap 的版本信息。

Nmap 的基本命令行界面

Nmap 主要通過(guò)命令行來(lái)操作。這意味著你需要打開(kāi)終端,然后輸入nmap命令,后面跟著一些參數(shù)和目標(biāo)地址。

基本的命令格式看起來(lái)像這樣:

nmap [掃描類(lèi)型...] [選項(xiàng)...] {目標(biāo)規(guī)范}

別被這個(gè)嚇到!我們后面會(huì)一步步學(xué)習(xí)各種掃描類(lèi)型和選項(xiàng)的含義。

第一次掃描:nmap scanme.nmap.org示例與結(jié)果解讀

激動(dòng)人心的時(shí)刻到了!讓我們進(jìn)行第一次 Nmap 掃描。Nmap 的開(kāi)發(fā)者提供了一個(gè)專(zhuān)門(mén)用于測(cè)試掃描的網(wǎng)站:scanme.nmap.org。掃描這個(gè)網(wǎng)站是完全合法的。

打開(kāi)你的終端,輸入以下命令并按回車(chē):

`nmap scanme.nmap.org`

請(qǐng)注意:第一次運(yùn)行掃描可能需要一點(diǎn)時(shí)間,因?yàn)樗枰螺d一些必要的數(shù)據(jù)文件。請(qǐng)耐心等待。

掃描完成后,你會(huì)看到類(lèi)似下面的輸出 (具體結(jié)果可能會(huì)因 Nmap 版本和網(wǎng)絡(luò)狀況略有不同):

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

讓我們來(lái)解讀一下這些信息:

?Starting Nmap X.YY ...: 顯示你正在使用的 Nmap 版本和啟動(dòng)時(shí)間。

?Nmap scan report for scanme.nmap.org (45.33.32.156): 表明這是針對(duì)scanme.nmap.org(其 IP 地址是45.33.32.156) 的掃描報(bào)告。

?Host is up (0.12s latency).: 表示目標(biāo)主機(jī)是活躍的 (在線),并且網(wǎng)絡(luò)延遲大約是 0.12 秒。

?Not shown: 995 closed tcp ports (conn-refused): Nmap 默認(rèn)會(huì)掃描最常見(jiàn)的 1000 個(gè) TCP 端口。這里告訴我們,有 995 個(gè)被掃描的 TCP 端口是關(guān)閉的 (狀態(tài)是conn-refused,意味著連接被拒絕)。

?核心部分來(lái)了!下面列出的是開(kāi)放的端口及其服務(wù):

?22/tcp open ssh: 端口 22 是開(kāi)放的 (open),運(yùn)行的是ssh(Secure Shell) 服務(wù)。

?80/tcp open http: 端口 80 是開(kāi)放的,運(yùn)行的是http(Hypertext Transfer Protocol) 服務(wù),也就是我們常說(shuō)的 Web 服務(wù)。

?9929/tcp open nping-echo: 端口 9929 是開(kāi)放的,運(yùn)行的是nping-echo服務(wù) (Nmap 項(xiàng)目的一個(gè)工具)。

?31337/tcp open Elite: 端口 31337 是開(kāi)放的,被標(biāo)記為Elite(這是一個(gè)歷史悠久的黑客文化端口)。

?Nmap done: 1 IP address (1 host up) scanned in X.XX seconds: 掃描完成,總共掃描了 1 個(gè) IP 地址,發(fā)現(xiàn) 1 個(gè)主機(jī)是活躍的,耗時(shí) X.XX 秒。

小成就解鎖:你成功安裝了 Nmap 并完成了你的第一次網(wǎng)絡(luò)掃描!是不是很有成就感?

通過(guò)這次簡(jiǎn)單的掃描,我們就發(fā)現(xiàn)scanme.nmap.org這個(gè)服務(wù)器對(duì)外開(kāi)放了 SSH、HTTP 等服務(wù)。這些信息對(duì)于了解一個(gè)網(wǎng)絡(luò)系統(tǒng)至關(guān)重要。

在接下來(lái)的章節(jié)中,我們將學(xué)習(xí)如何更精確地指定掃描目標(biāo),以及探索 Nmap 更多強(qiáng)大的掃描功能。

指定掃描目標(biāo) (Specifying Targets)

在上一節(jié)中,我們對(duì)scanme.nmap.org進(jìn)行了一次掃描。但在實(shí)際應(yīng)用中,你需要告訴 Nmap 具體要掃描哪些設(shè)備。Nmap 提供了多種靈活的方式來(lái)指定掃描目標(biāo)。

想象一下,你是一名偵察兵,你需要精確地知道你的偵察范圍。同樣,在使用 Nmap 時(shí),明確目標(biāo)至關(guān)重要。

以下是一些常用的指定目標(biāo)的方法:

指定方式 示例命令 說(shuō)明
單個(gè) IP 地址 nmap 192.168.1.1 直接指定一個(gè) IPv4 地址進(jìn)行掃描。這是最直接的方式。
主機(jī)名 nmap example.com 你也可以使用主機(jī)名。Nmap 會(huì)自動(dòng)解析該主機(jī)名對(duì)應(yīng)的 IP 地址進(jìn)行掃描。
IP 地址范圍 (CIDR) nmap 192.168.1.0/24 使用 CIDR (Classless Inter-Domain Routing) 表示法指定一個(gè)網(wǎng)段。例如,/24表示掃描從192.168.1.0到192.168.1.255的所有 256 個(gè) IP 地址。這是掃描整個(gè)子網(wǎng)的常用方法。
IP 地址范圍 (八位字節(jié)) nmap 192.168.1.100-150 指定 IP 地址的最后一個(gè)八位字節(jié)的范圍。這個(gè)例子會(huì)掃描從192.168.1.100到192.168.1.150的 IP 地址。
nmap 192.168.1,2,3.1-10 你甚至可以指定多個(gè)八位字節(jié)的范圍或列表。這個(gè)例子會(huì)掃描192.168.1.1到192.168.1.10,192.168.2.1到192.168.2.10,以及192.168.3.1到192.168.3.10。
從文件中讀取目標(biāo) nmap -iL targets.txt 使用-iL(Input from List) 參數(shù),Nmap 會(huì)從指定的文件 (targets.txt) 中讀取目標(biāo)列表。文件中的每一行可以是一個(gè) IP 地址、主機(jī)名或范圍。這對(duì)于掃描大量目標(biāo)非常方便。
排除特定目標(biāo) nmap 192.168.1.0/24 --exclude 192.168.1.5 使用--exclude參數(shù)可以從掃描范圍中排除一個(gè)或多個(gè) IP 地址。
nmap 192.168.1.0/24 --excludefile exclude.txt 也可以使用--excludefile參數(shù),從一個(gè)文件中讀取要排除的目標(biāo)列表。

生活化比喻:

?單個(gè) IP 地址:就像給快遞員一個(gè)精確的門(mén)牌號(hào)碼,例如“幸福路 8 號(hào)”。

?主機(jī)名:就像告訴出租車(chē)司機(jī)要去“市中心廣場(chǎng)”,司機(jī)會(huì)知道具體的地址。

?IP 地址范圍 (CIDR):就像告訴郵遞員派送整個(gè)“陽(yáng)光小區(qū)”的信件。

?從文件中讀取目標(biāo):就像你有一張客戶名單,需要挨個(gè)拜訪。

?排除特定目標(biāo):就像在派對(duì)邀請(qǐng)函上注明“除了小明都可以來(lái)”。

重要提示:再次強(qiáng)調(diào),務(wù)必確保你擁有掃描目標(biāo)的明確授權(quán)!未經(jīng)許可掃描他人網(wǎng)絡(luò)是違法的。

思考題 :

1. 如果你想掃描你家路由器(假設(shè) IP 地址是192.168.0.1)和你的筆記本電腦(假設(shè) IP 地址是192.168.0.101),你會(huì)使用什么 Nmap 命令?

2. 如果你們公司有一個(gè)網(wǎng)段是10.0.0.0/24,但其中10.0.0.50是一臺(tái)非常敏感的服務(wù)器,不希望被掃描到,你會(huì)如何設(shè)置 Nmap 命令?

小成就解鎖:你現(xiàn)在知道如何告訴 Nmap 要掃描誰(shuí)了!這是進(jìn)行有效網(wǎng)絡(luò)探測(cè)的關(guān)鍵一步。

掌握了如何指定目標(biāo)后,我們下一步將學(xué)習(xí) Nmap 如何發(fā)現(xiàn)這些目標(biāo)是否真的“活著”(在線)——也就是主機(jī)發(fā)現(xiàn)技術(shù)。

主機(jī)發(fā)現(xiàn) (Host Discovery - Ping Scans)

在我們開(kāi)始對(duì)目標(biāo)進(jìn)行詳細(xì)的端口掃描之前,通常需要先確認(rèn)哪些目標(biāo)主機(jī)是“活著的”,也就是在線并且可以響應(yīng)網(wǎng)絡(luò)請(qǐng)求。這個(gè)過(guò)程就叫做主機(jī)發(fā)現(xiàn) (Host Discovery),有時(shí)也被稱(chēng)為Ping 掃描 (Ping Scan)。

為什么主機(jī)發(fā)現(xiàn)很重要?

想象一下,你要給一個(gè)城市的所有住戶送信,但你事先不知道哪些房子是空置的。如果你挨家挨戶地敲門(mén)(進(jìn)行端口掃描),會(huì)浪費(fèi)大量時(shí)間在那些根本沒(méi)人的空房子上。主機(jī)發(fā)現(xiàn)就像是先派無(wú)人機(jī)偵察一下,看看哪些房子亮著燈,然后再針對(duì)性地去送信。

默認(rèn)情況下,當(dāng)你指定一個(gè)目標(biāo)給 Nmap 時(shí)(例如nmap target.com),Nmap 會(huì)先進(jìn)行主機(jī)發(fā)現(xiàn)。如果主機(jī)被認(rèn)為是離線的,Nmap 通常就不會(huì)再對(duì)其進(jìn)行端口掃描了,這樣可以大大提高掃描效率,尤其是在掃描大范圍網(wǎng)段時(shí)。

常用的主機(jī)發(fā)現(xiàn)技術(shù)

Nmap 使用多種技術(shù)來(lái)判斷主機(jī)是否在線。這些技術(shù)就像是偵察兵的不同工具,各有特點(diǎn):

?ICMP Echo Request (Ping):這是最常見(jiàn)的方式,就像我們平時(shí)在命令行里用ping命令一樣。Nmap 發(fā)送一個(gè) ICMP Echo 請(qǐng)求包到目標(biāo)主機(jī),如果收到 Echo 回復(fù),就認(rèn)為主機(jī)在線。

?TCP SYN Ping:Nmap 向目標(biāo)主機(jī)的特定端口(默認(rèn)是 80 端口,HTTP 服務(wù))發(fā)送一個(gè) TCP SYN 包(請(qǐng)求建立連接的第一個(gè)包)。如果收到 SYN/ACK 包(表示端口開(kāi)放并同意建立連接)或 RST 包(表示端口關(guān)閉但主機(jī)在線),都認(rèn)為主機(jī)在線。

?TCP ACK Ping:Nmap 向目標(biāo)主機(jī)的特定端口(默認(rèn)是 80 端口)發(fā)送一個(gè) TCP ACK 包(確認(rèn)包)。如果收到 RST 包,通常意味著主機(jī)在線,因?yàn)橹挥性诰€的主機(jī)才會(huì)響應(yīng)一個(gè)它未曾期望的 ACK 包。

?UDP Ping:Nmap 向目標(biāo)主機(jī)的特定高位 UDP 端口發(fā)送一個(gè)空的 UDP 包。如果收到 ICMP Port Unreachable 錯(cuò)誤,說(shuō)明主機(jī)在線但該 UDP 端口關(guān)閉。如果沒(méi)有任何響應(yīng),也可能意味著主機(jī)在線(因?yàn)?UDP 是無(wú)連接的,不保證響應(yīng))。

?ARP Ping (僅限局域網(wǎng)):當(dāng) Nmap 掃描與你處于同一個(gè)局域網(wǎng) (LAN) 內(nèi)的目標(biāo)時(shí),它會(huì)使用 ARP (Address Resolution Protocol) 請(qǐng)求來(lái)發(fā)現(xiàn)主機(jī)。ARP 請(qǐng)求直接在鏈路層工作,非??焖俸涂煽俊H绻繕?biāo)主機(jī)回復(fù)了 ARP 響應(yīng),Nmap 就知道它在線了。

-sn(Ping Scan - No port scan) 參數(shù)詳解

如果你只想進(jìn)行主機(jī)發(fā)現(xiàn),而不進(jìn)行后續(xù)的端口掃描,可以使用-sn參數(shù) (可以記作 “Scan No ports” 或者 “Skip port scan”)。

例如,要發(fā)現(xiàn)192.168.1.0/24網(wǎng)段中哪些主機(jī)在線,但不掃描它們的端口,可以使用:

`nmap -sn 192.168.1.0/24`

這個(gè)命令會(huì)列出所有響應(yīng)了 Nmap 主機(jī)發(fā)現(xiàn)探測(cè)的主機(jī),并報(bào)告它們的狀態(tài) (Host is up)。

更多主機(jī)發(fā)現(xiàn)選項(xiàng) (Ping Types)

Nmap 允許你更精細(xì)地控制使用哪些主機(jī)發(fā)現(xiàn)技術(shù)。以下是一些常用的選項(xiàng):

選項(xiàng) 技術(shù)說(shuō)明 示例命令
-PE ICMP Echo Ping (默認(rèn)選項(xiàng)之一,如果 Nmap 有權(quán)限發(fā)送原始套接字) nmap -PE target.com
-PP ICMP Timestamp Ping (發(fā)送時(shí)間戳請(qǐng)求) nmap -PP target.com
-PM ICMP Address Mask Ping (發(fā)送地址掩碼請(qǐng)求) nmap -PM target.com
-PS[portlist] TCP SYN Ping ??梢灾付ǘ丝诹斜恚?PS22,80,443。默認(rèn)是端口 80。 nmap -PS80,443 scanme.nmap.org
-PA[portlist] TCP ACK Ping ??梢灾付ǘ丝诹斜恚J(rèn)是端口 80。 nmap -PA21,22 192.168.1.1
-PU[portlist] UDP Ping ??梢灾付ǘ丝诹斜恚J(rèn)是端口 40125。 nmap -PU53 192.168.1.1
-PR ARP Ping (僅限局域網(wǎng),通常是默認(rèn)行為,如果 Nmap 檢測(cè)到目標(biāo)在本地網(wǎng)絡(luò)) nmap -PR 192.168.1.0/24
-Pn No Ping - Treat all hosts as online. 這個(gè)選項(xiàng)會(huì)跳過(guò)主機(jī)發(fā)現(xiàn)階段,直接對(duì)所有指定的目標(biāo)進(jìn)行端口掃描,即使它們可能并不在線。謹(jǐn)慎使用,因?yàn)樗赡軙?huì)對(duì)大量離線主機(jī)進(jìn)行耗時(shí)的端口掃描。在你知道目標(biāo)肯定在線,但它們可能屏蔽了 Ping 請(qǐng)求時(shí)比較有用。 nmap -Pn scanme.nmap.org

小提示 :

? 在掃描本地網(wǎng)絡(luò)時(shí),ARP Ping (-PR) 通常是最快和最可靠的主機(jī)發(fā)現(xiàn)方法。

? 如果目標(biāo)網(wǎng)絡(luò)有防火墻,它們可能會(huì)阻止某些類(lèi)型的 Ping 請(qǐng)求。這時(shí)你可能需要嘗試不同的 Ping 類(lèi)型 (-PS,-PA,-PU等) 或者使用-Pn(但要小心)。

小成就解鎖:你現(xiàn)在理解了主機(jī)發(fā)現(xiàn)的原理和常用方法!這能幫助你更高效地進(jìn)行網(wǎng)絡(luò)掃描。

思考題 :

1. 如果你想快速檢查你家局域網(wǎng) (192.168.0.0/24) 中有哪些設(shè)備在線,你會(huì)使用哪個(gè) Nmap 命令?為什么?

2. 你正在對(duì)一個(gè)已知的 Web 服務(wù)器進(jìn)行安全評(píng)估,你知道它肯定在線,但它似乎屏蔽了所有 ICMP Ping 請(qǐng)求。為了掃描它的端口,你會(huì)使用哪個(gè) Nmap 參數(shù)來(lái)確保 Nmap 不會(huì)因?yàn)?Ping 不通而跳過(guò)它?

了解了如何發(fā)現(xiàn)活躍主機(jī)后,我們就可以開(kāi)始探索這些主機(jī)上到底開(kāi)放了哪些“大門(mén)”了。下一節(jié),我們將進(jìn)入端口掃描的世界!

教程的第六部分:服務(wù)與版本探測(cè) (Service and Version Detection)

6. 服務(wù)與版本探測(cè) (Service and Version Detection)

僅僅知道端口是開(kāi)放的還不夠,更重要的是了解這些端口上究竟運(yùn)行著什么服務(wù)以及它們的具體版本。這就像我們不僅知道一扇門(mén)開(kāi)著,還想知道門(mén)后是客廳、臥室還是廚房,以及里面的電器是什么品牌和型號(hào)。這些信息對(duì)于評(píng)估潛在的安全風(fēng)險(xiǎn)至關(guān)重要,因?yàn)楹芏嗦┒炊际翘囟ㄓ谲浖哪硞€(gè)版本的。

Nmap通過(guò)向開(kāi)放端口發(fā)送一系列精心構(gòu)造的探測(cè)報(bào)文,并分析返回的數(shù)據(jù)來(lái)識(shí)別服務(wù)和版本信息。這個(gè)過(guò)程有點(diǎn)像一位經(jīng)驗(yàn)豐富的偵探,通過(guò)詢問(wèn)和觀察來(lái)判斷一個(gè)人的職業(yè)和背景。

6.1 為什么服務(wù)與版本探測(cè)如此重要?

?精確識(shí)別服務(wù):標(biāo)準(zhǔn)的端口號(hào)并不總是可靠。例如,一個(gè)Web服務(wù)器可能運(yùn)行在80端口,但也可能運(yùn)行在8080或其他非標(biāo)準(zhǔn)端口。服務(wù)探測(cè)可以幫助我們確認(rèn)端口上運(yùn)行的真實(shí)服務(wù),而不是僅僅依賴(lài)于端口號(hào)的約定。

?發(fā)現(xiàn)潛在漏洞:知道了服務(wù)的具體版本,我們就可以查詢?cè)摪姹臼欠翊嬖谝阎陌踩┒?。例如,如果發(fā)現(xiàn)目標(biāo)運(yùn)行著一個(gè)過(guò)時(shí)的Apache Web服務(wù)器版本,那么它可能容易受到某些已知漏洞的攻擊。

?制定后續(xù)滲透策略:版本信息可以幫助我們選擇更具針對(duì)性的攻擊載荷或利用工具。

6.2 如何進(jìn)行服務(wù)與版本探測(cè)?

Nmap中使用-sV選項(xiàng)來(lái)啟用服務(wù)與版本探測(cè)。這個(gè)選項(xiàng)會(huì)告訴Nmap在完成端口掃描后,對(duì)所有識(shí)別出的開(kāi)放端口進(jìn)行更深入的探測(cè)。

基本命令格式:

nmap -sV 

示例:

讓我們嘗試對(duì)scanme.nmap.org進(jìn)行服務(wù)與版本探測(cè):

`nmap -sV scanme.nmap.org`

預(yù)期輸出解讀:

您會(huì)看到類(lèi)似以下的輸出(具體版本號(hào)可能會(huì)有所不同):

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

關(guān)鍵信息解讀:

?VERSION列:這是-sV選項(xiàng)的核心價(jià)值所在。它顯示了Nmap識(shí)別出的運(yùn)行在對(duì)應(yīng)端口上的服務(wù)的具體名稱(chēng)和版本號(hào)。

? 例如,在22/tcp端口,我們看到OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13,這告訴我們目標(biāo)運(yùn)行的是OpenSSH服務(wù),版本為6.6.1p1,并且是Ubuntu系統(tǒng)上的一個(gè)特定構(gòu)建版本。

? 在80/tcp端口,我們看到Apache httpd 2.4.7 ((Ubuntu)),表明這是一個(gè)Apache Web服務(wù)器,版本為2.4.7,運(yùn)行在Ubuntu上。

? 有時(shí),如果Nmap無(wú)法精確識(shí)別版本,或者服務(wù)比較特殊,版本列可能會(huì)顯示?或者一些描述性信息,如31337/tcp open Elite ?。

?SERVICE列:顯示了Nmap根據(jù)端口號(hào)和探測(cè)結(jié)果初步判斷的服務(wù)類(lèi)型。

?Service Info行:有時(shí)Nmap還會(huì)提供一些額外的服務(wù)相關(guān)信息,比如操作系統(tǒng)類(lèi)型(OS: Linux)和通用平臺(tái)枚舉(CPE)標(biāo)識(shí)符(cpe:/olinux_kernel)。CPE是一種標(biāo)準(zhǔn)化的命名方式,用于唯一標(biāo)識(shí)IT平臺(tái)和產(chǎn)品,這對(duì)于自動(dòng)化漏洞管理非常有用。

6.3 服務(wù)探測(cè)的強(qiáng)度與精細(xì)控制

Nmap的服務(wù)探測(cè)功能非常強(qiáng)大,但也可能比較耗時(shí),因?yàn)樗枰c每個(gè)開(kāi)放端口進(jìn)行多次交互。

?--version-intensity :您可以控制版本探測(cè)的強(qiáng)度,級(jí)別從0到9,默認(rèn)是7。較高的級(jí)別會(huì)嘗試更多的探測(cè)報(bào)文,可能識(shí)別出更冷門(mén)的服務(wù),但也更耗時(shí),并且可能更容易被入侵檢測(cè)系統(tǒng)(IDS)發(fā)現(xiàn)。

例如,進(jìn)行一次輕量級(jí)的版本掃描:

nmap -sV --version-light 

?--version-light(強(qiáng)度2)

?--version-all(強(qiáng)度9)

?--version-trace:如果您想了解Nmap是如何進(jìn)行版本探測(cè)的,可以使用這個(gè)選項(xiàng)。它會(huì)顯示詳細(xì)的探測(cè)過(guò)程和Nmap與目標(biāo)服務(wù)的交互數(shù)據(jù),這對(duì)于調(diào)試或深入理解探測(cè)原理非常有幫助。

思考題:

1. 為什么在進(jìn)行安全評(píng)估時(shí),僅僅知道一個(gè)端口是開(kāi)放的是不夠的?服務(wù)和版本信息能提供哪些額外的價(jià)值?

2. 如果您掃描一個(gè)目標(biāo),發(fā)現(xiàn)其80端口開(kāi)放,SERVICE列顯示為http,但VERSION列顯示為Microsoft IIS httpd 10.0。這與您預(yù)期的Linux服務(wù)器上的Apache服務(wù)不符,這可能意味著什么?您會(huì)如何進(jìn)一步分析?

3. 在什么情況下,您可能會(huì)選擇使用--version-light而不是默認(rèn)強(qiáng)度的服務(wù)探測(cè)?

服務(wù)與版本探測(cè)是Nmap的核心功能之一,它能為我們提供關(guān)于目標(biāo)系統(tǒng)極其寶貴的信息。掌握好這一節(jié)的內(nèi)容,將大大提升您的網(wǎng)絡(luò)偵察能力。

接下來(lái)是第七部分:操作系統(tǒng)探測(cè) (Operating System Detection)。

7. 操作系統(tǒng)探測(cè) (Operating System Detection)

了解目標(biāo)主機(jī)運(yùn)行的操作系統(tǒng)是網(wǎng)絡(luò)偵察中的另一個(gè)關(guān)鍵環(huán)節(jié)。不同的操作系統(tǒng)有其獨(dú)特的特性、默認(rèn)配置和潛在的漏洞。Nmap可以通過(guò)分析目標(biāo)主機(jī)對(duì)特定TCP/IP探測(cè)報(bào)文的響應(yīng)方式來(lái)猜測(cè)其操作系統(tǒng)。

想象一下,不同國(guó)家的人說(shuō)同一種語(yǔ)言時(shí)可能會(huì)有不同的口音和用詞習(xí)慣。Nmap就像一位語(yǔ)言學(xué)家,通過(guò)分析這些細(xì)微的“網(wǎng)絡(luò)口音”來(lái)判斷對(duì)方的“國(guó)籍”(操作系統(tǒng))。

7.1 為什么操作系統(tǒng)探測(cè)很重要?

?定制攻擊策略:針對(duì)特定操作系統(tǒng)的漏洞利用成功率更高。例如,一個(gè)針對(duì)Windows SMB服務(wù)的漏洞利用,對(duì)Linux系統(tǒng)就無(wú)效。

?了解系統(tǒng)環(huán)境:操作系統(tǒng)信息有助于我們推斷目標(biāo)可能安裝的軟件、默認(rèn)服務(wù)以及安全配置。

?評(píng)估安全基線:某些操作系統(tǒng)版本可能已知存在未修補(bǔ)的漏洞,或者默認(rèn)安全設(shè)置較弱。

7.2 如何進(jìn)行操作系統(tǒng)探測(cè)?

Nmap中使用-O(大寫(xiě)字母O) 選項(xiàng)來(lái)啟用操作系統(tǒng)探測(cè)。為了獲得準(zhǔn)確的結(jié)果,Nmap通常需要找到至少一個(gè)開(kāi)放和一個(gè)關(guān)閉的TCP端口。

基本命令格式:

nmap -O 

示例:

讓我們嘗試對(duì)scanme.nmap.org進(jìn)行操作系統(tǒng)探測(cè):

`nmap -O scanme.nmap.org`

預(yù)期輸出解讀:

您可能會(huì)看到類(lèi)似以下的輸出:

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

關(guān)鍵信息解讀:

?Device type:Nmap嘗試猜測(cè)設(shè)備類(lèi)型,例如general purpose(通用服務(wù)器/工作站),router,printer等。

?Running:Nmap列出的最有可能的操作系統(tǒng)。這里可能是具體的發(fā)行版和內(nèi)核版本,例如Linux 3.X|4.X表示可能是Linux內(nèi)核3系列或4系列。

?OS CPE:操作系統(tǒng)的通用平臺(tái)枚舉(CPE)標(biāo)識(shí)符。這對(duì)于自動(dòng)化腳本和漏洞數(shù)據(jù)庫(kù)查詢非常有用。

?OS details:更詳細(xì)的操作系統(tǒng)猜測(cè)信息。Nmap會(huì)根據(jù)其指紋數(shù)據(jù)庫(kù)中的匹配情況給出最可能的幾個(gè)候選項(xiàng)。例如Linux 3.2 - 4.9。

重要提示:操作系統(tǒng)探測(cè)并非100%準(zhǔn)確。它依賴(lài)于目標(biāo)主機(jī)對(duì)特定探測(cè)報(bào)文的響應(yīng),而這些響應(yīng)可能會(huì)受到防火墻、負(fù)載均衡器或操作系統(tǒng)本身配置的影響。如果Nmap無(wú)法獲得足夠的信息,它可能無(wú)法給出準(zhǔn)確的猜測(cè),或者會(huì)給出多個(gè)可能的選項(xiàng)。

7.3 操作系統(tǒng)探測(cè)的進(jìn)階選項(xiàng)

?--osscan-limit:如果目標(biāo)主機(jī)沒(méi)有任何開(kāi)放和關(guān)閉的TCP端口符合Nmap進(jìn)行操作系統(tǒng)探測(cè)的要求,Nmap通常會(huì)跳過(guò)對(duì)該主機(jī)的操作系統(tǒng)探測(cè)。使用此選項(xiàng)可以強(qiáng)制Nmap即使在不理想的情況下也嘗試進(jìn)行探測(cè)。

?--osscan-guess--fuzzy:當(dāng)Nmap的操作系統(tǒng)探測(cè)結(jié)果不理想時(shí),它會(huì)嘗試進(jìn)行更積極(或說(shuō)更模糊)的猜測(cè)。這可能會(huì)提高識(shí)別率,但也可能導(dǎo)致錯(cuò)誤的猜測(cè)。

? 可以把它想象成,如果初步判斷不出來(lái),Nmap會(huì)說(shuō):“嗯,雖然細(xì)節(jié)對(duì)不上,但它看起來(lái)很像一個(gè)Linux系統(tǒng)?!?/p>

?--max-os-tries :設(shè)置Nmap在放棄操作系統(tǒng)探測(cè)前嘗試的次數(shù)。默認(rèn)值通常是合理的,但如果網(wǎng)絡(luò)條件非常差,或者目標(biāo)響應(yīng)很慢,可以適當(dāng)增加此值。

7.4 操作系統(tǒng)探測(cè)的原理簡(jiǎn)述 (選讀)

Nmap的操作系統(tǒng)探測(cè)技術(shù)非常復(fù)雜,它基于一個(gè)龐大的指紋數(shù)據(jù)庫(kù) (nmap-os-db)。這個(gè)數(shù)據(jù)庫(kù)包含了數(shù)千種已知操作系統(tǒng)和服務(wù)對(duì)特定TCP/IP探測(cè)報(bào)文的響應(yīng)特征。

Nmap會(huì)向目標(biāo)發(fā)送一系列精心設(shè)計(jì)的TCP、UDP和ICMP探測(cè)報(bào)文,并分析以下特征:

?TCP ISN (Initial Sequence Number) 采樣:不同操作系統(tǒng)生成TCP初始序列號(hào)的方式可能不同。

?TCP 選項(xiàng)支持和順序:例如窗口縮放選項(xiàng)、時(shí)間戳選項(xiàng)等。

?IP ID 采樣:IP包頭中的ID字段的生成方式。

?顯式擁塞通知 (ECN) 支持

?對(duì)特定標(biāo)志位組合的響應(yīng):例如,對(duì)SYN/FIN/URG/PSH同時(shí)設(shè)置的TCP報(bào)文的響應(yīng)。

?ICMP 報(bào)文處理:例如,對(duì)不可達(dá)端口的ICMP響應(yīng)。

Nmap收集這些響應(yīng)特征,然后與數(shù)據(jù)庫(kù)中的指紋進(jìn)行比對(duì),找出最匹配的操作系統(tǒng)。

思考題:

1. 在哪些情況下,操作系統(tǒng)探測(cè)的結(jié)果可能不準(zhǔn)確?你會(huì)如何應(yīng)對(duì)這種情況?

2. 如果你掃描一個(gè)網(wǎng)絡(luò),發(fā)現(xiàn)大部分主機(jī)都是Windows系統(tǒng),但有一臺(tái)主機(jī)Nmap無(wú)法識(shí)別其操作系統(tǒng),或者給出了非常模糊的猜測(cè)(例如unknown device)。這可能暗示了什么?

3.--osscan-guess選項(xiàng)的潛在好處和風(fēng)險(xiǎn)是什么?

操作系統(tǒng)探測(cè)是Nmap工具箱中非常強(qiáng)大的一個(gè)功能,它能幫助我們更全面地了解目標(biāo)網(wǎng)絡(luò)環(huán)境。熟練運(yùn)用它,將使您的安全評(píng)估工作更加高效和精準(zhǔn)。

我們現(xiàn)在進(jìn)入Nmap中一個(gè)非常強(qiáng)大且靈活的部分——Nmap腳本引擎。這部分將極大地?cái)U(kuò)展Nmap的功能。

8. Nmap腳本引擎 (NSE - Nmap Scripting Engine)

Nmap腳本引擎(NSE)是Nmap最強(qiáng)大的功能之一。它允許用戶編寫(xiě)(或使用現(xiàn)有的)Lua腳本來(lái)自動(dòng)化各種網(wǎng)絡(luò)任務(wù)。這些腳本可以用于更高級(jí)的漏洞檢測(cè)、更深入的服務(wù)發(fā)現(xiàn)、利用某些已知的漏洞、收集更多目標(biāo)信息等等。

想象一下,Nmap本身是一個(gè)多功能工具箱,而NSE腳本就是各種定制的、專(zhuān)用的工具頭,可以裝在工具箱的工具上,執(zhí)行特定的高級(jí)任務(wù)。

8.1 NSE能做什么?

NSE腳本的用途非常廣泛,Nmap自帶了數(shù)百個(gè)腳本,涵蓋以下主要類(lèi)別:

?auth:嘗試?yán)@過(guò)認(rèn)證機(jī)制或獲取目標(biāo)系統(tǒng)上的憑據(jù)(例如,嘗試默認(rèn)密碼)。

?broadcast:利用廣播發(fā)現(xiàn)網(wǎng)絡(luò)中的主機(jī)和服務(wù),收集信息。

?brute:對(duì)服務(wù)進(jìn)行暴力破解(例如,F(xiàn)TP、SSH、Telnet的用戶名和密碼)。

?default:一組被認(rèn)為是安全且有用的默認(rèn)腳本,通常與-sC或-A選項(xiàng)一起運(yùn)行。

?discovery:嘗試發(fā)現(xiàn)關(guān)于網(wǎng)絡(luò)的更多信息(例如,DNS服務(wù)器、SNMP信息、目錄服務(wù)等)。

?dos:檢測(cè)或利用拒絕服務(wù)漏洞(使用時(shí)需格外小心,并獲得授權(quán))。

?exploit:嘗試?yán)靡阎陌踩┒矗ㄍ瑯?,使用時(shí)需格外小心,并獲得授權(quán))。

?external:與第三方服務(wù)交互以獲取信息(例如,查詢Whois數(shù)據(jù)庫(kù)、Shodan等)。

?fuzzer:向目標(biāo)發(fā)送異?;螂S機(jī)數(shù)據(jù),以測(cè)試其健壯性或發(fā)現(xiàn)潛在漏洞。

?intrusive:被認(rèn)為具有侵入性,可能導(dǎo)致目標(biāo)系統(tǒng)崩潰或留下明顯痕跡的腳本(不建議在未授權(quán)的情況下使用)。

?malware:檢測(cè)目標(biāo)系統(tǒng)上是否存在已知的惡意軟件或后門(mén)。

?safe:被認(rèn)為是安全的腳本,不太可能對(duì)目標(biāo)系統(tǒng)造成負(fù)面影響。

?version:用于增強(qiáng)版本探測(cè)-sV的腳本,嘗試獲取更詳細(xì)的服務(wù)版本信息。

?vuln:專(zhuān)門(mén)用于檢測(cè)已知漏洞的腳本。

8.2 如何使用NSE腳本?

主要通過(guò)--script選項(xiàng)來(lái)指定要運(yùn)行的腳本或腳本類(lèi)別。

基本命令格式:

?運(yùn)行單個(gè)腳本:

nmap --script