专栏首页黑白安全DHCP攻击的实施与防御

DHCP攻击的实施与防御

DHCP攻击针对的目标是网络中的DHCP服务器,原理是耗尽DHCP服务器所有的IP地址资源,使其无法正常提供地址分配服务。然后在网络中再架设假冒的DHCP服务器为客户端分发IP地址,从而来实现中间人攻击。本文以神州数码CS6200交换机为例,从原理、实施、防御三个方面对DHCP攻击进行了全面介绍。

1. DHCP工作过程

DHCP客户端从服务端申请到IP地址等网络配置信息需要经过四个步骤,每个步骤需要发送相应类型的数据报文,如图1所示。

图 1 DHCP工作过程

①首先由客户端以广播方式发出“DHCP Discover”报文来寻找网络中的DHCP服务端。

②当服务端接收到来自客户端的“DHCP Discover”报文后,就在自己的地址池中查找是否有可提供的IP地址。如果有,服务端就将此IP地址做上标记,并用“DHCP Offer”报文将之发送回客户端。

③由于网络中可能会存在多台DHCP服务端,所以客户端可能会接收到多个“DHCP Offer”报文。此时客户端只选择最先到达的“DHCP Offer”,并再次以广播方式发送“DHCP Request”报文。一方面要告知它所选择的服务端,同时也要告知其它没有被选择的服务端,这样这些服务端就可以将之前所提供的IP地址收回。

④被选择的服务端接收到客户端发来的“DHCP Request”报文后,首先将刚才所提供的IP地址标记为已租用,然后向客户端发送一个“DHCP Ack”确认报文,该报文中包含有IP地址的有效租约以及默认网关和DNS服务器等网络配置信息。

当客户端收到“DHCP ACK”报文后,就成功获得了IP地址,完成了初始化过程。

2.    DHCP攻击原理与实施

下面搭建如图2所示的实验环境,神州数码CS6200交换机作为正常的DHCP服务端在网络中提供地址分配服务,攻击者在Kali Linux上对交换机发起DHCP攻击,使其地址池资源全部耗尽,然后攻击者再启用假冒的DHCP服务器在网络中提供地址分配服务。在假冒DHCP服务器所提供的网络配置信息中,默认网关被设置为Kali Linux的IP地址192.168.1.5(正确的默认网关应该是交换机的IP地址192.168.1.1),被攻击主机在获取了假冒DHCP服务器所提供的网络配置信息后,就会将所有的上网数据全部发送给Kali Linux。此时只要在Kali Linux上启用路由转发功能,就可以将被攻击主机的上网流量全部正常转发出去,因而并不影响其正常通信,但是其访问互联网的所有数据都可以在Kali Linux上被截取到。

图 2实验环境

下面将分步骤来依次完成DHCP攻击过程。

2.1    在交换机中配置DHCP服务

#首先启用DHCP功能:

CS6200 (config)#service dhcp

#创建名为test的地址池,并进入地址池的局部配置模式:

CS6200 (config)#ip dhcp pool test

#指定地址池可供分配的地址范围,一般都是指定一个网段地址:

CS6200 (dhcp-test-config)#network-address192.168.1.0 255.255.255.0

#指定默认网关,一般就是交换机的地址:

CS6200(dhcp-test-config)#default-router 192.168.1.1

#指定DNS服务器地址:

CS6200(dhcp-test-config)#dns-server 202.102.134.68

#设置租期,格式是“天时分”,比如“lease8 0 0 ”表示租期是8天,“lease0 8 0”表示租期是8小时。

CS6200 (dhcp-test-config)#lease 0 80

#设置地址池中不用于分配的地址(需要在全局配置模式下做):

CS6200 (config)#ip dhcpexcluded-address 192.168.1.1 192.168.1.20

设置完成后,在被攻击主机上可以成功看到分配到的IP地址等信息。

图 3被攻击主机获取的正确网络配置信息

#在交换机上可以查看到已经分配出去的IP地址。

CS6200#shwoip dhcp bingding

Totaldhcp binding items:1,thematched:1

IPaddress                    Hardwareaddress              Lease expiration                Type

192.168.1.21        00-0C029-81-BA-30  Thurs Jun 15 15:08:00 2017     Dynamic

为了验证攻击的效果,在开始攻击之前,我们先将已经分配出去的IP地址收回。

#在交换机上收回分配出去的IP地址:

CS6200#clear ip dhcp binding all

#在被攻击主机上释放已经获取到的IP地址:

ipconfig /release

2.2    DHCP耗尽攻击

下面模拟攻击者在Kali Linux中实施攻击,这里要用到一个名为Yersinia的攻击工具。Yersinia是一款底层协议攻击入侵检测工具,能实施针对多种网络协议的多种攻击。

在Kail中执行“yersinia –G”命令打开图形化的Yersinia界面,运行之后,点击“Launch attack”,选择DHCP,然后选择发送DISCOVER包,开始进行攻击,如图4所示。

图 4在Yersinia中实施攻击

在攻击持续的情况下,在交换机中执行CS6200#shwoip dhcp server statistics命令查看DHCP的统计信息,可以看到交换机已经接收到了大量的DHCP DISCOVER数据包,如图5所示,地址池资源已被耗尽。

图 5交换机接收到大量的DHCPDISCOVER数据包

此时在被攻击主机上执行“ipconfig /renew”命令重新申请IP地址,就无法申请到IP地址等网络配置信息了。

2.3    DHCP假冒攻击

耗尽DHCP服务端的地址资源之后,攻击者就可以架设自己的DHCP服务器,从而实现DHCP假冒攻击

首先在假冒的DHCP服务器上架设DHCP服务,指定地址池范围为192.168.1.100~200,并将默认网关指向Kali Linux的IP地址192.168.1.5。需要注意的是,在将DHCP服务架设好之后,先暂时不要将服务激活,由于此时Kali Linux上的DHCP 耗尽攻击仍在继续,一旦激活服务,这台假冒DHCP服务器的地址资源也将会很快被耗尽。

下面在Kali Linux上停止攻击,并快速激活假冒DHCP服务器上的DHCP服务,可以看到被攻击主机成功从假冒服务器处申请到了IP地址,如图6所示。

图 6被攻击主机获取到的假冒网络配置信息

这里同样需要注意一个问题,在将Yersinia停止攻击之后,一定要快速激活假冒DHCP服务器上的DHCP服务。这是因为Yersinia的攻击原理是发送大量的DHCP Discover报文,交换机会向其返回DHCP Offer报文,而在这个Offer报文中所提供的IP地址并未真正分配出去,在等待一段时间之后(大约5分钟),交换机会自动将IP地址收回,因而只要停止攻击之后过一段时间,交换机就会自动恢复正常。

攻击成功之后,被攻击主机的上网流量就将全部被导向到Kali Linux。在Kali中需要执行下面的命令开启路由转发功能,以便将被攻击主机的数据转发到互联网。

echo 1> /proc/sys/net/ipv4/ip_forward

最后,就可以在Kali Linux中利用Wireshark等抓包工具来截获被攻击主机的上网数据了。不过对于这种DHCP攻击方式,只能单向截获从被攻击主机发往互联网的数据,而无法截获从互联网发回给被攻击主机的数据,这是由于DHCP攻击无法去攻击默认网关等网络出口设备,要想真正实现双向截获数据的中间人攻击,还是要通过ARP欺骗等攻击方式。

3.    防范DHCP假冒攻击

在交换机上通过传统的DHCPSnooping技术就可以来防范DHCP假冒攻击。当启用了DHCP Snooping功能之后,交换机的所有端口都将无法接收DHCP Offer报文,这样假冒的DHCP服务器就无法向外分配IP地址了。

下面在神州数码CS6200交换机上启用并配置DHCP Snooping功能。

#启用DHCP Snooping功能:

CS6200(config)#ip dhcp snooping enable

#将DHCP Snooping应用于指定的VLAN,这里应用于默认的VLAN 1:

CS6200(config)#ip dhcp snooping vlan 1

启用了DHCP Snooping功能之后,还需要设置如果从某个端口收到假冒DHCP服务报文后,将对这个端口如何处理。处理动作有两个:

l  shutdown:端口检测到假冒DHCP Server时,将shutdown此端口。

l  blackhole:端口检测到假冒DHCP Server时,将以伪装数据包的vid和源mac设置blackhole来阻止此Mac的流量,也就是将假冒服务器的数据暂时丢弃一段时间,可选择的时间范围为10~3600秒。

比如将20号端口设置为接收到假冒服务器报文后,将数据暂时丢弃300秒。

CS6200 (config-if-ethernet1/0/20)#ip dhcp snooping actionblackhole recovery 300

由于shutdown的处理动作过于严格,因而建议采用blackhole模式进行防范。

4.    防范DHCP耗尽攻击

DHCP Snooping功能只能防止假冒攻击,而无法防止耗尽攻击。这是由于耗尽攻击所采用的都是客户端正常发送的DHCPDiscover报文,因而DHCPSnooping对其无能为力。

可以通过交换机的Port-Security(端口安全性)功能来防范耗尽攻击。因为Yersinia伪造的每个DHCPDiscover报文的源MAC地址都是不同的,在交换机中执行CS6200#showmac-address-table命令查看MAC地址表,就会发现在KaliLinux所连接的10号端口上产生了大量的MAC地址表条目。

CS6200#showmac-address-table

Readmac address table….

Vlan              Mac Address               Type                    Creator                 Ports

1             00-03-0f-3e-e6-90             STATIC               System                 CPU

1             ec-a8-6b-61-64-a1             DYNAMIC          Hardware             Ethernet1/0/10

1             00-07-72-01-47-8b     DYNAMIC          Hardware             Ethernet1/0/10

1             00-0a-b5-14-d5-dd            DYNAMIC          Hardware             Ethernet1/0/10

……

我们通过Port-Security技术来限制交换机每个端口可以学习到的最大MAC地址数量,这样就可以有效地来防范DHCP耗尽攻击。

比如在交换机的10-15号端口上启用Port-Security,并设置每个端口可以学习的最大MAC地址数量为2,违规动作为restrict,这样当安全MAC地址的数量达到端口允许的限制时,交换机就会将带有未知源地址的数据帧丢弃,并记录日志。

#开启交换机CPU控制学习功能:

CS6200(config)#mac-address-learning cpu-control

#进入端口配置模式:

CS6200(config)#interface ethernet 1/0/10-15

#启用Port-Security:

CS6200(config-if-port-range)#switchport port-security

#设置最大MAC地址数量为2:

CS6200(config-if-port-range)#switchport port-security maximum 2

#设置违规动作为restrict

CS6200(config-if-port-range)#switchportport-security violation restrict

这样在交换机上通过设置DHCP Snooping再结合Port-Security功能,就可以有效地防范DHCP攻击,从而增强局域网的安全性。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Red Hat Linux DHCP 客户端被曝远程命令注入漏洞

    近日,Google 安全研究人员在Red Hat Linux 及其衍生工具(如 Fedora 操作系统) 的 DHCP 客户端(dhclient)软件包中发现了...

    周俊辉
  • 西部数码MyCloud NAS命令执行漏洞丨WD My Cloud RCE

    在这篇文章中,我将要解释我是如何发现西部数据NAS设备的一些漏洞的,组合在一起后最终可以实现root权限的远程代码执行的效果。

    周俊辉
  • WEB访问日志自动化分析浅谈

    最近经常需要分析WEB访问日志,从中发现非法请求,然后做相应安全检查,为了方便,所以写了一个日志分析平台,支持提交iis,apapche,tomcat,ngni...

    周俊辉
  • linux下DHCP服务原理总结

    DHCP(全称Dynamic host configuration protocol):动态主机配置协议 DHCP工作在OSI的应用层,可以帮助计算机从指定的D...

    洗尽了浮华
  • 网络协议 2 - IP 是怎么来,又是怎么没的?

    了解完网络协议,我们会发现,网络通信的五层模型里,有两个很重要的概念:IP 地址和 MAC 地址。

    北国风光
  • 自动驾驶综述|定位、感知、规划常见算法汇总

    这一部分概述了自动驾驶汽车自动化系统的典型体系结构,并对感知系统、决策系统及其子系统的职责进行了评述。

    磐创AI
  • geoserver源码导出war包

    题外语:踏破铁鞋无觅处,得来全部费工夫。从网上找了下将Geoserver源码导出为war文件的方法,少之甚少,没办法,百度靠不住,还得靠自己,上Geoserve...

    lzugis
  • 一步步带你读懂 CoordinatorLayout 源码

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/de...

    用户2965908
  • CTF| 这是一个刚挖好的洞······

    背景 近期在研究学习变量覆盖漏洞的问题,于是就把之前学习的和近期看到的CTF题目中有关变量覆盖的题目结合下进一步研究。 通常将可以用自定义的参数值替换原有变...

    漏斗社区
  • CoordiantorLayout与Behavior

    CoordinatorLayout继承自FrameLayout,并且实现了NestedScrollingParent2接口用于接收嵌套滑动的事件。并且内部定义了...

    None_Ling

扫码关注云+社区

领取腾讯云代金券