1.DHCP饿死攻击及防御(基于ENSP模拟器、Kali攻击机实现)
·Kali攻击机一台
·ENSP模拟器
实验说明:
·通过配置DHCP_Server,使得192.168.150.0/24子网内的终端能够自动获取IP地址及DNS
·通过配置SW交换机,开启DHCP Snooping功能,用于保证DHCP客户端从合法的DHCP服务器获取IP地址
·Kali攻击机接入192.168.150.0/24内网中,获取内网IP地址,使用两种DHCP攻击方式并抓包进行分析(Wireshark)
实验步骤:
·Kali如何接入ENSP网络(Kali接入VMnet8网络):
1.ENSP中拖出Cloud设备
2.1设置Cloud设备的相关参数(图解)
2.2设置Cloud设备的相关参数(图解)
·SW交换机配置DHCP Snooping,配置接入口启用DHCP Snooping功能
#启用DHCP功能 dhcp enable #启用DHCP Snooping功能 dhcp snooping enable #将接入终端接口全部启用DHCP Snooping功能 port-group group-member GigabitEthernet 0/0/1 to GigabitEthernet 0/0/20 dhcp snooping enable #将DHCP_Server连接端口设置为信任接口 interface g0/0/24 dhcp snooping trusted
DHCP Snooping绑定表如何形成的:
设备根据DHCP服务器回应的DHCP ACK报文信息生成DHCP Snooping绑定表(提取其中的Chaddr-MAC与IP Address、接口编号、VLAN进行绑定)
·DHCP_Server创建地址池,并分配地址给内网终端
DHCP_Server配置:
sysname DHCP_Server #IP地址配置 interface GigabitEthernet0/0/0 ip address 192.168.150.254 255.255.255.0 #DHCP服务器配置 配置DNS服务器为114.114.114.114/8.8.8.8 dhcp enable ip pool IP_150 gateway-list 192.168.150.254 network 192.168.150.0 mask 255.255.255.0 dns-list 114.114.114.114 8.8.8.8 interface GigabitEthernet0/0/0 dhcp select global
DHCP_Client查看是否获取到IP地址
Kali获取IP地址
1.1关闭VMnet8 DHCP分配情况:
2.Kali自动获取IP地址:
#第一次登录Kali 用的是用户账号进行登录 我们需要修改为管理员进行登录 sudo passwd root #设置Root的密码 #再次确认Root的密码 su root #切换root进行登录 dhclient #自动获取IP地址 ip a #查看获取到的IP地址
3.DHCP_Server服务器查看IP地址分配情况
display ip pool name Ip_150 used
攻击原理:攻击者持续大量地向DHCP Server申请IP地址,直到耗尽DHCP Server地址池中的IP地址,导致DHCP Server不能给正常的用户进行分配
原理:
·当交换机配置了DHCP Snooping后,会自动提取DHCP ACK报文中的IP地址与目的接口的MAC所绑定
·但只修改Chaddr地址,既能占用DHCP服务器的IP地址,报文也不会被默认配置的DHCP Snooping丢弃(DHCP Server是根据请求报文中的Chaddr字段来为其一一分配IP地址)
Kali安装dhcpstarv库:
由于博主Kali版本为2021,默认好像是没有安装dhcpstarv库
1.修改更新apt更新源
#修改镜像源 vi /etc/apt/sources.list #按i写入 将这两段写入到sources.list文件中 如何再按ESC 按: 输入wr 保存写入 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib #更新源&更新所有文件 apt-get update & apt-get upgrade
2.指定安装dhcpstarv库
#安装dhcpstarv库 apt-get install dhcpstarv
Kali使用dhcpstarv攻击DHCP服务器:
使用教程:
#启用dhcpstarv攻击 出接口为eth0接口(连接DHCP服务器的接口) dhcpstarv攻击时,源MAC地址是不会改变的,只有Chaddr地址会变化 dhcpstarv -v(前台显示) -i(指定网卡) [网卡名称] dhcpstarv -v -i eth0
我们可以看到dhcpstarv一直在向192.168.150.0/24网段疯狂发送dhcp Request报文请求IP地址。
作为DHCP Server服务器也在疯狂的回复DHCP Offer报文,当Kali收到后窃喜的继续发请求占用DHCP服务器地址,DHCP Server服务器以为DHCP_Client获取地址,于是发送DHCP ACK确认
这样修改Chaddr的情况,DHCP Snooping并不能进行防御,我们可以看到DCHP Snooping绑定表也被占满了:
DHCP_Server服务器的IP地址也被占满了(测试的时候,不要攻击太久 会造成卡顿)
SW防御仅修改Chaddr地址的攻击手段:
我们可以看到dhcpstarv攻击时,源MAC地址是不变的,只有Chaddr地址是在变化的
所以我们在SW上开启Snooping Check检查,检查源MAC与Chaddr是否一致(一致则通过,不一致则丢弃)
SW:
#将接入接口都配置check检查(检查chaddr和源MAC是否一致) port-group group-member GigabitEthernet 0/0/1 to GigabitEthernet 0/0/20 dhcp snooping check dhcp-chaddr enable
Kali再进行dhcpstarv攻击:
1.我们先清空DHCP地址池
reset ip pool name Ip_150 all
2.Kali再进行dhcpstarv攻击
dhcpstarv -v -i eth0
3.检查(交换机开启Debug调试、查看DHCP_Server是否分配IP地址)
#因为我们是Console接入 只需要在Console弹出Debug消息即可terminal debugging #关闭其他Debug消息(避免消息太多) undo debugging all #开启DHCP snooping error错误消息 debugging dhcp snooping error
我们再来检查一下DHCP_Server地址池是否被占满?
当攻击者仅修改Chaddr进行DHCP攻击时,我们可以使用Chaddr Check检查,检查S-MAC与Chaddr地址是否相同,相同则通过,不相同则丢弃
·使用的DHCP攻击模块yersinia(Chaddr与S-MAC一同修改)
使用教程:
#打开yersinia图形化界面 yersinia -G
Wireshark抓包分析(抓取DHCP Discover报文,查看S-MAC与Chaddr地址是否一同修改)
DHCP_Server查看地址是否被占用
我们可以看到当Chaddr和S-MAC同时修改时,Chaddr Check检查并不能起到作用,那我们该怎么办呢?
·我们可以发现,当Kali频繁切换MAC地址,发送DHCP Discover报文时,我们的MAC地址表也会存在很多的MAC地址
·我们可以在SW开启端口安全,设置最大MAC地址数为1,并配置超出关闭端口
SW:
#我们将接入端口都设置最大MAC数为1,配置MAC老化时间为60s port-group group-member GigabitEthernet 0/0/1 to GigabitEthernet 0/0/20 port-security enable port-security protect-action shutdown #超过最大MAC数则关闭端口 #配置端口安全shutdown恢复时间5分钟 error-down auto-recovery cause port-security interval 300 #设置MAC地址老化时间 S5700没有该命令 mac-address aging-time 60
Kali再次进行攻击:
我们会发现端口直接被关闭了
DHCP_Server查看分配情况:
防御成功!
上面就是基于ENSP,DHCP饿死攻击的防御,谢谢大家!