NMAP 常用掃描簡介(二)
TCP SYN 掃描 (-sS)
TCP SYN 掃描是默認的 NMAP 掃描方式。為了運行 TCP SYN 掃描,你需要有 Root 許可權。
TCP SYN 掃描的目的是找到被掃描系統上的已開啟埠。使用 NMAP 掃描可以掃描在防火牆另一側的系統。當掃描通過防火牆時,掃描時間會延長,因為數據包會變慢。
TCP SYN 掃描的工作方式是啟動一個「三次握手」。正如在另一篇文章中所述,「三次握手」發生在兩個系統之間。首先,源系統發送一個包到目標系統,這是一個同步(SYN)請求。然後,目標系統將通過同步/應答(SYN/ACK)響應。接下來,源系統將通過應答(ACK)來響應,從而建立起一個通信連接,然後,可以在兩個系統之間傳輸數據。
TCP SYN 掃描通過執行下面的步驟來進行工作:
- 源系統向目標系統發送一個同步請求,該請求中包含一個埠號。
- 如果添加在上一步中的所請求的埠號是開啟的,那麼目標系統將通過同步/應答(SYN/ACK)來響應源系統。
- 源系統通過重置(RST)來響應目標系統,從而斷開連接。
- 目標系統可以通過重置/應答(RST/ACK)來響應源系統。
這種連接已經開始建立,所以這被認為是半開放連接。因為連接狀態是由 NMAP 來管理的,所以你需要有 Root 許可權。
如果被掃描的埠是關閉的,那麼將執行下面的步驟:
- 源系統發送一個同步(SYN)請求到目標系統,該請求中包含一個埠號。
- 目標系統通過重置(RST)響應源系統,因為該埠是關閉的。
如果目標系統處於防火牆之後,那麼 ICMP 傳輸或響應會被防火牆禁止,此時,會執行下面的步驟:
- 源系統發送一個同步(SYN)請求到目標系統,該請求中包含一個埠號。
- 沒有任何響應,因為請求被防火牆過濾了。
在這種情況下,埠可能是被過濾、或者可能打開、或者可能沒打開。防火牆可以設置禁止指定埠所有包的傳出。防火牆可以禁止所有傳入某個指定埠的包,因此目標系統不會接收到請求。
註:無響應可能發生在一個啟用了防火牆的系統上。即使在本地網路,你也可能會發現被過濾的埠。
我將向 圖片1那樣執行對單一系統(10.0.0.2)的 TCP SYN 掃描。使用命令 sudo nmap -sS <IP 地址>
來執行掃描。<IP 地址>
可以改為一個單一 IP 地址,像圖片1那樣,也可以使用一組 IP 地址。
圖片1
你可以看到它表明 997 個被過濾埠沒有顯示在下面。NMAP 找到兩個開啟的埠:139 和 445 。
註:請記住,NMAP 只會掃描絕大多數熟知的 1000 多個埠。以後,我們會介紹可以掃描所有埠或者指定埠的其它掃描。
該掃描會被 WireShark 俘獲,正如圖片2所展示的那樣。在這兒,你可以看到對目標系統的初始地址解析協議(ARP)請求。在 ARP 請求下面的是一長列到達目標系統埠的 TCP 請求。第 4 行是到達 http-alt
埠(8080)。源系統的埠號為 47128 。正如圖片3 展示的,許多 SYN 請求只有在做出響應以後才會發送。
圖片2
圖片3
在圖片3的第 50 行和第 51 行,你可以看到,重置(RST)包被發送給了目標系統。第 53 行和第 55 行顯示目標系統的 RST/ACK(重置/應答)。第 50 行是針對 『microsoft-ds』 埠(445),第 51 行是針對 『netbios-ssn』 埠(135),我們可以看到,這兩個埠都是打開的。(LCTT 譯註:在 50 行和 51 行之前,目標系統發回了 SYN/ACK 響應,表示埠打開。)除了這些埠,沒有其他 ACK(應答)是來自目標系統的。每一個請求均可發送超過 1000 次。
正如圖片4所展示的,目標系統是 Windows 系統,我關閉了系統防火牆,然後再次執行掃描。現在,我們看到了 997 個已關閉埠不是 997 個被過濾埠。目標系統上的 135 埠之前被防火牆禁止了,現在也是開啟的。
圖片4
TCP Connect() 掃描 (-sT)
儘管 TCP SYN 掃描需要 Root 許可權,但 TCP Connect() 掃描並不需要。在這種掃描中會執行一個完整的「三次握手」。因為不需要 Root 許可權,所以在無法獲取 Root 許可權的網路上,這種掃描非常有用。
TCP Connect() 掃描的工作方式也是執行「三次握手」。正如上面描述過的,「三次握手」發生在兩個系統之間。源系統發送一個同步(SYN)請求到目標系統。然後,目標系統將通過同步/應答(SYN/ACK)來響應。最後,源系統通過應答(ACK)來響應,從而建立起連接,然後便可在兩個系統之間傳輸數據。
TCP Connect 掃描通過執行下面的步驟來工作:
- 源系統發送一個同步(SYN)請求到目標系統,該請求中包含一個埠號。
- 如果上一步所請求的埠是開啟的,那麼目標系統將通過同步/應答(SYN/ACK)來響應源系統。
- 源系統通過應答(ACK)來響應目標系統從而完成會話創建。
- 然後,源系統向目標系統發送一個重置(RST)包來關閉會話。
- 目標系統可以通過同步/應答(SYN/ACK)來響應源系統。
若步驟 2 執行了,那麼源系統就知道在步驟 1 中的指定埠是開啟的。
如果埠是關閉的,那麼會發生和 TCP SYN 掃描相同的事。在步驟 2 中,目標系統將會通過一個重置(RST)包來響應源系統。
可以使用命令 nmap -sT <IP 地址>
來執行掃描。<IP 地址>
可以改為一個單一 IP 地址,像圖片5那樣,或者使用一組 IP 地址。
TCP Connect() 掃描的結果可以在圖片5中看到。在這兒,你可以看到,有兩個已開啟埠:139 和 445,這和 TCP SYN 掃描的發現一樣。埠 80 是關閉的。剩下沒有顯示的埠是被過濾了的。
圖片5
讓我們關閉防火牆以後再重新掃描一次,掃描結果展示在圖片6中。
圖片6
關閉防火牆以後,我們可以看到,更多的埠被發現了。就和 TCP SYN 掃描一樣,關閉防火牆以後,發現 139 埠和 445 埠是開啟的。我們還發現,埠 2869 也是開啟的。也發現有 996 個埠是關閉的。現在,埠 80 是 996 個已關閉埠的一部分 — 不再被防火牆過濾。
在一些情況下, TCP Connect() 掃描可以在一個更短的時間內完成。和 TCP SYN 掃描相比,TCP Connect() 掃描也可以找到更多的已開啟埠
via: https://www.linuxforum.com/threads/nmap-common-scans-part-two.3879/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive