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