Wireshark抓包分析Yersinia 根據DHCP協議傳送的偽造資料包攻擊(sending RAW packet)
抓包結果如下:
抓包與分析
幀號時間源地址目的地址高層協議包內資訊概況No. Time Source Destination Protocol Info
5 1.04252000 0.0.0.0 255.255.255.255 DHCP -TransactionID 0x643c9869 源埠>目的埠[請求建立DHCP連結]
以下為物理層的資料幀概況
Frame 5 (286bytes on wire,286 bytes captured) 5號幀,線路286位元組,實際捕獲286位元組Arrival Time: Dec 13, 201719:03:26.818512000
Frame Number: 5 幀序號Packet Length: 286bytes 幀長度Capture Length: 286bytes
[Coloring Rule String: udp] 染色顯示規則的字串:
以下為資料鏈路層乙太網幀頭部資訊
EthernetII, Src: 02:48:33:66:02:51 (02:48:33:66:02:51), Dst: Broadcast(ff:ff:ff:ff:ff:ff)
Source: 02:48:33:66:02:51 (02:48:33:66:02:51) 源:廠名_序號(網絡卡地址)
Type: IP (0x0800) 幀內封裝的上層協議型別為IP(十六進位制碼0800)
以下為網際網路層IP包頭部資訊
InternetProtocol Version 4, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255(255.255.255.255) 網際網路協議,源IP地址,目的IP地址Version: 4 網際網路協議IPv4
Headerlength: 20bytes IP包頭部長度Differentiated Services Field: 0x10 (DSCP0x04: Unknown DSCP; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))差分服務欄位Total Length:272 IP包的總長度
Identification:0x0000(0) 標誌欄位
Flags: 標記欄位(在路由傳輸時,是否允許將此IP包分段,教材125頁)
Fragmentoffset: 0 分段偏移量(將一個IP包分段後傳輸時,本段的標識)Time to live: 16 生存期TTL
Protocol: udp(0x06) 此包內封裝的上層協議為udp
Header checksum: 0xa9ce [validation disabled] 頭部資料的校驗和Source GeoIP: Unknown源IP地址Destination GeoIP: Unknown目的IP地址
以下為傳輸層UDP資料段頭部資訊
UserDatagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
傳輸控制協議UDP的內容Source port: bootpc (68)源埠名稱(埠號)
Destination port: bootps (67)目的埠名bootps(埠號67)
Length: 252bytes 長度Checksum: 0x53e3 [validation disabled] TCP資料段的校驗和Options: 可選項
首先host向區域網廣播一個discover包,此時ip.src為0.0.0.0。
從上圖可以看出,DHCP屬於應用層協議,它在傳輸層使用UDP協議,目的埠是67。
(1)DHCP伺服器仍然使用廣播地址作為目的地址,因為此時請求分配IP的Client並沒有自己ip,而可能有多個Client在使用0.0.0.0這個IP作為源IP向DHCP伺服器發出IP分配請求。通常來說DHCP也不能使用0.0.0.0這個IP作為目的IP地址,但我們是RAW(偽造資料包),於是依然採用廣播的方式,告訴正在請求的Client們,這是一臺可以使用的DHCP伺服器。
(2)我們偽造了一個可用的IP,在資料包的Your (client) IP Address欄位可以看到。
(3)除此之外,伺服器還發送了DHCP資料包和END等資訊。
攻擊方案驗證(攻擊與防範)
DHCP假冒攻擊(sending RAW packet)
耗盡DHCP服務端的地址資源之後,攻擊者就可以架設自己的DHCP伺服器,從而實現DHCP假冒攻擊
首先在假冒的DHCP伺服器上架設DHCP服務,指定地址池範圍為192.168.1.100~200,並將預設閘道器指向Kali Linux的IP地址192.168.1.5。需要注意的是,在將DHCP服務架設好之後,先暫時不要將服務啟用,由於此時Kali Linux上的DHCP 耗盡攻擊仍在繼續,一旦啟用服務,這臺假冒DHCP伺服器的地址資源也將會很快被耗盡。
下面在Kali Linux上停止攻擊,並快速啟用假冒DHCP伺服器上的DHCP服務,可以看到被攻擊主機成功從假冒伺服器處申請到了IP地址。
這裡同樣需要注意一個問題,在將Yersinia停止攻擊之後,一定要快速啟用假冒DHCP伺服器上的DHCP服務。這是因為Yersinia的攻擊原理是傳送大量的DHCP Discover報文,交換機會向其返回DHCP Offer報文,而在這個Offer報文中所提供的IP地址並未真正分配出去,在等待一段時間之後(大約5分鐘),交換機會自動將IP地址收回,因而只要停止攻擊之後過一段時間,交換機就會自動恢復正常。
攻擊成功之後,被攻擊主機的上網流量就將全部被導向到Kali Linux。在Kali中需要執行下面的命令開啟路由轉發功能,以便將被攻擊主機的資料轉發到網際網路。
echo 1> /proc/sys/net/ipv4/ip_forward
最後,就可以在Kali Linux中利用Wireshark等抓包工具來截獲被攻擊主機的上網資料了。不過對於這種DHCP攻擊方式,只能單向截獲從被攻擊主機發往網際網路的資料,而無法截獲從網際網路發回給被攻擊主機的資料,這是由於DHCP攻擊無法去攻擊預設閘道器等網路出口裝置,要想真正實現雙向截獲資料的中間人攻擊,還是要通過ARP欺騙等攻擊方式。
防範DHCP假冒攻擊
在交換機上通過傳統的DHCPSnooping技術就可以來防範DHCP假冒攻擊。當啟用了DHCPSnooping功能之後,交換機的所有埠都將無法接收DHCP Offer報文,這樣假冒的DHCP伺服器就無法向外分配IP地址了。
下面在神州數碼CS6200交換機上啟用並配置DHCPSnooping功能。
#啟用DHCPSnooping功能:
CS6200(config)#ipdhcp snooping enable
#將DHCPSnooping應用於指定的VLAN,這裡應用於預設的VLAN 1:
CS6200(config)#ipdhcp snooping vlan 1
啟用了DHCP Snooping功能之後,還需要設定如果從某個埠收到假冒DHCP服務報文後,將對這個埠如何處理。處理動作有兩個:
shutdown:埠檢測到假冒DHCP Server時,將shutdown此埠。
blackhole:埠檢測到假冒DHCP Server時,將以偽裝資料包的vid和源mac設定blackhole來阻止此Mac的流量,也就是將假冒伺服器的資料暫時丟棄一段時間,可選擇的時間範圍為10~3600秒。
比如將20號埠設定為接收到假冒伺服器報文後,將資料暫時丟棄300秒。
CS6200 (config-if-ethernet1/0/20)#ipdhcpsnooping actionblackhole recovery 300
由於shutdown的處理動作過於嚴格,因而建議採用blackhole模式進行防範。