相关参数:

  ·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.8dhcp 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 contribdeb-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地址是否相同,相同则通过,不相同则丢弃

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老化时间为60sport-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饿死攻击的防御,谢谢大家!