埠掃瞄技術

2022-04-01 11:37:45 字數 3113 閱讀 7579

目前主要的埠掃瞄技術有以下幾種:

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資料報 返回錯誤提示,那麼,就說明被防火牆或者其他裝置過濾了,也可以用這個方法探測是否有防火牆或者其他過濾裝置存在。

埠掃瞄技術與分析(四)

埠掃瞄分析 三 乙個簡單的掃瞄程式 下面是乙個埠掃瞄器的源程式,功能相當的簡單,乙個典型的tcpconnect 掃瞄。沒有對返回的資料進行分析。include include include include include include int main intargc,char argv for...

網路埠掃瞄技術詳細介紹

連線端及標記 ip位址和埠被稱作套接字,它代表乙個tcp連線的乙個連線端。為了獲得tcp服務,必須在傳送機的乙個埠上和接收機的乙個埠上建立連線。tcp連線用兩個連線端來區別,也就是 連線端1,連線端2 連線端互相傳送資料報。乙個tcp資料報包括乙個tcp頭,後面是選項和資料。乙個tcp頭包含6個標誌...

埠掃瞄原理

埠掃瞄原理分類 1 全tcp連線 這種掃瞄方法使用三次握手,與目標計算機建立標準的tcp連線。但是這種掃瞄方式很容易被目標主機記錄,不推薦使用。2 半開啟式掃瞄 syn掃瞄 在這種掃瞄技術中,掃瞄主機自動向目標計算機的指定埠傳送syn資料段,表示傳送建立連線請求。a,如果目標計算機的回應tcp報文中...