為什麼 nmap 發送兩個資料包來測試單個端口

為什麼 nmap 發送兩個資料包來測試單個端口

我使用 sudo 以 root 權限運行 nmap,因此我假設它具有創建原始套接字的完全存取權。當我使用命令時,Wireshark 顯示了用於測試單一連接埠的兩個資料包

sudo nmap 192.168.110.153 -p21 

這是正常行為嗎?為什麼?

在此輸入影像描述

sudo nmap 192.168.110.153 -p21 --packet-trace

Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-19 19:18 BST
SENT (0.0447s) ARP who-has 192.168.110.153 tell 192.168.110.155
RCVD (0.0450s) ARP reply 192.168.110.153 is-at 00:0C:29:F4:05:E0
NSOCK INFO [0.2450s] nsi_new2(): nsi_new (IOD #1)
NSOCK INFO [0.2450s] nsock_connect_udp(): UDP connection requested to 127.0.1.1:53 (IOD #1) EID 8
NSOCK INFO [0.2460s] nsock_read(): Read request from IOD #1 [127.0.1.1:53] (timeout: -1ms) EID 18
NSOCK INFO [0.2460s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 8 [127.0.1.1:53]
NSOCK INFO [0.2460s] nsock_trace_handler_callback(): Callback: WRITE SUCCESS for EID 27 [127.0.1.1:53]
NSOCK INFO [0.2740s] nsock_trace_handler_callback(): Callback: READ SUCCESS for EID 18 [127.0.1.1:53] (46 bytes): *%...........153.110.168.192.in-addr.arpa.....
NSOCK INFO [0.2740s] nsock_read(): Read request from IOD #1 [127.0.1.1:53] (timeout: -1ms) EID 34
NSOCK INFO [0.2740s] nsi_delete(): nsi_delete (IOD #1)
NSOCK INFO [0.2740s] msevent_cancel(): msevent_cancel on event #34 (type READ)
SENT (0.2751s) TCP 192.168.110.155:45170 > 192.168.110.153:21 S ttl=39 id=28633 iplen=44  seq=3053138125 win=1024 <mss 1460>
SENT (0.3754s) TCP 192.168.110.155:45171 > 192.168.110.153:21 S ttl=46 id=8796 iplen=44  seq=3053072588 win=1024 <mss 1460>
RCVD (0.2759s) TCP 192.168.110.153:21 > 192.168.110.155:45170 RA ttl=64 id=14442 iplen=40  seq=0 win=0 
RCVD (0.3756s) TCP 192.168.110.153:21 > 192.168.110.155:45171 RA ttl=64 id=14443 iplen=40  seq=0 win=0 
Nmap scan report for 192.168.110.153
Host is up (0.00047s latency).
PORT   STATE  SERVICE
21/tcp closed ftp
MAC Address: 00:0C:29:F4:05:E0 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.50 seconds

答案1

看起來像是libpcap在將資料包傳送到 Nmap 之前對其進行排隊的問題。請注意 Wireshark 和 Nmap 之間資料包排序的差異;即使時間戳相同,列印行的順序也表示資料包已傳遞到 Nmap第二個 SYN 封包已發送。我們最近有一個libpcap 1.5.3 的問題(可能還有 1.6 分支,尚未測試)在與封包環/TPACKET 介面相關的較新 Linux 核心上,當封包到達時不傳送封包。的輸出是什麼nmap --version

根本問題是 Linux 中的一個錯誤,該錯誤是已修復但未向後移植。我們在開發過程中透過將 libpcap 升級到版本 1.7.3 解決了這個問題,該版本有一些解決方法。

答案2

根據您的螢幕截圖,似乎[R.]資料包在到達您要掃描的機器之前就被過濾了,並且 nmap 使用了其重傳功能,因為第一個[S]資料包沒有收到任何答案。

您可以使用停用此功能--max-retries 0

答案3

為什麼 nmap 發送兩個資料包來測試單一連接埠?

通常:因為需要三次握手建立TCP連接....發送 SYN -> 接收 SYN-ACK -> 發送 ACK

在這種情況下:因為來自 192.168.110.153 的回應是RST, ACK ,或者換句話說:與連接埠 21 的連線被拒絕。可能 nmap 有點頑固,在得到“否”答案之前會嘗試兩次。

相關內容