Linux下NMAP常用掃描簡介(二)
在我們之前的 NMAP 安裝一文中,列出了 10 種不同的 ZeNMAP 掃描模式,大多數(shù)的模式使用了不同的參數(shù)。各種不同參數(shù)代表執(zhí)行不同的掃描模式。之前我們介紹過兩種掃描類型 PING 掃描 和 UDP 掃描,這篇文章將介紹***剩下的兩種常用掃描類型。
四種通用掃描類型
下面列出了最常用的四種掃描類型:
- PING 掃描(-sP)
- TCP SYN 掃描(-sS)
- TCP Connect() 掃描(-sT)
- UDP 掃描(-sU)
當我們利用 NMAP 來執(zhí)行掃描的時候,這四種掃描類型是我們需要熟練掌握的。更重要的是需要知道這些命令做了什么,并且需要知道這些命令是怎么做的。在這篇文章中將介紹兩種 TCP 掃描 — TCP SYN 掃描和 TCP Connect() 掃描。
TCP SYN 掃描 (-sS)
TCP SYN 掃描是默認的 NMAP 掃描方式。為了運行 TCP SYN 掃描,你需要有 Root 權限。
TCP SYN 掃描的目的是找到被掃描系統(tǒng)上的已開啟端口。使用 NMAP 掃描可以掃描在防火墻另一側的系統(tǒng)。當掃描通過防火墻時,掃描時間會延長,因為數(shù)據(jù)包會變慢。
TCP SYN 掃描的工作方式是啟動一個“三次握手”。正如在另一篇文章中所述,“三次握手”發(fā)生在兩個系統(tǒng)之間。首先,源系統(tǒng)發(fā)送一個包到目標系統(tǒng),這是一個同步(SYN)請求。然后,目標系統(tǒng)將通過同步/應答(SYN/ACK)響應。接下來,源系統(tǒng)將通過應答(ACK)來響應,從而建立起一個通信連接,然后,可以在兩個系統(tǒng)之間傳輸數(shù)據(jù)。
TCP SYN 掃描通過執(zhí)行下面的步驟來進行工作:
- 源系統(tǒng)向目標系統(tǒng)發(fā)送一個同步請求,該請求中包含一個端口號。
- 如果添加在上一步中的所請求的端口號是開啟的,那么目標系統(tǒng)將通過同步/應答(SYN/ACK)來響應源系統(tǒng)。
- 源系統(tǒng)通過重置(RST)來響應目標系統(tǒng),從而斷開連接。
- 目標系統(tǒng)可以通過重置/應答(RST/ACK)來響應源系統(tǒng)。
這種連接已經(jīng)開始建立,所以這被認為是半開放連接。因為連接狀態(tài)是由 NMAP 來管理的,所以你需要有 Root 權限。
如果被掃描的端口是關閉的,那么將執(zhí)行下面的步驟:
- 源系統(tǒng)發(fā)送一個同步(SYN)請求到目標系統(tǒng),該請求中包含一個端口號。
- 目標系統(tǒng)通過重置(RST)響應源系統(tǒng),因為該端口是關閉的。
如果目標系統(tǒng)處于防火墻之后,那么 ICMP 傳輸或響應會被防火墻禁止,此時,會執(zhí)行下面的步驟:
- 源系統(tǒng)發(fā)送一個同步(SYN)請求到目標系統(tǒng),該請求中包含一個端口號。
- 沒有任何響應,因為請求被防火墻過濾了。
在這種情況下,端口可能是被過濾、或者可能打開、或者可能沒打開。防火墻可以設置禁止指定端口所有包的傳出。防火墻可以禁止所有傳入某個指定端口的包,因此目標系統(tǒng)不會接收到請求。
注:無響應可能發(fā)生在一個啟用了防火墻的系統(tǒng)上。即使在本地網(wǎng)絡,你也可能會發(fā)現(xiàn)被過濾的端口。
我將向 圖片1那樣執(zhí)行對單一系統(tǒng)(10.0.0.2)的 TCP SYN 掃描。使用命令 sudo nmap -sS <IP 地址> 來執(zhí)行掃描。<IP 地址>可以改為一個單一 IP 地址,像圖片1那樣,也可以使用一組 IP 地址。
圖片1
你可以看到它表明 997 個被過濾端口沒有顯示在下面。NMAP 找到兩個開啟的端口:139 和 445 。
注:請記住,NMAP 只會掃描絕大多數(shù)熟知的 1000 多個端口。以后,我們會介紹可以掃描所有端口或者指定端口的其它掃描。
該掃描會被 WireShark 俘獲,正如圖片2所展示的那樣。在這兒,你可以看到對目標系統(tǒng)的初始地址解析協(xié)議(ARP)請求。在 ARP 請求下面的是一長列到達目標系統(tǒng)端口的 TCP 請求。第 4 行是到達 http-alt 端口(8080)。源系統(tǒng)的端口號為 47128 。正如圖片3 展示的,許多 SYN 請求只有在做出響應以后才會發(fā)送。
圖片2
圖片3
在圖片3的第 50 行和第 51 行,你可以看到,重置(RST)包被發(fā)送給了目標系統(tǒng)。第 53 行和第 55 行顯示目標系統(tǒng)的 RST/ACK(重置/應答)。第 50 行是針對 ‘microsoft-ds’ 端口(445),第 51 行是針對 ‘netbios-ssn’ 端口(135),我們可以看到,這兩個端口都是打開的。(LCTT 譯注:在 50 行和 51 行之前,目標系統(tǒng)發(fā)回了 SYN/ACK 響應,表示端口打開。)除了這些端口,沒有其他 ACK(應答)是來自目標系統(tǒng)的。每一個請求均可發(fā)送超過 1000 次。
正如圖片4所展示的,目標系統(tǒng)是 Windows 系統(tǒng),我關閉了系統(tǒng)防火墻,然后再次執(zhí)行掃描。現(xiàn)在,我們看到了 997 個已關閉端口不是 997 個被過濾端口。目標系統(tǒng)上的 135 端口之前被防火墻禁止了,現(xiàn)在也是開啟的。
圖片4
TCP Connect() 掃描 (-sT)
盡管 TCP SYN 掃描需要 Root 權限,但 TCP Connect() 掃描并不需要。在這種掃描中會執(zhí)行一個完整的“三次握手”。因為不需要 Root 權限,所以在無法獲取 Root 權限的網(wǎng)絡上,這種掃描非常有用。
TCP Connect() 掃描的工作方式也是執(zhí)行“三次握手”。正如上面描述過的,“三次握手”發(fā)生在兩個系統(tǒng)之間。源系統(tǒng)發(fā)送一個同步(SYN)請求到目標系統(tǒng)。然后,目標系統(tǒng)將通過同步/應答(SYN/ACK)來響應。***,源系統(tǒng)通過應答(ACK)來響應,從而建立起連接,然后便可在兩個系統(tǒng)之間傳輸數(shù)據(jù)。
TCP Connect 掃描通過執(zhí)行下面的步驟來工作:
- 源系統(tǒng)發(fā)送一個同步(SYN)請求到目標系統(tǒng),該請求中包含一個端口號。
- 如果上一步所請求的端口是開啟的,那么目標系統(tǒng)將通過同步/應答(SYN/ACK)來響應源系統(tǒng)。
- 源系統(tǒng)通過應答(ACK)來響應目標系統(tǒng)從而完成會話創(chuàng)建。
- 然后,源系統(tǒng)向目標系統(tǒng)發(fā)送一個重置(RST)包來關閉會話。
- 目標系統(tǒng)可以通過同步/應答(SYN/ACK)來響應源系統(tǒng)。
若步驟 2 執(zhí)行了,那么源系統(tǒng)就知道在步驟 1 中的指定端口是開啟的。
如果端口是關閉的,那么會發(fā)生和 TCP SYN 掃描相同的事。在步驟 2 中,目標系統(tǒng)將會通過一個重置(RST)包來響應源系統(tǒng)。
可以使用命令 nmap -sT <IP 地址> 來執(zhí)行掃描。<IP 地址>可以改為一個單一 IP 地址,像圖片5那樣,或者使用一組 IP 地址。
TCP Connect() 掃描的結果可以在圖片5中看到。在這兒,你可以看到,有兩個已開啟端口:139 和 445,這和 TCP SYN 掃描的發(fā)現(xiàn)一樣。端口 80 是關閉的。剩下沒有顯示的端口是被過濾了的。
圖片5
讓我們關閉防火墻以后再重新掃描一次,掃描結果展示在圖片6中。
圖片6
關閉防火墻以后,我們可以看到,更多的端口被發(fā)現(xiàn)了。就和 TCP SYN 掃描一樣,關閉防火墻以后,發(fā)現(xiàn) 139 端口和 445 端口是開啟的。我們還發(fā)現(xiàn),端口 2869 也是開啟的。也發(fā)現(xiàn)有 996 個端口是關閉的?,F(xiàn)在,端口 80 是 996 個已關閉端口的一部分 — 不再被防火墻過濾。
在一些情況下, TCP Connect() 掃描可以在一個更短的時間內完成。和 TCP SYN 掃描相比,TCP Connect() 掃描也可以找到更多的已開啟端口