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』就能夠探測得到其連線埠。
高階掃瞄技術及原理介紹
scan,是一切入侵的基礎,掃瞄探測一台主機包括是為了確定主機是否活動 主機系統 正在使用哪些埠 提供了哪些服務 相關服務的軟體版本等等,對這些內容的探測就是為了 對症下藥 對主機的探測工具非常多,比如大名鼎鼎的nmap netcat superscan,以及國內的x scanner 等等。icmp...
實現原理 掃瞄槍 掃瞄槍原理及結構
掃瞄槍條碼掃瞄槍也稱條碼掃瞄器,人們常簡稱為條碼掃瞄槍或條碼掃瞄器。掃瞄槍作為光學 機械 電子 軟體應用等技術緊密結合的高科技產品,是繼鍵盤和滑鼠之後的第三代主要的電腦輸入裝置。掃瞄槍自80年代誕生之後,得到了迅猛的發展和廣泛的應用,從最直接的 膠片到各類圖紙圖形以及文稿資料都可以用掃瞄槍輸入到計算...
網路埠掃瞄技術詳細介紹
連線端及標記 ip位址和埠被稱作套接字,它代表乙個tcp連線的乙個連線端。為了獲得tcp服務,必須在傳送機的乙個埠上和接收機的乙個埠上建立連線。tcp連線用兩個連線端來區別,也就是 連線端1,連線端2 連線端互相傳送資料報。乙個tcp資料報包括乙個tcp頭,後面是選項和資料。乙個tcp頭包含6個標誌...