1. 程式人生 > >nmap參數原理抓包分析

nmap參數原理抓包分析

主機 探測 局域網 應該 分享 icm 服務 9.png 時間

nmap參數原理抓包分析

實驗環境:

Nmap7.70

實驗步驟:

1.主機發現

2.端口掃描

3.服務版本探測

一、主機發現

主機發現,如果主機活躍,掃描1000個常用的tcp端口

1、Nmap ip #默認進行主機發現、端口掃描、服務版本探測等

1.1先以一個不存在的ip為例:nmap 1.2.3.4 抓包分析

  技術分享圖片

可以看到如果沒有給出主機發現選項,nmap默認使用以下四種方式來確認目標機器是否活躍(只有以下四種方式任意一個得到目標的響應就可以說明目標主機存活)

1.nmap就發送一個ICMP 回聲請求到每臺目標機器,

2.TCP ACK 報文到80端口,

3.TCP ACK 報文到443端口,

4.還有一個基於時間的ICMP請求到每臺目標機器

  技術分享圖片

  從上圖可以看到,nmap不帶參數默認使用上面的四種方式來確定目標機器是否存活

1.2再以一個存在的ip為例:nmap 121.194.14.84 抓包分析

 可以看到獲得掃描成功的結果

  技術分享圖片

分析抓包的數據,可以看到目標機器對ICMP回顯請求響應了,對基於時間的icmp請求響應了,對TCP ACK 報文到80端口和TCP ACK 報文到443端口響應了

  技術分享圖片

得到主機存活之後,就開始了掃描1000個常用的端口(默認掃描的端口)

  技術分享圖片

2、nmap -sP ip #ping掃描 只主機發現 #須註意,目標必須是公網ip,局域網ip本參數無效,因為局域網掃描時,默認使用ARP掃描目標(-PR參數)

該選項告訴Nmap僅僅進行ping掃描 (主機發現),然後打印出對掃描做出響應的那些主機 。 沒有進一步的測試 (如端口掃描或者操作系統探測)

2.1以一個存在的IP為例: nmap -sP 121.194.14.84 抓包分析

可以看到只進行主機發現,沒有進一步的測試

  技術分享圖片

可以看到抓取的數據包只有關於主機發現的數據,得到目標主機存活之後也沒有進行下一步測試(因為nmap -sP參數的限制)

  技術分享圖片

要註意的是即使 您指定了其它 -P*選項,ARP發現(-PR)對於局域網上的 目標而言是默認行為,因為它總是更快更有效。

2.2下面以nmap -sP 192.168.43.200 為例掃描一個局域網IP,抓包分析 #註意目標IP是局域網IP

下圖可以看到,局域網掃描可以獲得目標主機的MAC地址

  技術分享圖片

可以看到下圖的抓包,雖然使用的是-sP參數,但因為是在局域網內掃描目標IP,默認使用ARP掃描

  技術分享圖片

3.nmap -P0 ip #無ping 跳過主機發現 把目標ip看成是活躍的直接進行高強度掃描(端口掃描、服務版本探測或操作系統版本探測等)

該選項完全跳過 Nmap發現階段。通常nmap在進行高強度的掃描時用它確定正在運行的機器

3.1以一個存在的IP為例: nmap -sP 121.194.14.84 抓包分析

運行的結果如下:

  技術分享圖片

通過查看下圖抓取的數據包,可以看到沒有進行主機發現,直接進行高強度的掃描

  技術分享圖片

4.nmap -PS ip #TCP SYN 掃描 主機發現只連接目標的tcp 80端口,不使用ICMP

只要目標主機響應TCP SYN 就說明目標主機是活躍的,無論響應的是哪種數據包(RST或者SYN/ACK)

該選項發送一個設置了 SYN 標誌位的空 TCP 報文, 默認目的端口為80, 但不同的端口也可以作為選項指定。甚至可以指定一個以逗號分隔的端口列表(如 -PS22,23,25,80,113,1050,35000),在這種情況下,每個端口會被並發地掃描。

SYN 標誌位告訴對方您正試圖建立一個連接。通常目標端口是關閉的,一個RST(復位) 包會發回來。 如果碰巧端口是開放的,目標會進行 TCP 三步握手的第二步,回應 一個 SYN/ACKTCP報文。然後運行 Nmap 的機器則會扼殺這個正在建立的連接,發送一個 RST 而非 ACK報文,否則,一個完全的連接將會建立。 RST 報文是運行 Nmap 的機器而不是 Nmap 本身響應的,因為它對收到 的 SYN/ACK感到很意外。

Nmap 並不關心端口開放還是關閉。 無論 RST 還是 SYN/ACK響應都告訴 Nmap 該主機正 在運行。

4.1以一個存在的IP為例: nmap -PS 121.194.14.84 抓包分析

可以看到目標響應一個SYN/ACK包,說明目標ip是活躍的,然後便進行默認端口掃描

  技術分享圖片

4.2 nmap -PS ip 也可以指定端口(不指定默認1000個常用的端口)

下面以nmap -PS 192.168.43.200 -p 80,443,53為例,抓包分析

  技術分享圖片

分析下圖的數據包可以看到掃描53端口的過程:nmap發送TCP SYN包到目標IP,目標IP響應SYN/ACK包,nmap不進行第三次握手(ACK包),就直接發送RST包。這就是-PS參數的特點。

  技術分享圖片

5.nmap -PA ip #TCP ACK 掃描  

TCPACK ping 和剛才討論的 SYN ping相當類似。區別就是設置 TCP 的 ACK標誌位而不是 SYN 標誌位。-PA選項使用和 SYN 探測(-PS)相同的默認端口(80)

ACK報文表示確認一個建立連接的嘗試,但該連接尚未完全建立。 所以遠程主機應該總是回應一個 RST 報文, 因為它們並沒有發出過連接請 求到運行 Nmap 的機器,如果它們正在運行的話。

由於沒頭沒腦的 ACK 報文通常會被識別成偽造的而丟棄。解決這個兩難的方法是通過即指定 -PS 又指定-PA來即發送 SYN又發送 ACK。

5.1以一個存在的IP為例: nmap -PS 121.194.14.84 抓包分析

  技術分享圖片

分析抓取到的數據,可以看到主機發現的過程(默認以80端口作為主機發現):namp直接發送一個ACK的報文到目標IP,目標IP響應RST報文,說明主機存活

  技術分享圖片

5.2帶端口的跟不帶端口的原理一樣,這裏不進行測試了。

5.3由於沒頭沒腦的 ACK 報文通常會被識別成偽造的而丟棄。解決這個兩難的方法是通過即指定 -PS 又指定-PA來即發送 SYN又發送 ACK。

以一個存在的IP為例: nmap -PS -PA 121.194.14.84 抓包分析

  技術分享圖片

可以看到同時應用了-PS和-PA參數就構造成了一個完整的數據包,不會輕易被防火墻攔截丟棄

  技術分享圖片

6.namp -PU ip #UDP掃描

它發送一個空的(除非指定了--data-length)UDP報文到給定的端口。端口列表的格式和前面討論過的-PS 和-PA選項還是一樣。如果不指定端口,默認是31338。

如果目標機器的端口是關閉的,UDP 探測應該馬上得到一個 ICMP 端口無法到達的回應報 文。 這對於 Nmap 意味著該機器正在運行。

一個存在的IP為例: nmap -PU 121.194.14.84 抓包分析

  技術分享圖片

分析抓取的數據包,可以發現nmap給目標機器的端口31338(默認的UDP端口),得到響應的是目標不可達,說明目標機器是存活的。(因為31338端口是一個關閉的端口)

  技術分享圖片

二、端口掃描

1.Nmap -sS ip #半連接 2/3 默認用-sP去發現主機,如果沒結果請嘗試改成-PS或者-PU 或者-P0

SYN 掃描作為默認的也是最受歡迎的掃描選項, SYN 掃描相對來說不張揚,不易被註意到,因為它從來不完成 TCP連接

它常常被稱為半開放掃描,因為它不打開一個完全的TCP連接

一個存在的IP為例: nmap -sS 121.194.14.84 抓包分析

  技術分享圖片

下面以80端口為例,分析-sS參數的過程,namp發送一個SYN報文到目標IP,目標IP響應一個SYN/ACK報文,然後nmap就不回復了。

  技術分享圖片

2.Nmap -sT ip #全連接3/3 默認用-sP去發現主機,如果沒結果請嘗試改成-PS或者-PU 或者-P0

一個存在的IP為例: nmap -sT 121.194.14.84 抓包分析

下面以443端口為例,分析-sS參數的過程: namp發送一個SYN報文到目標IP,目標IP響應一個SYN/ACK報文,然後nmap回復ACK。

  技術分享圖片

三、服務版本探測

一個存在的IP為例: nmap -sV 121.194.14.84

  技術分享圖片

nmap參數原理抓包分析