端口掃描技術


目前主要的端口掃描技術有以下幾種:
1.TCP connect Scan(TCP連接掃描)
這 種方法也稱之為“TCP全連接掃描”。它是最簡單的一種掃描技術,所利用的是TCP協議的3次握手過程。它直接連到目標端口並完成一個完整的3次握手過 程(SYN、SYN/ACK和ACK)。操作系統提供的“connect()”函數完成系統調用,用來與目標計算機的端口進行連接。如果端口處於偵聽狀 態,那么“connect()”函數就能成功。否則,這個端口是不能用的,即沒有提供服務。
TCP連接掃描技術的一個 最大的優點是不需要任何權限,系統中的任何用戶都有權利使用這個調用。另一個好處是速度快。如果對每個目標端口以線性的方式,使 用單獨的“connect()”函數調用,那么將會花費相當長的時間,用戶可以同時打開多個套接字,從而加速掃描。使用非阻塞I/O允許用戶設置一個低的 時間以用盡周期,並同時觀察多個套接字。但這種方法的缺點是很容易被發覺,並且很容易被過濾掉。目標計算機的日志文件會顯示一連串的連接和連接出錯的服務 消息,目標計算機用戶發現后就能很快使它關閉。 


2.TCP SYN Scan(TCP同步序列號掃描)
若端口掃描沒有完成一個完整的 TCP連接,即在掃描主機和目標主機的一指定端口建立連接的時候,只完成前兩次握手,在第三步時,掃描主機中斷了本次連接, 使連接沒有完全建立起來,所以這種端口掃描又稱為“半連接掃描”,也稱為“間接掃描”或“半開式掃描”(Half Open Scan)。
SYN 掃描,通過本機的一個端口向對方指定的端口,發送一個TCP的SYN連接建立請求數據報,然后開始等待對方的應答。如果應答數據報中設置了SYN位 和ACK位,那么這個端口是開放的;如果應答數據報是一個RST連接復位數據報,則對方的端口是關閉的。使用這種方法不需要完成Connect系統調用所 封裝的建立連接的整個過程,而只是完成了其中有效的部分就可以達到端口掃描的目的。
此種掃描方式的優點是不容易被發 現,掃描速度也比較快。同時通過對MAC地址的判斷,可以對一些路由器進行端口掃描,缺點是需要系統管理員的權限,不適合 使用多線程技術。因為在實現過程中需要自己完成對應答數據報的查找、分析,使用多線程容易發生數據報的串位現象,也就是原來應該這個線程接收的數據報被另 一個線程接收,接收后,這個數據報就會被丟棄,而等待線程只好在超時之后再發送一個SYN數據報,等待應答。這樣,所用的時間反而會增加。


3.TCP FIN Scan(TCP結束標志掃描)
這種掃描方式不依賴於TCP的3次握 手過程,而是TCP連接的“FIN”(結束)位標志。原理在於TCP連接結束時,會向TCP端口發送一個設置了FIN 位的連接終止數據報,關閉的端口會回應一個設置了RST的連接復位數據報;而開放的端口則會對這種可疑的數據報不加理睬,將它丟棄。可以根據是否收到 RST數據報來判斷對方的端口是否開放。
此掃描方式的優點比前兩種都要隱秘,不容易被發現。該方案有兩個缺點:首先, 要判斷對方端口是否開放必須等待超時,增加了探測時間,而且容易得出錯誤的結 論;其次,一些系統並沒有遵循規定,最典型的就是Microsoft公司所開發的操作系統。這些系統一旦收到這樣的數據報,無論端口是否開放都會回應一個 RST連接復位數據報,這樣一來,這種掃描方案對於這類操作系統是無效的。


4.IP Scan(IP協議掃描) 
這種方法並不是直接發送TCP協議探測數據包,而是將數據包分成兩個較小的IP協議段。這樣就將一個TCP協議頭分成好幾個數據包,從而過濾器就很難探測到。但必須小心,一些程序在處理這些小數據包時會有些麻煩。


5.TCP Xmas Tree Scan
這種方法向目標端口發送一個含有FIN(結束)、URG(緊急)和PUSH(彈出)標志的分組。根據RFC793,對於所有關閉的端口,目標系統應該返回RST標志。根據這一原理就可以判斷哪些端口是開放的。


6.TCP Null Scan
這種方法與上一方法原理是一樣,只是發送的數據包不一樣而已。本掃描方案中,是向目標端口發送一個不包含任何標志的分組。根據RFC793,對於所有關閉的端口,目標系統也應該返回RST標志。


7.UDP Scan(UDP協議掃描)
在UDP掃描中,是往目標端口發送一個UDP分 組。如果目標端口是以一個“ICMP port Unreachable”(ICMP端口不可到達)消息來作為響應的,那么該端口是關閉的。相反,如果沒有收到這個消息那就可以推斷該端口打開着。還有就 是一些特殊的UDP回饋,比如SQL Server服務器,對其1434號端口發送“x02”或者“x03”就能夠探測得到其連接端口。由於UDP是無連接的不可靠協議,因此這種技巧的准確性 很大程度上取決於與網絡及系統資源的使用率相關的多個因素。另外,當試圖掃描一個大量應用分組過濾功能的設備時,UDP掃描將是一個非常緩慢的過程。如果 要在互聯網上執行UDP掃描,那么結果就是不可靠的。


8.ICMP echo掃描 
其實這並不能算是真正意義上的掃描。但有時的確可以通過支持 Ping命令,判斷在一個網絡上主機是否開機。Ping是最常用的,也是最簡單的探測手段,用 來判斷目標是否活動。實際上Ping是向目標發送一個回顯(Type=8)的ICMP數據包,當主機得到請求后,再返回一個回顯(Type=0)的數據 包。而且Ping程序一般是直接實現在系統內核中的,而不是一個用戶進程,更加不易被發現。


9.高級ICMP掃描技術
Ping是利用ICMP協議實現的,高級的ICMP掃描技術主要 利用ICMP協議最基本的用途——報錯。根據網絡協議,如果接收到的數據包協議項出現了錯 誤,那么接收端將產生一個“Destination Unreachable”(目標主機不可達)ICMP的錯誤報文。這些錯誤報文不是主動發送的,而是由於錯誤,根據協議自動產生的。
當IP數據包出現Checksum(校驗和)和版本的錯誤的時候,目標主機將拋棄這個數據包;如果是Checksum出現錯誤,那么路由器就直接丟棄這個數據包。有些主機比如AIX、HP/UX等,是不會發送ICMP的Unreachable數據包的。
例 如,可以向目標主機發送一個只有IP頭的IP數據包,此時目標主機將返回“Destination Unreachable”的ICMP錯誤報文。如果向目標主機發送一個壞IP數據包,比如不正確的IP頭長度,目標主機將返回“Parameter Problem”(參數有問題)的ICMP錯誤報文。
注意:如果是在目標主機前有一個防火牆或者一個其他的過濾裝置, 可能過濾掉提出的要求,從而接收不到任何的回應。這時可以使用一個非常大的協議數字作為 IP頭部的協議內容,而且這個協議數字至少在今天還沒有被使用,主機一定會返回Unreachable;如果沒有Unreachable的ICMP數據包 返回錯誤提示,那么,就說明被防火牆或者其他設備過濾了,也可以用這個方法探測是否有防火牆或者其他過濾設備存在。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM