Wireshark分析DHCP

DHCP,DNS和HTTP是3種常見的高層協議。

一,動態主機配置協議DHCP

1,DHCP簡介

DHCP(Dynamic Host Configuration Protocol),動態主機配置協議,是一個應用層協議。當我們將客戶主機ip地址設置爲動態獲取方式時,DHCP服務器就會根據DHCP協議給客戶端分配IP,使得客戶機能夠利用這個IP上網。

DHCP的前身是BOOTP協議(Bootstrap Protocol),BOOTP被創建出來爲連接到網絡中的設備自動分配地址,後來被DHCP取代了,DHCP比BOOTP更加複雜,功能更強大。後面可以看到,在用Wireshark過濾顯示DHCP包,需要輸入過濾條件BOOTP,而不是DHCP,但或許是因爲我使用的Wireshark版本是比較舊的1.12.9,沒有在新版本中嘗試過,也許可以輸入DHCP讓其只顯示DHCP包。

2,DHCP的實現

這裏寫圖片描述 
DHCP的實現分爲4步,分別是: 
第一步:Client端在局域網內發起一個DHCP Discover包,目的是想發現能夠給它提供IP的DHCP Server。 
第二步:可用的DHCP Server接收到Discover包之後,通過發送DHCP Offer包給予Client端應答,意在告訴Client端它可以提供IP地址。 
第三步:Client端接收到Offer包之後,發送DHCP Request包請求分配IP。 
第四步:DHCP Server發送ACK數據包,確認信息。


二,利用Wireshark抓取DHCP包

1,分析

要想抓取到DHCP包,先要保證有可用的DHCP服務器,然後將主機IP地址獲取方式設置爲自動獲取。如果主機在抓包之前已經聯網,需要先斷開主機的網絡連接,然後再連接網絡。在cmd下使用命令ipconfig來完成網絡斷開與連接的過程:

 ipconfig /release 斷開主機當前的網絡連接 
 ipconfig /renew   請求連接網絡
  • 1
  • 2
  • 3

在cmd中可以使用ipconfig /?查看各參數的含義: 
這裏寫圖片描述 
(1)ipconfig /release 
斷開當前的網絡連接,主機IP變爲0.0.0.0,主機與網絡斷開,不能訪問網絡。 
(2)ipconfig /renew 
更新適配器信息,請求連接網絡,這條命令結束之後,主機會獲得一個可用的IP,再次接入網絡。

2,開始抓包

實驗環境:Win10,Wireshark1.12.9,有線連接 
(1)在Wireshark中點擊start開始抓包,在過濾欄輸入bootp,使其只顯示DHCP數據包。 
(2)在cmd中輸入ipconfig /release 斷開網絡連接。 
這裏寫圖片描述 
可以看到此時所有的網卡都已經斷開。以太網處於斷開狀態。

這裏寫圖片描述
Wireshark中截獲到一個DHCP Release數據包。

(3)在cmd中輸入ipconfig /renew 請求網絡連接。 
這裏寫圖片描述
此時,可以看到在Wireshark中新增了4個DHCP數據包: 
數據包1:DHCP Discover 
數據包2:DHCP Offer 
數據包3:DHCP Request 
數據包4:DHCP ACK

這裏寫圖片描述 
等待這條命令執行完畢之後,在cmd中可以看到主機被分配了IP,主機成功連入網絡中。

(4)爲了後續分析使用,我們再執行一次ipconfig /renew: 
這裏寫圖片描述
可以看到Wireshark中新增了3個數據包:DHCP ACK;DHCP Request;DHCP ACk。 
如果再次使用ipconfig /renew,每執行一次會新增2個數據包:DHCP Request;DHCP ACk。

三,DHCP包分析

下面着重來分析當執行,ipconfig /renew這條命令產生的4個DHCP數據包,這4個數據包代表了客戶機和DHCP服務器的交互過程,也是IP動態分配的過程。 
這裏寫圖片描述 
1,DHCP Discover數據包 
(1)Client端使用IP地址0.0.0.0發送了一個廣播包,可以看到此時的目的IP爲255.255.255.255。Client想通過這個數據包發現可以給它提供服務的DHCP服務器。

(2)從下圖可以看出,DHCP屬於應用層協議,它在傳輸層使用UDP協議,目的端口是67。 
這裏寫圖片描述

2,DHCP Offer包 
當DHCP服務器收到一條DHCP Discover數據包時,用一個DHCP Offerr包給予客戶端響應。 
這裏寫圖片描述 
(1)DHCP服務器仍然使用廣播地址作爲目的地址,因爲此時請求分配IP的Client並沒有自己ip,而可能有多個Client在使用0.0.0.0這個IP作爲源IP向DHCP服務器發出IP分配請求,DHCP也不能使用0.0.0.0這個IP作爲目的IP地址,於是依然採用廣播的方式,告訴正在請求的Client們,這是一臺可以使用的DHCP服務器。

(2)DHCP服務器提供了一個可用的IP,在數據包的Your (client) IP Address字段可以看到DHCP服務器提供的可用IP。

(3)除此之外,如圖中紅色矩形框的內容所示,服務器還發送了子網掩碼,路由器,DNS,域名,IP地址租用期等信息。

3,DHCP Request包 
當Client收到了DHCP Offer包以後(如果有多個可用的DHCP服務器,那麼可能會收到多個DHCP Offer包),確認有可以和它交互的DHCP服務器存在,於是Client發送Request數據包,請求分配IP。 
此時的源IP和目的IP依然是0.0.0.0和255.255.255.255。

4,DHCP ACK包 
服務器用DHCP ACK包對DHCP請求進行響應。 
這裏寫圖片描述 
在數據包中包含以下信息,表示將這些資源信息分配給Client. 
Your(client) IP address:分配給Client的可用IP。 
後面有許多項option信息,前兩項是DHCP服務器發送的消息類型(ACK)和服務器的身份標識,後面幾項是: 
Subnet Mask:Client端分配到的IP的子網掩碼; 
Router:路由器 
Domain Name Server:DNS,域名服務器 
Domain Name:域名 
IP Address Lease Time:IP租用期。


四,DHCP starvation attack

1,DHCP starvation attack,DHCP飢餓攻擊 
其實各種各樣的攻擊技術總是會讓人覺得興奮。拋卻道德不談,必須承認的是,製造這些攻擊的人都是高智商。

有許多中攻擊DHCP的技術,這裏介紹其中一種,有點類似於SYN 洪範攻擊。 
DHCP starvation attack,中文即DHCP飢餓攻擊,可以顧名思義一下,飢餓攻擊,就是大量地進食,把可以吃的食物全部吃完,然後讓其他人沒得吃,最後給其他人提供一些毒藥,把人家毒死,姑且可以這樣淺顯地認爲。

下面來說這種攻擊是如何實現的。一些不法分子,僞造合法的MAC地址,不斷地向DHCP服務器發出DHCP Request包,最後耗盡服務器的可用IP,於是原有的這臺DHCP服務器便不能夠給客戶端分配IP了,此時不法分子再僞造一臺DHCP服務器,給客戶端分配IP,將客戶端的默認網關和DNS都設置成自己的機器,於是便可以對客戶端進行中間人攻擊。

2,一些關於DHCP安全性的研究 
網絡到處都有安全漏洞啊,上網需謹慎。現在有很多關於DHCP安全的研究,一些論文提出了諸如四元組安全認證的辦法,還有一些論文提出了安全DHCP協議。

例如這篇論文《A Secure DHCP Protocol to Mitigate LAN Attacks》,這算是一篇比較新的論文了,16年發表的,作者提出了2種技術,一種是認證和祕鑰管理技術,另一種是消息認證技術(利用數字信號認證Server和Client端的交互信息),可以減輕LAN Attack。 
尷尬的是,我英文不是很好,並沒有把這篇論文看完。。。


感謝原文作者。

原文地址:http://blog.csdn.net/qq_24421591/article/details/50936469




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章