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。 
尷尬的是,我英文不是很好,並沒有把這篇論文看完。。。

DHCP優缺點:

DHCP實際是一種動態的機制,它允許客戶機在啟動引導時請求一個地址,並且有一個集中的庫來記錄這些名稱及地址。DHCP 能夠自動完成系統管理的地址管理工作的部分。只要我們將一台 Windows NT Server/Workstation 計算機配置為使用 DHCP 時,就不再需要我們手工來管理文本文件中大量的網絡名稱及地址了。因為我們不再分配一個固定的地址給某個計算機,這樣,如果要移動網絡中的一台計算機,包括添加或移走以及更換網卡等硬件設備,在新的位置,甚至新的局域網系統中,該工作站計算機都會自動尋找 到新網絡中的 DHCP 服務器,然后在一定的時間間隔后自動獲得一個地址。

優點:

網絡管理員可以驗證IP地址和其他配置參數,而不用去檢查每個主機:DHCP不會同時分配相同的IP地址給兩台主機:DHCP管理員可以約束特定的計算機使用特定的IP地址:可以為每個DHCP作用域設置很多選項:客戶機在不同子網間移動時不需要重新設置IP地址。

缺點:

1.DHCP不能查出網絡上非DHCP客戶機已經在使用的IP地址,例如網絡有一非DHCP客戶機A已經手工分配了IP地址:100.53.46.5,但是DHCP服務器並不能識別出該地址已經被分配了,它向DHCP客戶機配了一個重復的IP地址:100.53.46.5,這就導致了IP地址的沖突。當然,這些IP地址可以從被配置在DHCP服務器上的任何范圍中排除。
2.當網絡上存在兩個DHCP服務器時,一個DHCP服務器不和另一個DHCP服務器通信,就不能查出已被其他服務器租出去的IP地址。因此,兩個DHCP服務器不應該在它們各自的范圍中使用相同的IP地址。此外,DHCP服務器不能跨路由器與客戶機通信,除非路由器允許BOOTP轉發,或者子網允許DHCP中轉借。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM