目前主要的端口掃描技術(shù)有以下幾種:
1.TCP connect Scan(TCP連接掃描)
這種方法也稱之為“TCP全連接掃描”。它是最簡單的一種掃描技術(shù),所利用的是TCP協(xié)議的3次握手過程。它直接連到目標(biāo)端口并完成一個完整的3次握手過 程(SYN、SYN/ACK和ACK)。操作系統(tǒng)提供的“connect()”函數(shù)完成系統(tǒng)調(diào)用,用來與目標(biāo)計算機的端口進行連接。如果端口處于偵聽狀 態(tài),那么“connect()”函數(shù)就能成功。否則,這個端口是不能用的,即沒有提供服務(wù)。
TCP連接掃描技術(shù)的一個最大的優(yōu)點是不需要任何權(quán)限,系統(tǒng)中的任何用戶都有權(quán)利使用這個調(diào)用。另一個好處是速度快。如果對每個目標(biāo)端口以線性的方式,使 用單獨的“connect()”函數(shù)調(diào)用,那么將會花費相當(dāng)長的時間,用戶可以同時打開多個套接字,從而加速掃描。使用非阻塞I/O允許用戶設(shè)置一個低的 時間以用盡周期,并同時觀察多個套接字。但這種方法的缺點是很容易被發(fā)覺,并且很容易被過濾掉。目標(biāo)計算機的日志文件會顯示一連串的連接和連接出錯的服務(wù) 消息,目標(biāo)計算機用戶發(fā)現(xiàn)后就能很快使它關(guān)閉。
2.TCP SYN Scan(TCP同步序列號掃描)
若端口掃描沒有完成一個完整的TCP連接,即在掃描主機和目標(biāo)主機的一指定端口建立連接的時候,只完成前兩次握手,在第三步時,掃描主機中斷了本次連接, 使連接沒有完全建立起來,所以這種端口掃描又稱為“半連接掃描”,也稱為“間接掃描”或“半開式掃描”(Half Open Scan)。
SYN掃描,通過本機的一個端口向?qū)Ψ街付ǖ亩丝?,發(fā)送一個TCP的SYN連接建立請求數(shù)據(jù)報,然后開始等待對方的應(yīng)答。如果應(yīng)答數(shù)據(jù)報中設(shè)置了SYN位 和ACK位,那么這個端口是開放的;如果應(yīng)答數(shù)據(jù)報是一個RST連接復(fù)位數(shù)據(jù)報,則對方的端口是關(guān)閉的。使用這種方法不需要完成Connect系統(tǒng)調(diào)用所 封裝的建立連接的整個過程,而只是完成了其中有效的部分就可以達到端口掃描的目的。
此種掃描方式的優(yōu)點是不容易被發(fā)現(xiàn),掃描速度也比較快。同時通過對MAC地址的判斷,可以對一些路由器進行端口掃描,缺點是需要系統(tǒng)管理員的權(quán)限,不適合 使用多線程技術(shù)。因為在實現(xiàn)過程中需要自己完成對應(yīng)答數(shù)據(jù)報的查找、分析,使用多線程容易發(fā)生數(shù)據(jù)報的串位現(xiàn)象,也就是原來應(yīng)該這個線程接收的數(shù)據(jù)報被另 一個線程接收,接收后,這個數(shù)據(jù)報就會被丟棄,而等待線程只好在超時之后再發(fā)送一個SYN數(shù)據(jù)報,等待應(yīng)答。這樣,所用的時間反而會增加。
3.TCP FIN Scan(TCP結(jié)束標(biāo)志掃描)
這種掃描方式不依賴于TCP的3次握手過程,而是TCP連接的“FIN”(結(jié)束)位標(biāo)志。原理在于TCP連接結(jié)束時,會向TCP端口發(fā)送一個設(shè)置了FIN 位的連接終止數(shù)據(jù)報,關(guān)閉的端口會回應(yīng)一個設(shè)置了RST的連接復(fù)位數(shù)據(jù)報;而開放的端口則會對這種可疑的數(shù)據(jù)報不加理睬,將它丟棄??梢愿鶕?jù)是否收到 RST數(shù)據(jù)報來判斷對方的端口是否開放。
此掃描方式的優(yōu)點比前兩種都要隱秘,不容易被發(fā)現(xiàn)。該方案有兩個缺點:首先,要判斷對方端口是否開放必須等待超時,增加了探測時間,而且容易得出錯誤的結(jié) 論;其次,一些系統(tǒng)并沒有遵循規(guī)定,最典型的就是Microsoft公司所開發(fā)的操作系統(tǒng)。這些系統(tǒng)一旦收到這樣的數(shù)據(jù)報,無論端口是否開放都會回應(yīng)一個 RST連接復(fù)位數(shù)據(jù)報,這樣一來,這種掃描方案對于這類操作系統(tǒng)是無效的。
4.IP Scan(IP協(xié)議掃描)
這種方法并不是直接發(fā)送TCP協(xié)議探測數(shù)據(jù)包,而是將數(shù)據(jù)包分成兩個較小的IP協(xié)議段。這樣就將一個TCP協(xié)議頭分成好幾個數(shù)據(jù)包,從而過濾器就很難探測到。但必須小心,一些程序在處理這些小數(shù)據(jù)包時會有些麻煩。
5.TCP Xmas Tree Scan
這種方法向目標(biāo)端口發(fā)送一個含有FIN(結(jié)束)、URG(緊急)和PUSH(彈出)標(biāo)志的分組。根據(jù)RFC793,對于所有關(guān)閉的端口,目標(biāo)系統(tǒng)應(yīng)該返回RST標(biāo)志。根據(jù)這一原理就可以判斷哪些端口是開放的。
6.TCP Null Scan
這種方法與上一方法原理是一樣,只是發(fā)送的數(shù)據(jù)包不一樣而已。本掃描方案中,是向目標(biāo)端口發(fā)送一個不包含任何標(biāo)志的分組。根據(jù)RFC793,對于所有關(guān)閉的端口,目標(biāo)系統(tǒng)也應(yīng)該返回RST標(biāo)志。
7.UDP Scan(UDP協(xié)議掃描)
在UDP掃描中,是往目標(biāo)端口發(fā)送一個UDP分組。如果目標(biāo)端口是以一個“ICMP port Unreachable”(ICMP端口不可到達)消息來作為響應(yīng)的,那么該端口是關(guān)閉的。相反,如果沒有收到這個消息那就可以推斷該端口打開著。還有就 是一些特殊的UDP回饋,比如SQL Server服務(wù)器,對其1434號端口發(fā)送“x02”或者“x03”就能夠探測得到其連接端口。由于UDP是無連接的不可靠協(xié)議,因此這種技巧的準(zhǔn)確性 很大程度上取決于與網(wǎng)絡(luò)及系統(tǒng)資源的使用率相關(guān)的多個因素。另外,當(dāng)試圖掃描一個大量應(yīng)用分組過濾功能的設(shè)備時,UDP掃描將是一個非常緩慢的過程。如果 要在互聯(lián)網(wǎng)上執(zhí)行UDP掃描,那么結(jié)果就是不可靠的。
8.ICMP echo掃描
其實這并不能算是真正意義上的掃描。但有時的確可以通過支持Ping命令,判斷在一個網(wǎng)絡(luò)上主機是否開機。Ping是最常用的,也是最簡單的探測手段,用 來判斷目標(biāo)是否活動。實際上Ping是向目標(biāo)發(fā)送一個回顯(Type=8)的ICMP數(shù)據(jù)包,當(dāng)主機得到請求后,再返回一個回顯(Type=0)的數(shù)據(jù) 包。而且Ping程序一般是直接實現(xiàn)在系統(tǒng)內(nèi)核中的,而不是一個用戶進程,更加不易被發(fā)現(xiàn)。
9.高級ICMP掃描技術(shù)
Ping是利用ICMP協(xié)議實現(xiàn)的,高級的ICMP掃描技術(shù)主要利用ICMP協(xié)議最基本的用途——報錯。根據(jù)網(wǎng)絡(luò)協(xié)議,如果接收到的數(shù)據(jù)包協(xié)議項出現(xiàn)了錯 誤,那么接收端將產(chǎn)生一個“Destination Unreachable”(目標(biāo)主機不可達)ICMP的錯誤報文。這些錯誤報文不是主動發(fā)送的,而是由于錯誤,根據(jù)協(xié)議自動產(chǎn)生的。
當(dāng)IP數(shù)據(jù)包出現(xiàn)Checksum(校驗和)和版本的錯誤的時候,目標(biāo)主機將拋棄這個數(shù)據(jù)包;如果是Checksum出現(xiàn)錯誤,那么路由器就直接丟棄這個數(shù)據(jù)包。有些主機比如AIX、HP/UX等,是不會發(fā)送ICMP的Unreachable數(shù)據(jù)包的。
例如,可以向目標(biāo)主機發(fā)送一個只有IP頭的IP數(shù)據(jù)包,此時目標(biāo)主機將返回“Destination Unreachable”的ICMP錯誤報文。如果向目標(biāo)主機發(fā)送一個壞IP數(shù)據(jù)包,比如不正確的IP頭長度,目標(biāo)主機將返回“Parameter Problem”(參數(shù)有問題)的ICMP錯誤報文。
注意:如果是在目標(biāo)主機前有一個防火墻或者一個其他的過濾裝置,可能過濾掉提出的要求,從而接收不到任何的回應(yīng)。這時可以使用一個非常大的協(xié)議數(shù)字作為 IP頭部的協(xié)議內(nèi)容,而且這個協(xié)議數(shù)字至少在今天還沒有被使用,主機一定會返回Unreachable;如果沒有Unreachable的ICMP數(shù)據(jù)包 返回錯誤提示,那么,就說明被防火墻或者其他設(shè)備過濾了,也可以用這個方法探測是否有防火墻或者其他過濾設(shè)備存在。
聯(lián)系客服