Nmap 網(wǎng)絡掃描實戰(zhàn)(2)--端口掃描

開放的端口意味著遠程主機上正在運行著聯(lián)網(wǎng)的服務,而某些難以察覺的編程錯誤或?qū)崿F(xiàn)缺陷會使這些服務容易受到攻擊,有時甚至成為侵入整個系統(tǒng)的突破口。
這些網(wǎng)絡服務往往使用 TCP 或 UDP 作為傳輸協(xié)議。TCP(Transmission Control Protocol)是一種連接導向的協(xié)議,相對更常用。而 UDP(User Datagram Protocol)是一種非連接導向的協(xié)議,多用于對傳輸速度的要求高于數(shù)據(jù)完整性的服務。
而通過檢測端口及服務來入侵遠程系統(tǒng)的滲透測試方法即為端口掃描。

一、TCP 端口掃描技術(shù)

1. Connect 掃描

Connect 掃描對每一個端口都嘗試建立完整的 TCP 連接(三步握手),如果連接創(chuàng)建成功,則該端口被判定為開放的。

connect scan 的報文信息

2. Stealth 掃描

Stealth 掃描也常被稱作 SYN 掃描半開放掃描。該技術(shù)向每一個被掃描的端口發(fā)送一個單獨的 SYN 包,如果收到 SYN+ACK 回復,則該端口被判定為開放的。這之后不會再遵照三步握手的程序向目標主機發(fā)送 ACK 包,所以并沒有開啟完整的TCP連接,而目標主機的日志系統(tǒng)一般也不會記錄這類掃描的痕跡。

SYN scan 的報文信息

3. Zombie 掃描

『僵尸』掃描背后的實現(xiàn)原理比較負責。整個過程如下圖所示:
Zombie Scan

簡單來說,

  1. 先找一個遠程系統(tǒng)作為『僵尸』主機,該主機與網(wǎng)絡中的其他主機之間不存在活躍的網(wǎng)絡連接。
  2. 向『僵尸』主機發(fā)送一個 SYN+ACK 包并記錄下該主機初始的 IPID 值。
  3. 偽裝成『僵尸』主機(將報文中的源IP地址替換為『僵尸』主機的)向目標主機發(fā)送一個 SYN 數(shù)據(jù)包。
  4. 如果目標端口是開放的,則目標主機會向『僵尸』主機返回一個 SYN+ACK 包,而『僵尸』主機(覺得很懵逼。。。)則返回一個 RST 包并把自己的 IPID 值增加 1。
    如果目標端口是關(guān)閉的,則目標主機會向『僵尸』主機返回 RST 響應,而收到 RST 的『僵尸』主機(依然不清楚發(fā)生了什么)則不做任何動作,IPID 值也不會增加。
  5. 向『僵尸』主機發(fā)送另一個 SYN+ACK 包,從返回的 RST 包中獲取最終的 IPID 值。如果該值比第 2 步時增加了 1,則目標端口是關(guān)閉的。如果最終增加了 2,則目標端口是開放的。

一點兒也不簡單哈。。。

命令示例

在特權(quán)用戶下執(zhí)行時,nmap 默認采用 SYN 掃描方式(即不開啟完整的TCP連接)以節(jié)省掃描時間。同時這種掃描行為也不易被目標主機的日志系統(tǒng)記錄到。
而普通用戶不具有修改原始數(shù)據(jù)包的權(quán)限,所以只能通過 connect系統(tǒng)調(diào)用 打開完整的 TCP 連接以完成對遠程系統(tǒng)的掃描。
所以從效率和安全的角度出發(fā),應優(yōu)先選擇 SYN 掃描而非 connect 掃描。
具體可參考 nmap 官方文檔——端口掃描技術(shù)

$ sudo nmap 10.2.64.1 -p 80
# 特權(quán)用戶 SYN 掃描

$ nmap 10.2.64.1 -p 80
# 普通用戶 connect 掃描

也可以顯式地指定采用哪種掃描方式,-sT 表示 connect 掃描,-sS 表示 SYN 掃描。-p 選項用來指定掃描的端口號或端口范圍(一共有65535個端口可供掃描,默認掃描1000常用的端口)。如:

$ sudo nmap 10.2.64.1 -p 21,22,80,443
$ sudo nmap 10.2.64.1 -p 20-25
Scan results

從上述命令的輸出結(jié)果中可以看出,該主機的 22,80 端口是開放的(很可能運行著ssh服務和http服務),21 和 443 端口是關(guān)閉的。

二、UDP 端口掃描技術(shù)

UDP 掃描相對顯得更有難度,同時也更乏味和耗時。
其中一種方式依賴于ICMP端口不可達響應,即假設每一個被掃描的 UDP 端口在不開放時都會回復 ICMP 端口不可達的響應,而收不到該響應時則判定端口為開放的。
但有時候被掃描主機不允許生成端口不可達響應,或該響應被限制在一定頻率內(nèi),也可能是被主機的防火墻隔離。此種方法就會產(chǎn)生不準確的結(jié)果。
另一種方式是通過發(fā)送服務相關(guān)的請求來探測遠程主機上對應的服務。此種方法可信度更高,但同時消耗的時間也更多。

UDP scan

open|filtered 表示該端口可能是開放的,也可能被防火墻屏蔽掉了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容