DHCP工作原理
DHCP 使用客戶(hù)端/服務(wù)器模型。網(wǎng)絡(luò)管理員建立一個(gè)或多個(gè)維護(hù) TCP/IP 配置信息并將其提供給客戶(hù)端的 DHCP 服務(wù)器丐枉。DHCP 服務(wù)器以地址租約的形式將該配置提供給發(fā)出請(qǐng)求的客戶(hù)端
①發(fā)現(xiàn)階段:DHCP客戶(hù)機(jī)以廣播方式發(fā)送DHCP discover報(bào)文來(lái)尋找DHCP服務(wù)器
②提供階段:DHCP服務(wù)器在網(wǎng)絡(luò)中接收到DHCP discover報(bào)文后會(huì)做出響應(yīng),它從尚未出租的IP地址中挑選一個(gè)分配給DHCP客戶(hù)機(jī)谍倦,向DHCP客戶(hù)機(jī)發(fā)送一個(gè)包含出租的IP地址和其他設(shè)置的DHCP offer報(bào)文
③選擇階段:如果有多臺(tái)DHCP服務(wù)器向DHCP客戶(hù)機(jī)發(fā)來(lái)的DHCP offer提供報(bào)文耍铜,則DHCP客戶(hù)機(jī)只接受第一個(gè)收到的DHCP offer提供報(bào)文邑闺,然后它就以廣播方式回答一個(gè)DHCP request請(qǐng)求報(bào)文,該報(bào)文中包含向它所選定的DHCP服務(wù)器請(qǐng)求IP地址的內(nèi)容
④確認(rèn)階段:DHCP服務(wù)器收到DHCP客戶(hù)機(jī)回答的DHCP request請(qǐng)求報(bào)文之后业扒,它便向DHCP客戶(hù)機(jī)發(fā)送一個(gè)包含它所提供的IP地址和其他設(shè)置的DHCP ack確認(rèn)報(bào)文检吆,告訴DHCP客戶(hù)機(jī)可以使用它所提供的IP地址
⑤重新登錄:以后DHCP客戶(hù)機(jī)每次重新登錄網(wǎng)絡(luò)時(shí)舒萎,就不需要再發(fā)送DHCP discover發(fā)現(xiàn)報(bào)文了程储, 而是直接發(fā)送包含前一次所分配的IP地址的DHCP request請(qǐng)求報(bào)文
⑥更新租約:DHCP服務(wù)器向DHCP客戶(hù)機(jī)出租的IP地址一般都有一個(gè)租借期限 ,期滿(mǎn)后DHCP服務(wù)器便會(huì)收回出租的IP地址
DHCP包分析
下面著重來(lái)分析這4個(gè)數(shù)據(jù)包臂寝,它們代表了客戶(hù)機(jī)和DHCP服務(wù)器的交互過(guò)程章鲤,也是IP動(dòng)態(tài)分配的過(guò)程
1,DHCP Discover數(shù)據(jù)包
(1)Client端使用IP地址0.0.0.0發(fā)送了一個(gè)廣播包咆贬,可以看到此時(shí)的目的IP為255.255.255.255败徊。Client想通過(guò)這個(gè)數(shù)據(jù)包發(fā)現(xiàn)可以給它提供服務(wù)的DHCP服務(wù)器
(2)從下圖可以看出,DHCP屬于應(yīng)用層協(xié)議掏缎,它在傳輸層使用UDP協(xié)議皱蹦,目的端口是67
2,DHCP Offer包
當(dāng)DHCP服務(wù)器收到一條DHCP Discover數(shù)據(jù)包時(shí)眷蜈,用一個(gè)DHCP Offerr包給予客戶(hù)端響應(yīng)
(1)DHCP服務(wù)器仍然使用廣播地址作為目的地址沪哺,因?yàn)榇藭r(shí)請(qǐng)求分配IP的Client并沒(méi)有自己ip,而可能有多個(gè)Client在使用0.0.0.0這個(gè)IP作為源IP向DHCP服務(wù)器發(fā)出IP分配請(qǐng)求,DHCP也不能使用0.0.0.0這個(gè)IP作為目的IP地址酌儒,于是依然采用廣播的方式辜妓,告訴正在請(qǐng)求的Client們,這是一臺(tái)可以使用的DHCP服務(wù)器
(2)DHCP服務(wù)器提供了一個(gè)可用的IP,在數(shù)據(jù)包的Your (client) IP Address字段可以看到DHCP服務(wù)器提供的可用IP
(3)除此之外忌怎,如圖中紅色矩形框的內(nèi)容所示籍滴,服務(wù)器還發(fā)送了子網(wǎng)掩碼,路由器榴啸,DNS孽惰,域名,IP地址租用期等信息
3鸥印,DHCP Request包
當(dāng)Client收到了DHCP Offer包以后(如果有多個(gè)可用的DHCP服務(wù)器灰瞻,那么可能會(huì)收到多個(gè)DHCP Offer包),確認(rèn)有可以和它交互的DHCP服務(wù)器存在辅甥,于是Client發(fā)送Request數(shù)據(jù)包酝润,請(qǐng)求分配IP。 此時(shí)的源IP和目的IP依然是0.0.0.0和255.255.255.255
4璃弄,DHCP ACK包
服務(wù)器用DHCP ACK包對(duì)DHCP請(qǐng)求進(jìn)行響應(yīng)
在數(shù)據(jù)包中包含以下信息要销,表示將這些資源信息分配給Client. Your(client) IP address:分配給Client的可用IP
后面有許多項(xiàng)option信息,前兩項(xiàng)是DHCP服務(wù)器發(fā)送的消息類(lèi)型(ACK)和服務(wù)器的身份標(biāo)識(shí)夏块,后面幾項(xiàng)是: Subnet Mask:Client端分配到的IP的子網(wǎng)掩碼疏咐; Router:路由器 Domain Name Server:DNS,域名服務(wù)器 Domain Name:域名 IP Address Lease Time:IP租用期
DHCP starvation attack
有許多中攻擊DHCP的技術(shù)纤掸,這里介紹其中一種,有點(diǎn)類(lèi)似于SYN 洪范攻擊浑塞。 DHCP starvation attack借跪,中文即DHCP饑餓攻擊,可以顧名思義一下酌壕,饑餓攻擊掏愁,就是大量地進(jìn)食,把可以吃的食物全部吃完卵牍,然后讓其他人沒(méi)得吃果港,最后給其他人提供一些毒藥,把人家毒死糊昙,姑且可以這樣淺顯地認(rèn)為
下面來(lái)說(shuō)這種攻擊是如何實(shí)現(xiàn)的辛掠。一些不法分子,偽造合法的MAC地址释牺,不斷地向DHCP服務(wù)器發(fā)出DHCP Request包萝衩,最后耗盡服務(wù)器的可用IP,于是原有的這臺(tái)DHCP服務(wù)器便不能夠給客戶(hù)端分配IP了尊沸,此時(shí)不法分子再偽造一臺(tái)DHCP服務(wù)器菲茬,給客戶(hù)端分配IP,將客戶(hù)端的默認(rèn)網(wǎng)關(guān)和DNS都設(shè)置成自己的機(jī)器白群,于是便可以對(duì)客戶(hù)端進(jìn)行中間人攻擊
1.開(kāi)啟操作系統(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默認(rèn)沒(méi)有安裝dhcpstarv皆刺,也可以用yersinia代替
3.安裝dhcp服務(wù)器udhcpd
apt-get install udhcpd
然后修改一下配置文件
vim /etc/udhcpd.conf
4.啟動(dòng)DHCP服務(wù)器
service udhcpd start
然后啟動(dòng)另一臺(tái)Kali機(jī)當(dāng)作目標(biāo)靶機(jī)汇竭,由于正常的DHCP服務(wù)器已經(jīng)沒(méi)有可分配的IP資源耸序,新的內(nèi)網(wǎng)主機(jī)就會(huì)使用攻擊者DHCP服務(wù)器分配的IP
5.抓取目標(biāo)靶機(jī)的圖片
在攻擊主機(jī)上開(kāi)啟driftnet
driftnet -i eth0