一、DHCP的报文格式
- Message type:消息类型(1表示请求,2表示响应)
- Hardware type:硬件类型
- Hardware address length:硬件地址长度
- Hops:DHCP报文经过中继的数目。
- Transaction ID:事务ID,客户端发起请求是选择一个随机数,用来标识一次地址请求过程。
- Seconds elapsed:客户端开始DHCP请求后所经过的时间,客户端从开始获取地址或地址续租更新后所用的时间,单位是秒,占用2字节
- Bootp flags:保留标志字段,只有标志字段最高位才有意义,其余15位均被置为0,最高位被解释为单播或者广播相应标志位,0表示客户端请求服务器以单播形式发送相应报文;1表示客户端请求服务器以广播形式发送响应报文,占用2字节
- Client IP address:客户机的IP
- Your (client)IP address:服务器能够提供给客户机的IP地址
- Next server IPaddress:DHCP 服务器的地址
- Relay agent IP address:中继代理的IP
- Client MAC address:客户端的MAC地址
- Client hardware addresspadding:客户端MAC地址的填充。
- Server host name :服务器名称
- Boot file name:启动文件的名称
- Magic cookie:这个字段是一个固定的字节流,一般都为DHCP。
- Options:不同的报文会有不同的Options
- Options:(53)DHCPMessage Type(ACK)
Length:1
DHCP:ACK(5) - Options:(58)Renewal Time Value
Length:4
Renewal Time Value:(345600s)4 days - Options:(59)Rebinding Time Value
Length:4
Rebinding Time Value:(604800s)7 days - Options:(51)IP Address Lease Time
Length:4
IP Address Lease Time:(691200s)8 days - Options:(54)DHCP Server Identifier(192.168.120.100)
Length:4
DHCP Server Identifier:192.168.120.100 - Option:(1)Subnet Mask(255.255.255.0)
- Option:(81)Client Fully Qualified Domain Name
Length:3
Flags:0x00
A-RR result:255
PTR-RR result:255 - Option:(3)Router
Length:4
Router:192.168.50.254 - Option:(6)Domain Name Server
Length:8
Domain Name Server:8.8.8.8
Domain Name Server:114.114.114.114 - Option:(255)End
Padding :0000000000
- Options:(53)DHCPMessage Type(ACK)
二、实施DHCP欺骗
1、DHCP欺骗原理
使用一台kali作为攻击主机,向我们的DHCP服务器发起DHCP Discover请求,让服务器给我们的攻击主机分配IP地址。当它的IP地址分配完了就无法向正常的客户机提供IP,此时攻击主机把自己伪造成DHCP服务器,就可以向客户机提供IP,这就是DHCP欺骗。
2、实验配置
(1)网络拓扑图
(2)ping测试
使用kali去攻击DHCP服务器 ,配置完成后ping测试,看下能够访问到DHCP Server
kali配置TCP/IP参数:192.168.50.100 255.255.255.0 192.168.50.254
523 vim /etc/network/interfaces
524 ifdown eth0
525 ifup eth0
526 ifconfig
527 ping 192.168.120.100
3、攻击
(1)安装Yersinia
- .图形化界面
- 参数:-G Graphical mode (GTK)
如果使用-G参数没反应,无法进入图形化界面,可尝试使用-I参数,yersinia攻击支持CDP、DHCP、802.1Q、802.1X、DTP、HSRP、ISL(思科私有的STP报文)、MRLS、STP、VTP
(2)DHCP地址分配情况
先看下DHCP服务器50网段的分配情况
50网段的IP地址池是192.168.50.22~192.168.50.33,地址总数,12个,使用中3个,可用还剩9个。
(3)实施攻击
- 使用kali的yersinia实施攻击
- 开始攻击之前先抓包,抓取DHCP Server到路由器的流量;
- 开始攻击后,会不停的再发DHCP Discover报文;
(4)抓包分析
- DHCP中继R1->DHCP Server 的报文
抓到好多DHCP Discover报文,而且看不出来这DHCP Discover报文是真的假的,
这里source是192.168.120.254因为数据都是从DHCP 中继过来的。
- 交换机SW到DHCP中继R1的数据流量
这边可以看到都是随机的MAC地址在发DHCP Discover请求,因为发的广播包没有IP地址,所以这里不需要去产生随机的IP。
- DHCP Serve->R1的响应报文
查看响应报文(在DHCP中继到DHCP Server这条链路)直接去找源IP为192.168.120.100的
ip.src==192.168.120.100
从DHCP Offer报文的Your(Client)IP address可以看到刚好是DHCP Server上面我们为50网段设置的地址池的IP中剩余的9个IP地址,从192.168.50.25到192.168.50.33, 其实就是把DHCP50网段可以提供的IP全部响应了。
- DHCP Server资源占用情况
我们再去看DHCP服务器上50网段的统计信息,地址总数12个,使用中12个。
地址租用这里是不会有记录的,因为客户机没有响应,没有发送DHCP Request,只有客户机响应完了才会把客户机的信息记录在这里。
即使服务器已经把这个IP地址留给客户机了,但实际客户机没有使用。所以在显示统计信息这儿会显示使用中有12个,就服务器已经认为把IP地址预留给客户机了。
4、伪造
(1)伪造的配置过程
DHCP地址池中的地址已经没有了,有的分配有的预留给客户机了。
kali上面使用yersinia伪造DHCP服务器,选creating DHCP rogue server。
Server ID:DHCP服务器,可以填本地IP 192.168.50.100
Start IP 可以写一个非本网段的,192.168.10.10~192.168.10.20
Lease Time:租约时间,随便填的 720Renew Time:更新租约时间 随便写的 720
Subnet Mask:255.255.255.0
Router:来个假的 192.168.10.254
DNS Server 9.9.9.9
domain写一个woniu.com
先不要直接点OK,因为你前面的DHCP攻击还没有停,它是广播发的,你点了OK就相当于把你的kali伪造成了DHCP服务器,因为DHCP Discover攻击报文是广播,所以你自己伪造的DHCP服务器也会受到DHCP攻击报文。
(2)先停掉DHCP攻击
先停掉DHCP Discover攻击
(3)开启伪造DHCP Server
(4)伪造成功
回到Win10虚拟机上,先release一下再renew一下,回到DHCP服务器查看到50网段是被占满的,
这里Win10虚拟机也从kali伪造的DHCP Server获取到了新的IP地址。
5、总结
以下是我听课之后,对过程的大致描述,如有错误,欢迎指正!
这个过程应该是:kali发起DHCP Discover广播使得DHCP服务器的50网段的IP地址全部被占用,然后kali伪造成DHCP服务器,由于之前Win10这台主机我们有通过DHCP服务器动态获取IP地址且租约还未到期,kali攻击并伪造DHCP服务器后,Win10发现有更近的DHCP服务器,所以想kali伪造的DHCP Server发起DHCP Discover请求获取新的IP地址,但此时真正的DHCP Server的Ip地址是处于占满状态的,50网段那儿有个感叹号表示50网段是无法正常工作的,即使Win10从kali伪造的DHCP Server获取新的IP后,原来的DHCP Server也不会释放IP,因为租约并没有到期。