史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   網路軟硬體架設技術文件 (http://forum.slime.com.tw/f133.html)
-   -   高階掃瞄技術及原理介紹 (http://forum.slime.com.tw/thread98516.html)

psac 2004-03-05 04:18 PM

高階掃瞄技術及原理介紹
 
Scan,是一切入侵的基礎,掃瞄探測一台主機包括是為了確定主機是否活動、主機系統、正在使用哪些連接阜、提供了哪些服務、相關服務的軟體版本等等,對這些內容的探測就是為了「對症下藥」。對主機的探測工具非常多,比如大名鼎鼎的nmap、netcat、superscan,以及國內的X-Scanner等等。

ICMP協議——PING是最常用的,也是最簡單的探測手段,用來判斷目標是否活動。實際上Ping是向目標發送一個要求回顯(Type = 8)的ICMP資料報,當主機得到請求後,再返回一個回顯(Type = 0)資料報。而且Ping 程序一般是直接實現在系統內核中的,而不是一個用戶行程。Ping是最基本的探測手段,Ping Sweep(Ping掃射)就是對一個網段進行大範圍的Ping,由此確定這個網段的網路運作情況,比如著名的fping工具就是進行Ping掃射的。

不過現在連基本的個人防火牆都對Ping做了限制,這個也太基本了。如果透過防火牆,如何獲得最理想的目標圖,也是很多人整天思考的問題。我們這裡介紹的一些掃瞄技術就是要盡可能地繞過一些安全防護設備,並且盡量保護自己,同時達到我們需要的目的。

一、高階ICMP掃瞄技術

Ping就是利用ICMP協議走的,高階的ICMP掃瞄技術主要是利用ICMP協議最基本的用途:報錯。根據網路協議,如果按照協議出現了錯誤,那麼接收端將產生一個ICMP的錯誤報文。這些錯誤報文並不是主動發送的,而是由於錯誤,根據協議自動產生。

當IP資料報出現checksum和版本的錯誤的時候,目標主機將拋棄這個資料報,如果是checksum出現錯誤,那麼路由器就直接丟棄這個資料報了。有些主機比如AIX、HP-UX等,是不會發送ICMP的Unreachable資料報的。

我們利用下面這些特性:

1、向目標主機發送一個只有IP頭的IP資料包,目標將返回Destination Unreachable的ICMP錯誤報文。

2、向目標主機發送一個壞IP資料報,比如,不正確的IP頭長度,目標主機將返回Parameter Problem的ICMP錯誤報文。

3、當資料包分片但是,卻沒有給接收端足夠的分片,接收端分片組裝超時會發送分片組裝超時的ICMP資料報。

向目標主機發送一個IP資料報,但是協議項是錯誤的,比如協議項不可用,那麼目標將返回Destination Unreachable的ICMP報文,但是如果是在目標主機前有一個防火牆或者一個其他的過濾裝置,可能過濾掉提出的要求,從而接收不到任何回應。可以使用一個非常大的協議數位來作為IP頭部的協議內容,而且這個協議數位至少在今天還沒有被使用,應該主機一定會返回Unreachable,如果沒有Unreachable的ICMP資料報返回錯誤提示,那麼就說明被防火牆或者其他設備過濾了,我們也可以用這個辦法來探測是否有防火牆或者其他過濾設備存在。

利用IP的協議項來探測主機正在使用哪些協議,我們可以把IP頭的協議項改變,因為是8位的,有256種可能。通過目標返回的ICMP錯誤報文,來作判斷哪些協議在使用。如果返回Destination Unreachable,那麼主機是沒有使用這個協議的,相反,如果什麼都沒有返回的話,主機可能使用這個協議,但是也可能是防火牆等過濾掉了。NMAP的IP Protocol scan也就是利用這個原理。

利用IP分片造成組裝超時ICMP錯誤消息,同樣可以來達到我們的探測目的。當主機接收到丟失分片的資料報,並且在一定時間內沒有接收到丟失的資料報,就會丟棄整個包,並且發送ICMP分片組裝超時錯誤給原發送端。我們可以利用這個特性製造分片的資料包,然後等待ICMP組裝超時錯誤消息。可以對UDP分片,也可以對TCP甚至ICMP資料包進行分片,只要不讓目標主機獲得完整的資料包就行了,當然,對於UDP這種非連接的不可靠協議來說,如果我們沒有接收到超時錯誤的ICMP返回報,也有可能時由於線路或者其他問題在傳輸過程中丟失了。

我們能夠利用上面這些特性來得到防火牆的ACL(access list),甚至用這些特性來獲得整個網路拓撲結構。如果我們不能從目標得到Unreachable報文或者分片組裝超時錯誤報文,可以作下面的判斷:

1、防火牆過濾了我們發送的協議類型

2、防火牆過濾了我們指定的連接阜

3、防火牆阻塞ICMP的Destination Unreachable或者Protocol Unreachable錯誤消息。

4、防火牆對我們指定的主機進行了ICMP錯誤報文的阻塞。

二、高階TCP掃瞄技術

最基本的利用TCP掃瞄就是使用connect(),這個很容易實現,如果目標主機能夠connect,就說明一個相應的連接阜開啟。不過,這也是最原始和最先被防護工具拒絕的一種。

在高階的TCP掃瞄技術中主要利用TCP連接的三次握手特性和TCP資料頭中的標誌位來進行,也就是所謂的半開掃瞄。

先認識一下TCP資料報頭的這六個標誌位。

URG:(Urgent Pointer field significant)緊急指針。用到的時候值為1,用來處理避免TCP資料流中斷

ACK:(Acknowledgment field significant)置1時表示確認號(Acknowledgment Number)為合法,為0的時候表示資料段不包含確認訊息,確認號被忽略。

PSH:(Push Function),PUSH標誌的資料,置1時請求的資料段在接收方得到後就可直接送到應用程序,而不必等到緩衝區滿時才傳送。

RST:(Reset the connection)用於復位因某種原因引起出現的錯誤連接,也用來拒絕非法資料和請求。如果接收到RST位時候,通常發生了某些錯誤。

SYN:(Synchronize sequence numbers)用來建立連接,在連接請求中,SYN=1,ACK=0,連接響應時,SYN=1,ACK=1。即,SYN和ACK來區分Connection Request和Connection Accepted。

FIN:(No more data from sender)用來釋放連接,表明發送方已經沒有資料發送了。

TCP協議連接的三次握手過程是這樣的:

首先客戶端(請求方)在連接請求中,發送SYN=1,ACK=0的TCP資料包給服務器端(接收請求端),表示要求同服務器端建立一個連接;然後如果服務器端響應這個連接,就返回一個SYN=1,ACK=1的資料報給客戶端,表示服務器端同意這個連接,並要求客戶端確認;最後客戶端就再發送SYN=0,ACK=1的資料包給服務器端,表示確認建立連接。

我們就利用這些標誌位和TCP協議連接的三次握手特性來進行掃瞄探測。

SYN 掃瞄

這種掃瞄方式也被稱為「半開啟」 掃瞄,因為利用了TCP協議連接的第一步,並且沒有建立一個完整的TCP連接。

實現辦法是向遠端主機某連接阜發送一個只有SYN標誌位的TCP資料報,如果主機反饋一個SYN ││ ACK資料包,那麼,這個主機正在監聽該連接阜,如果反饋的是RST資料包,說明,主機沒有監聽該連接阜。在X-Scanner 上就有SYN的選擇項。

ACK 掃瞄

發送一個只有ACK標誌的TCP資料報給主機,如果主機反饋一個TCP RST資料報來,那麼這個主機是存在的。也可以通過這種技術來確定對方防火牆是否是簡單的分組過濾,還是一個基於狀態的防火牆。

FIN

對某連接阜發送一個TCP FIN資料報給遠端主機。如果主機沒有任何反饋,那麼這個主機是存在的,而且正在監聽這個連接阜;主機反饋一個TCP RST回來,那麼說明該主機是存在的,但是沒有監聽這個連接阜。

NULL

即發送一個沒有任何標誌位的TCP包,根據RFC793,如果目標主機的相應連接阜是關閉的話,應該發送回一個RST資料包。

FIN+URG+PUSH

向目標主機發送一個Fin、URG和PUSH分組,根據RFC793,如果目標主機的相應連接阜是關閉的,那麼應該返回一個RST標誌。

上面這些辦法可以繞過一些防火牆,從而得到防火牆後面的主機訊息,當然,是在不被欺騙的情況下的。這些方法還有一個好處就是比較難於被記錄,有的辦法即使在用netstat命令上也根本顯示不出來,而且一般的安全防護設備也根本不記錄這些內容,這樣能夠更好地隱藏自己。

三、高階UDP掃瞄技術

在UDP實現的掃瞄中,多是了利用和ICMP進行的組合進行,這在ICMP中以及提及了。還有一些特殊的就是UDP回饋,比如SQL SERVER,對其1434連接阜發送『x02』或者『x03』就能夠探測得到其連接連接阜。


聲明: 作者:refdom_at_263.net

本文只是作技術方面的探討,目的是讓大家更好的防範來自各方的攻擊,確保網路安全。本文不提供任何程序和軟體的下載訊息。


所有時間均為台北時間。現在的時間是 10:15 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1