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

 

Kail DHCP饿死攻击的原理:

  攻击原理:攻击者持续大量地向DHCP Server申请IP地址,直到耗尽DHCP Server地址池中的IP地址,导致DHCP Server不能给正常的用户进行分配

 

Kali DHCP饿死攻击(一):

  ·使用的DHCP攻击模块dhcpstarv(仅修改Chaddr地址,不修改源MAC地址)

    原理:

      ·当交换机配置了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地址池

<DHCP_Server>reset  ip pool name Ip_150 all 

 

      2.Kali再进行dhcpstarv攻击    

dhcpstarv -v -i eth0

 

       3.检查(交换机开启Debug调试、查看DHCP_Server是否分配IP地址)

 

#因为我们是Console接入 只需要在Console弹出Debug消息即可
<SW>terminal debugging

#关闭其他Debug消息(避免消息太多)
<SW>undo debugging  all

#开启DHCP snooping error错误消息
<SW>debugging dhcp snooping error

 

      我们再来检查一下DHCP_Server地址池是否被占满?

        

         当攻击者仅修改Chaddr进行DHCP攻击时,我们可以使用Chaddr Check检查,检查S-MAC与Chaddr地址是否相同,相同则通过,不相同则丢弃

 

 

Kali DHCP饿死攻击(二):

  ·使用的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饿死攻击的防御,谢谢大家!

 

 

  

 

 


        

      

 

        

  

 

 

 

 

 

 

    

 

posted @ 2023-09-08 13:18  Miraitowa-xy  阅读(2478)  评论(0编辑  收藏  举报