icmp 位於tcp/ip 協議族中的網路層,它的目的是用於在 ip 主機、路由器之間傳遞控制訊息。
有了之前 arp主機發現技術的經驗之後,再來了解一下 icmp 這個協議是如何進行活躍主機發現的,相信對大家來說並不困難。
相比arp簡單明瞭的工作模式,icmp雖然要複雜一些,但是用來掃瞄活躍主機的原理卻是一樣的。
icmp 中提供了多種報文,這些報文又可以分成兩大類:差錯報文和查詢報文。 其中,查詢報文都是由乙個請求和乙個應答構成的。
只需要向目標傳送乙個請求資料報,如果收到了來自目標的回應,就可以判斷目標是活躍主機,否則可以判斷目標是非活躍主機,這與 arp 掃瞄原理是相同的。
這裡我只是提一下,而且描述的也相對模糊,所以可以選擇性的理解但是,與arp掃瞄不同的地方在於icmp查詢報文有4種,分別是響應請求或應答、 時間戳請求或應答、 位址掩碼請求或應答、路由器詢問或應答。
ping命令就是響應請求或應答的一種應用,我們經常會使用這個命令來測試本地與目標之間的連通性,例如我們所在的主機 ip 為 192.168.1.1 ,而通訊的目標 ip 位址為 192.168.1.2,如果要判斷 192.168.1.2 是否為活躍主機就需要向其傳送乙個icmp請求,這個請求的格式如下。
以圖形的形式描述如下:
向目標傳送乙個icmp request
如果目標主機處於活躍狀態,在正常情況下它就會回應乙個icmp reply
要注意的是現在很多網路安全裝置或者機制都會遮蔽icmp,在這種情況下即使目標主機處於活躍狀態,也收不到任何資訊。如果目標主機處於非活躍狀態,他不會給出任何回應
那麼我們就可以得到結論,只要收到了icmp回應,就可以判斷該主機未活躍狀態。
現在編寫乙個利用icmp實現的活躍主機掃瞄程式,這個程式有很多方式可以實現,首先借助scapy庫來完成。其核心思想就是要產生乙個icmp請求。
我們首先檢視scapy庫中icmp型別資料報中需要的引數。
ls(icmp(
))
執行結果:
這裡面大多數引數都不需要設定,唯一需要注意的是type,這個引數的預設值已經是8,所以無須修改。
另外,icmp並沒有目標位址和源位址,所以需要在ip中進行設定,首先檢視一下scapy庫中ip型別資料報中需要的引數。
ls(ip(
))
執行結果:
這一層和位址有關的引數有兩個:dst是目的ip位址,src是源ip位址。
這裡面src會自動設定為本機位址。
所以只需要將dst設定為「1目標主機位址」即可將資料傳送到目標主機上。
接下來構造乙個掃瞄192.168.43.1的icmp請求資料報並將其傳送出去.
data = ip(dst=
"192.168.43.1"
)/ icmp(
)ans, unans = sr(data)
ans.summary(
)
執行結果:
我們再描述仔細一點
data = ip(dst=
"192.168.43.1"
)/ icmp(
)ans, unans = sr(data)
ans.summary(
)for s, r in ans:
print
("發出去的包:%s"
% s.summary())
print
("回應的包:%s"
% r.summary(
))
這裡很明顯是收到包的,所以目標主機是活躍的,那麼我們輸出這個主機的ip位址。
from scapy.
allimport
*data = ip(dst=
"192.168.43.1"
)/ icmp(
)ans, unans = sr(data, timeout=
0.1)
ans.summary(
)for s, r in ans:
print
("發出去的包:%s"
% s.summary())
print
("回應的包:%s"
% r.summary())
for s, r in ans:
print
("[*]主機:%s"
% r[ip]
.src)
print
("[*]存活!"
)
執行結果:
基於ICMP發現活躍主機
第一步 向目標傳送乙個icmp request 第二步 如果目標主機處於活躍狀態,它一定會回應乙個icmpreply 第三步 如果目標主機處於非活躍狀態,那麼它不會給出任何回應 icmp掃瞄和arp掃瞄不同之處在於 icmp的查詢報文有四種 1.響應請求或應答 2.時間戳請求或應答 3.位址掩碼請求...
基於UDP的活躍主機發現技術
udp全稱是使用者資料協議,在網路中它與tcp一樣用於處理資料報,是一種無法連線的協議。在osi模型中位於第4層 傳輸層,處於ip的上一層。但基於udp的或與主機發現技術和tcp不同,udp沒有三次握手。當想主機傳送以個udp資料報之後,目標是不會發出任何udp資料報的。不過,如果目標主機是處於活躍...
nmap中活躍主機發現技術
nmap pr 目標ip 優點 準確度高 缺點 不能對處於不同網段的目標主機進行掃瞄 icmp響應請求與應答 nmap pe 目標ip 過程與ping一樣 icmp協議的時間戳主機發現 nmap pp 目標ip 資料報type字段值變為13 tcp syn掃瞄 nmap ps 埠 目標ip tcp ...