閱讀68 返回首頁    go 阿裏雲 go 技術社區[雲棲]


NMAP 常用掃描簡介(二)

四種通用掃描類型

下麵列出了最常用的四種掃描類型:

  1. PING 掃描(-sP
  2. TCP SYN 掃描(-sS
  3. TCP Connect() 掃描(-sT
  4. UDP 掃描(-sU

當我們利用 NMAP 來執行掃描的時候,這四種掃描類型是我們需要熟練掌握的。更重要的是需要知道這些命令做了什麼,並且需要知道這些命令是怎麼做的。在這篇文章中將介紹兩種 TCP 掃描 — TCP SYN 掃描和 TCP Connect() 掃描。

TCP SYN 掃描 (-sS)

TCP SYN 掃描是默認的 NMAP 掃描方式。為了運行 TCP SYN 掃描,你需要有 Root 權限。

TCP SYN 掃描的目的是找到被掃描係統上的已開啟端口。使用 NMAP 掃描可以掃描在防火牆另一側的係統。當掃描通過防火牆時,掃描時間會延長,因為數據包會變慢。

TCP SYN 掃描的工作方式是啟動一個“三次握手”。正如在另一篇文章中所述,“三次握手”發生在兩個係統之間。首先,源係統發送一個包到目標係統,這是一個同步(SYN)請求。然後,目標係統將通過同步/應答(SYN/ACK)響應。接下來,源係統將通過應答(ACK)來響應,從而建立起一個通信連接,然後,可以在兩個係統之間傳輸數據。

TCP SYN 掃描通過執行下麵的步驟來進行工作:

  1. 源係統向目標係統發送一個同步請求,該請求中包含一個端口號。
  2. 如果添加在上一步中的所請求的端口號是開啟的,那麼目標係統將通過同步/應答(SYN/ACK)來響應源係統。
  3. 源係統通過重置(RST)來響應目標係統,從而斷開連接。
  4. 目標係統可以通過重置/應答(RST/ACK)來響應源係統。

這種連接已經開始建立,所以這被認為是半開放連接。因為連接狀態是由 NMAP 來管理的,所以你需要有 Root 權限。

如果被掃描的端口是關閉的,那麼將執行下麵的步驟:

  1. 源係統發送一個同步(SYN)請求到目標係統,該請求中包含一個端口號。
  2. 目標係統通過重置(RST)響應源係統,因為該端口是關閉的。

如果目標係統處於防火牆之後,那麼 ICMP 傳輸或響應會被防火牆禁止,此時,會執行下麵的步驟:

  1. 源係統發送一個同步(SYN)請求到目標係統,該請求中包含一個端口號。
  2. 沒有任何響應,因為請求被防火牆過濾了。

在這種情況下,端口可能是被過濾、或者可能打開、或者可能沒打開。防火牆可以設置禁止指定端口所有包的傳出。防火牆可以禁止所有傳入某個指定端口的包,因此目標係統不會接收到請求。

注:無響應可能發生在一個啟用了防火牆的係統上。即使在本地網絡,你也可能會發現被過濾的端口。

我將向 圖片1那樣執行對單一係統(10.0.0.2)的 TCP SYN 掃描。使用命令 sudo nmap -sS <IP 地址> 來執行掃描。<IP 地址>可以改為一個單一 IP 地址,像圖片1那樣,也可以使用一組 IP 地址。

圖片1

圖片1

你可以看到它表明 997 個被過濾端口沒有顯示在下麵。NMAP 找到兩個開啟的端口:139 和 445 。

注:請記住,NMAP 隻會掃描絕大多數熟知的 1000 多個端口。以後,我們會介紹可以掃描所有端口或者指定端口的其它掃描。

該掃描會被 WireShark 俘獲,正如圖片2所展示的那樣。在這兒,你可以看到對目標係統的初始地址解析協議(ARP)請求。在 ARP 請求下麵的是一長列到達目標係統端口的 TCP 請求。第 4 行是到達 http-alt 端口(8080)。源係統的端口號為 47128 。正如圖片3 展示的,許多 SYN 請求隻有在做出響應以後才會發送。

圖片2

圖片2

圖片3

圖片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

圖片4

TCP Connect() 掃描 (-sT)

盡管 TCP SYN 掃描需要 Root 權限,但 TCP Connect() 掃描並不需要。在這種掃描中會執行一個完整的“三次握手”。因為不需要 Root 權限,所以在無法獲取 Root 權限的網絡上,這種掃描非常有用。

TCP Connect() 掃描的工作方式也是執行“三次握手”。正如上麵描述過的,“三次握手”發生在兩個係統之間。源係統發送一個同步(SYN)請求到目標係統。然後,目標係統將通過同步/應答(SYN/ACK)來響應。最後,源係統通過應答(ACK)來響應,從而建立起連接,然後便可在兩個係統之間傳輸數據。

TCP Connect 掃描通過執行下麵的步驟來工作:

  1. 源係統發送一個同步(SYN)請求到目標係統,該請求中包含一個端口號。
  2. 如果上一步所請求的端口是開啟的,那麼目標係統將通過同步/應答(SYN/ACK)來響應源係統。
  3. 源係統通過應答(ACK)來響應目標係統從而完成會話創建。
  4. 然後,源係統向目標係統發送一個重置(RST)包來關閉會話。
  5. 目標係統可以通過同步/應答(SYN/ACK)來響應源係統。

若步驟 2 執行了,那麼源係統就知道在步驟 1 中的指定端口是開啟的。

如果端口是關閉的,那麼會發生和 TCP SYN 掃描相同的事。在步驟 2 中,目標係統將會通過一個重置(RST)包來響應源係統。

可以使用命令 nmap -sT <IP 地址> 來執行掃描。<IP 地址>可以改為一個單一 IP 地址,像圖片5那樣,或者使用一組 IP 地址。

TCP Connect() 掃描的結果可以在圖片5中看到。在這兒,你可以看到,有兩個已開啟端口:139 和 445,這和 TCP SYN 掃描的發現一樣。端口 80 是關閉的。剩下沒有顯示的端口是被過濾了的。

圖片5

圖片5

讓我們關閉防火牆以後再重新掃描一次,掃描結果展示在圖片6中。

圖片6

圖片6

關閉防火牆以後,我們可以看到,更多的端口被發現了。就和 TCP SYN 掃描一樣,關閉防火牆以後,發現 139 端口和 445 端口是開啟的。我們還發現,端口 2869 也是開啟的。也發現有 996 個端口是關閉的。現在,端口 80 是 996 個已關閉端口的一部分 — 不再被防火牆過濾。

在一些情況下, TCP Connect() 掃描可以在一個更短的時間內完成。和 TCP SYN 掃描相比,TCP Connect() 掃描也可以找到更多的已開啟端口

原文發布時間為:2017-04-12

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-22 15:02:21

  上一篇:go  Apache Storm 官方文檔 —— 命令行操作
  下一篇:go  macos下eclipse啟動報錯的問題