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