高階掃描技術及原理介紹(轉)
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命令上也根本顯示不出來,而且一般的防護裝置也根本不記錄這些內容,這樣能夠更好地隱藏自己。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10172717/viewspace-928875/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 掃碼登入認證技術原理介紹及實踐
- 常用作業系統掃描工具介紹(轉)作業系統
- 電腦掃描檔案怎麼掃描 win10電腦掃描檔案方法介紹Win10
- WebSocket原理及技術簡介Web
- Text Scanner Mac高階版ocr文字掃描神器Mac
- PostgreSQL技術內幕(七)索引掃描SQL索引
- React 高階元件介紹React元件
- 淺談埠掃描原理
- 【Lua篇】靜態程式碼掃描分析(一)初步介紹
- Harbor倉庫映象掃描原理
- APP滲透測試基本內容與漏洞掃描介紹APP
- Docker的原理及特性介紹Docker
- 「Oracle」Oracle高階查詢介紹Oracle
- javascript高階函式的介紹JavaScript函式
- 簡單介紹資料庫技術發展階段!資料庫
- 【技術乾貨】Oracle資料庫漏洞掃描指南Oracle資料庫
- 條形碼生成原理介紹及簡介
- Kafka的原理介紹及實踐Kafka
- 地面互動投影技術原理和系統組成介紹
- AIGC底層技術介紹AIGC
- 容器技術和Docker介紹Docker
- 2.awd初階_指令碼掃描指令碼
- 深入探索Android熱修復技術原理讀書筆記 —— 熱修復技術介紹Android筆記
- 七、Spring MVC高階技術SpringMVC
- mybatis原理,配置介紹及原始碼分析MyBatis原始碼
- Spring Cloud Stream 體系及原理介紹SpringCloud
- 【技術乾貨】盤點最流行的Web漏洞掃描工具!Web
- 液晶顯示技術TCON介紹
- Docker容器技術與Docker介紹Docker
- canvas描邊和填充介紹Canvas
- AWVS掃描器掃描web漏洞操作Web
- 全表掃描和全索引掃描索引
- 一圖搞懂掃碼登入的技術原理
- 多位數碼管動態掃描原理分析
- 《AOP挖掘記》概念介紹及原理初探(一)
- Flink sql實現原理及Apache Calcite介紹SQLApache
- 一種基於Android、iOS系統的手機掃描車牌識別技術,本地掃描識別車牌AndroidiOS
- 負載均衡技術(一)———負載均衡技術介紹負載
- context:component-scan屬性介紹,SSM的bean被掃描兩次問題ContextSSMBean