Linux下NMAP常用掃描簡(jiǎn)介(一)
我們之前在 NMAP 的安裝一文中,列出了 10 種不同的 ZeNMAP 掃描模式。大多數(shù)的模式使用了各種參數(shù)。各種參數(shù)代表了執(zhí)行不同的掃描模式。這篇文章將介紹其中的四種通用的掃描類型。
四種通用掃描類型
下面列出了最常使用的四種掃描類型:
- PING 掃描 (-sP)
- UDP 掃描 (-sU)
- TCP SYN 掃描 (-sS)
- TCP Connect() 掃描 (-sT)
當(dāng)我們利用 NMAP 來(lái)執(zhí)行掃描的時(shí)候,這四種掃描類型是我們需要熟練掌握的。更重要的是需要知道這些命令做了什么并且需要知道這些命令是怎么做的。本文將介紹 PING 掃描和 UDP 掃描。在之后的文中會(huì)介紹 TCP 掃描。
PING 掃描 (-sP)
某些掃描會(huì)造成網(wǎng)絡(luò)擁塞,然而 Ping 掃描在網(wǎng)絡(luò)中最多只會(huì)產(chǎn)生兩個(gè)包。當(dāng)然這兩個(gè)包不包括可能需要的 DNS 搜索和 ARP 請(qǐng)求。每個(gè)被掃描的 IP 最少只需要一個(gè)包來(lái)完成 Ping 掃描。
通常 Ping 掃描是用來(lái)查看在指定的 IP 地址上是否有在線的主機(jī)存在。例如,當(dāng)我擁有網(wǎng)絡(luò)連接卻連不上一臺(tái)指定的網(wǎng)絡(luò)服務(wù)器的時(shí)候,我就可以使用 PING 來(lái)判斷這臺(tái)服務(wù)器是否在線。PING 同樣也可以用來(lái)驗(yàn)證我的當(dāng)前設(shè)備與網(wǎng)絡(luò)服務(wù)器之間的路由是否正常。
注意: 當(dāng)我們討論 TCP/IP 的時(shí)候,相關(guān)信息在使用 TCP/IP 協(xié)議的互聯(lián)網(wǎng)與局域網(wǎng)(LAN)中都是相當(dāng)有用的。這些程序都能工作。同樣在廣域網(wǎng)(WAN)也能工作得相當(dāng)好。
當(dāng)參數(shù)給出的是一個(gè)域名的時(shí)候,我們就需要域名解析服務(wù)來(lái)找到相對(duì)應(yīng)的 IP 地址,這個(gè)時(shí)候?qū)?huì)生成一些額外的包。例如,當(dāng)我們執(zhí)行 ping linuxforum.com 的時(shí)候,需要首先請(qǐng)求域名(linuxforum.com)的 IP 地址(98.124.199.63)。當(dāng)我們執(zhí)行 ping 98.124.199.63 的時(shí)候 DNS 查詢就不需要了。當(dāng) MAC 地址未知的時(shí)候,就需要發(fā)送 ARP 請(qǐng)求來(lái)獲取指定 IP 地址的 MAC 地址了(LCTT 譯注:這里的指定 IP 地址,未必是目的 IP)。
Ping 命令會(huì)向指定的 IP 地址發(fā)送一個(gè)英特網(wǎng)信息控制協(xié)議(ICMP)包。這個(gè)包是需要響應(yīng)的 ICMP Echo 請(qǐng)求。當(dāng)服務(wù)器系統(tǒng)在線的狀態(tài)下我們會(huì)得到一個(gè)響應(yīng)包。當(dāng)兩個(gè)系統(tǒng)之間存在防火墻的時(shí)候,PING 請(qǐng)求包可能會(huì)被防火墻丟棄。一些服務(wù)器也會(huì)被配置成不響應(yīng) PING 請(qǐng)求來(lái)避免可能發(fā)生的死亡之 PING。(LCTT 譯注:現(xiàn)在的操作系統(tǒng)似乎不太可能)
注意: 死亡之 PING 是一種惡意構(gòu)造的 PING 包當(dāng)它被發(fā)送到系統(tǒng)的時(shí)候,會(huì)造成被打開的連接等待一個(gè) rest 包。一旦有一堆這樣的惡意請(qǐng)求被系統(tǒng)響應(yīng),由于所有的可用連接都已經(jīng)被打開,所以系統(tǒng)將會(huì)拒絕所有其它的連接。技術(shù)上來(lái)說(shuō)這種狀態(tài)下的系統(tǒng)就是不可達(dá)的。
當(dāng)系統(tǒng)收到 ICMP Echo 請(qǐng)求后它將會(huì)返回一個(gè) ICMP Echo 響應(yīng)。當(dāng)源系統(tǒng)收到 ICMP Echo 響應(yīng)后我們就能知道目的系統(tǒng)是在線可達(dá)的。
使用 NMAP 的時(shí)候你可以指定單個(gè) IP 地址也可以指定某個(gè) IP 地址段。當(dāng)被指定為 PING 掃描(-sP)的時(shí)候,會(huì)對(duì)每一個(gè) IP 地址執(zhí)行 PING 命令。
在圖 1 中你可以看到我執(zhí)行 nmap -sP 10.0.0.1-10 命令后的結(jié)果。程序會(huì)試著聯(lián)系 IP 地址 10.0.0.1 到 10.0.0.10 之間的每個(gè)系統(tǒng)。對(duì)每個(gè) IP 地址都要發(fā)出三個(gè) ARP 請(qǐng)求。在我們的例子中發(fā)出了三十個(gè)請(qǐng)求,這 10 個(gè) IP 地址里面有兩個(gè)有回應(yīng)。(LCTT 譯注:此處原文存疑。)
圖 1
圖 2 中展示了網(wǎng)絡(luò)上另一臺(tái)計(jì)算機(jī)利用 Wireshark 抓取的發(fā)出的請(qǐng)求——沒(méi)錯(cuò),是在 Windows 系統(tǒng)下完成這次抓取的。***行展示了發(fā)出的***條請(qǐng)求,廣播請(qǐng)求的是 IP 地址 10.0.0.2 對(duì)應(yīng) MAC 地址。由于 NMAP 是在 10.0.0.1 這臺(tái)機(jī)器上執(zhí)行的,因此 10.0.0.1 被略過(guò)了。由于本機(jī) IP 地址被略過(guò),我們現(xiàn)在可以看到總共只發(fā)出了 27 個(gè) ARP 請(qǐng)求。第二行展示了 10.0.0.2 這臺(tái)機(jī)器的 ARP 響應(yīng)。第三行到第十行是其它八個(gè) IP 地址的 ARP 請(qǐng)求。第十一行是由于 10.0.0.2 沒(méi)有收到請(qǐng)求系統(tǒng)(10.0.0.1)的反饋所以(重新)發(fā)送的另一個(gè) ARP 響應(yīng)。第十二行是源系統(tǒng)向 10.0.0.2 發(fā)起的 HTTP 連接的 ‘SYN’ 和 Sequence 0。第十三行和第十四行的兩次 Restart(RST)和 Synchronize(SYN)響應(yīng)是用來(lái)關(guān)閉(和重發(fā))第十二行所打開的連接的。注意 Sequence ID 是 ‘1’ - 是源 Sequence ID + 1。第十五行開始就是類似相同的內(nèi)容。(LCTT 譯注:此處原文有誤,根據(jù)情況已經(jīng)修改。)
圖 2
回到圖 1 中我們可以看到有兩臺(tái)主機(jī)在線。其中一臺(tái)是本機(jī)(10.0.0.1)另一臺(tái)是(10.0.0.2)。整個(gè)掃描花費(fèi)了 14.40 秒。
PING 掃描是一種用來(lái)發(fā)現(xiàn)在線主機(jī)的快速掃描方式。掃描結(jié)果中沒(méi)有關(guān)于網(wǎng)絡(luò)、系統(tǒng)的其它信息。這是一種較好的初步發(fā)現(xiàn)網(wǎng)絡(luò)上在線主機(jī)的方式,接著你就可以針對(duì)在線系統(tǒng)執(zhí)行更加復(fù)雜的掃描了。你可能還會(huì)發(fā)現(xiàn)一些不應(yīng)該出現(xiàn)在網(wǎng)絡(luò)上的系統(tǒng)。出現(xiàn)在網(wǎng)絡(luò)上的流氓軟件是很危險(xiǎn)的,他們可以很輕易的收集內(nèi)網(wǎng)信息和相關(guān)的系統(tǒng)信息。
一旦你獲得了在線系統(tǒng)的列表,你就可以使用 UDP 掃描來(lái)查看哪些端口是可能開啟了的。
UDP 掃描 (-sU)
現(xiàn)在你已經(jīng)知道了有那些系統(tǒng)是在線的,你的掃描就可以聚焦在這些 IP 地址之上。在整個(gè)網(wǎng)絡(luò)上執(zhí)行大量的沒(méi)有針對(duì)性的掃描活動(dòng)可不是一個(gè)好主意,系統(tǒng)管理員可以使用程序來(lái)監(jiān)控網(wǎng)絡(luò)流量當(dāng)有大量異?;顒?dòng)發(fā)生的時(shí)候就會(huì)觸發(fā)警報(bào)。
用戶數(shù)據(jù)報(bào)協(xié)議(UDP)在發(fā)現(xiàn)在線系統(tǒng)的開放端口方面十分有用。由于 UDP 不是一個(gè)面向連接的協(xié)議,因此是不需要響應(yīng)的。這種掃描方式可以向指定的端口發(fā)送一個(gè) UDP 包。如果目標(biāo)系統(tǒng)沒(méi)有回應(yīng)那么這個(gè)端口可能是關(guān)閉的也可能是被過(guò)濾了的。如果端口是開放狀態(tài)的那么應(yīng)該會(huì)有一個(gè)響應(yīng)。在大多數(shù)的情況下目標(biāo)系統(tǒng)會(huì)返回一個(gè) ICMP 信息說(shuō)端口不可達(dá)。ICMP 信息讓 NMAP 知道端口是被關(guān)閉了。如果端口是開啟的狀態(tài)那么目標(biāo)系統(tǒng)應(yīng)該響應(yīng) ICMP 信息來(lái)告知 NMAP 端口可達(dá)。
注意: 只有最前面的 1024 個(gè)常用端口會(huì)被掃描。(LCTT 譯注:這里將 1000 改成了1024,因?yàn)槭謨?cè)中寫的是默認(rèn)掃描 1 到 1024 端口)在后面的文章中我們會(huì)介紹如何進(jìn)行深度掃描。
由于我知道 10.0.0.2 這個(gè)主機(jī)是在線的,因此我只會(huì)針對(duì)這個(gè) IP 地址來(lái)執(zhí)行掃描。掃描過(guò)程中總共收發(fā)了 3278 個(gè)包。sudo nmap -sU 10.0.0.2 這個(gè)命令的輸出結(jié)果在圖 3 中展現(xiàn)。
圖 3
在這副圖中你可以看見端口 137(netbios-ns)被發(fā)現(xiàn)是開放的。在圖 4 中展示了 Wireshark 抓包的結(jié)果。不能看到所有抓取的包,但是可以看到一長(zhǎng)串的 UDP 包。
圖 4
如果我把目標(biāo)系統(tǒng)上的防火墻關(guān)閉之后會(huì)發(fā)生什么呢?我的結(jié)果有那么一點(diǎn)的不同。NMAP 命令的執(zhí)行結(jié)果在圖 5 中展示。
圖 5
注意: 當(dāng)你執(zhí)行 UDP 掃描的時(shí)候是需要 root 權(quán)限的。
會(huì)產(chǎn)生大量的包是由于我們使用了 UDP。當(dāng) NMAP 發(fā)送 UDP 請(qǐng)求時(shí)它是不保證數(shù)據(jù)包會(huì)被收到的。因?yàn)閿?shù)據(jù)包可能會(huì)在中途丟失因此它會(huì)多次發(fā)送請(qǐng)求。