常见的DHCP攻击防范

一、DHCP原理

DHCP用来自动分配ip地址,每一个DHCP service(DHCP服务器)都有一个DHCP pool(分配池),每一个终端对DHCP service发送请求时,DHCP service会从池中给终端分配IP,分配的方式会因为OS不同而不同,从前往后,从后往前,或者随机分配

终端开启DHCP服务后向网段内广播发送discover请求,DHCP service接收到discover后,记录下discover请求中的CHADDR(硬件地址)和IP地址,回应offer,然后主机在对其发送request请求,服务器ack回应,如下图:

1a97bcb1b2494704b661e303079b3370.png

 下面在eNSP中简单展示DHCP请求的发送过程,如下为拓扑

7731be2d1477460ca6811ee0ceddf207.png

 DHCP service中开启DHCP服务

dhcp enable //开启dhcp
int g0/0/0 //进入端口
ip address 192.168.11.254 24 //配置ip
quit
ip pool test //进入dhcp pool
 gateway-list 192.168.11.254
 network 192.168.11.0 mask 255.255.255.0
 dns-list 8.8.8.8
quit
int g0/0/0
dhcp select global //全局启用

 我们在两者之间进行抓包可以发现终端经过dhcp服务取得ip的过程,其中discover报文中就蕴含着后面提到的DHCP饿死攻击中利用的点。上面的地址为以太网II协议中包含的主机MAC地址,而下面的则是写入到Discover中的CHADDR地址

d2037d2435aa4b8495cbea6c4e5f7caf.png

 二、DHCP攻击

DHCP饿死攻击1

DHCP饿死攻击是利用修改discover报文中的CHADDR地址,不断的向DHCP service发送请求,以此来耗尽DHCP pool中的地址。

我们可以利用kali-linux中的dhcpstarv工具来复现这一攻击模式,如图为拓扑

e2d9900365814e849579b57be9d35103.png

先把终端切换回静态IP,然后重置ip pool

d64f449b2efc45079fa9b788282ecf5c.png

 在kali中使用dhcpstarv工具攻击

adf0d873153d43a394bbc5c3169dc4a0.png

 此时在DHCP service端口处抓到的包如图所示,可见CHADDR地址和MAC地址并不统一

b565406d7aa34f79ae0cb247b8461ee3.png

 

 如图所示IP pool中的ip被消耗完了

b870a9c58d774061b4e580758991c2bd.png

 当其他终端在此想使用DHCP服务时,收到的ip为空

DHCP饿死攻击2

像上文这种仅伪造CHADDR地址的饿死攻击会被DHCP snooping(下文攻击防范时提到)防御下来,于是就有了另一种同时伪造MAC地址和CHADDR地址的方式,可以通过kali中的yersinia工具实现

a32cb0b525cb4450a6e0ff256c408a62.png

 现象如下:e18eced49a084d3eb4f5c9d7fefe88c9.png

 其会同时伪造mac和chaddr222a787b505b482cbefd26be5be51d9f.png

 DHCP 仿冒攻击

在DHCP资源池耗尽的时候,如果还有终端发送广播的discover消息,可以使用kali伪造DHCP服务器,那么终端访问外界都需通过kali进行,kali对其进行了嗅探

在kali-linux中我们可以用yersinia来形成DHCP仿冒攻击:

15f10eace7df4d56afd1e5d802f56287.png

 当终端开启DHCP服务时,kali便能开始嗅探

749d511d5a054f31ab6bfb6f694b1a51.png

 三、DHCP攻击防范

DHCP仿冒攻击防范

使用DHCP snooping中的设置信任端口

/*在交换机SW1中*/
dhcp enable
dhcp snooping enable
vlan 1
dhcp snooping enable //开启vlan 1 中的dhcp snooping
/*设置信任端口*/
dhcp snooping trusted interface g0/0/24

只向信任端口转发discover,只接收信任端口的offer和ack,如此便挡住了仿冒攻击

DHCP饿死攻击1防范

开启DHCP snooping和DHCP snooping check chaddr(用于比较MAC和CHADDR地址是否一致,若不一致则直接丢弃。

/*需要在组内进行*/
port group 1 //创建组1
group-member g0/0/1 to g0/0/24 //1到24端口一同开启
dhcp snooping check dhcp-chaddr enable

DHCP饿死攻击2防范

对于同时仿冒mac和chaddr的攻击,无法仅仅使用check chaddr的方式阻挡,需要通过端口安全方式实现,通过设置使交换机的一个access接口只允许通过设定数量的MAC学习,若是学习到多个给予惩罚

port-security enable //开启端口安全
port-security max-mac-num 1 //最大可学习的mac为1
shutdown
undo shutdown   //重启
port-security protect-action shutdown //惩罚为重启

 

 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栉风沐雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值