網絡協議之DHCP協議(一)------DHCP協議基礎

一,動態主機配置協議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來完成網絡斷開與連接的過程:

<code class=”hljs dos has-numbering” style=”display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: “Source Code Pro”, monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;”> <span class=”hljs-winutils” style=”color: rgb(0, 0, 136); box-sizing: border-box;”>ipconfig</span> /release 斷開主機當前的網絡連接 <span class=”hljs-winutils” style=”color: rgb(0, 0, 136); box-sizing: border-box;”>ipconfig</span> /renew 請求連接網絡 </code><ul class=”pre-numbering” style=”box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);”><li style=”box-sizing: border-box; padding: 0px 5px;”>1</li><li style=”box-sizing: border-box; padding: 0px 5px;”>2</li><li style=”box-sizing: border-box; padding: 0px 5px;”>3</li></ul>

在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都設置成自己的機器,於是便可以對客戶端進行中間人攻擊。

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