DHCP欺骗攻击(yersinia应用)
DHCP原理:
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
DHCP报文共有一下几种:
- DHCP DISCOVER :客户端开始DHCP过程发送的包,是DHCP协议的开始
- DHCP OFFER :服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息
- DHCP REQUEST :客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。
- DHCP ACK :服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。
- DHCP NAK :DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。
- DHCP RELEASE :一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址
- DHCP INFORM :客户端发出的向服务器请求一些信息的报文
- DHCP DECLINE :当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。
因此由于DHCP 其本身特性,我们可以在①和②处分别进行饿死攻击(及发送大量DHCP discover消息,将服务器待分配ip地址耗尽,使得其他客户无法分配得到ip)以及中间人攻击(及伪造DHCP服务器,向客户发送虚假的ip)。
工具:
- GNS3
- VMware(kali,win10,windows server 2016)
- yersinia
环境:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HgMZsj6q-1665301355073)(C:\Users\15081856675\Desktop\QQ截图20221009143941.png)]
客户(VMnet1网段):(待分配)host1对应ip为192.168.1.146,host3对应ip为192.168.1.2,网关为192.168.1.254
服务器(VMnet2网段):host2对应ip为192.168.2.100,网关为:192.168.2.254
服务器端创建DHCP服务,并且设置包含vmnet1网段的ip的作用域。
- 具体步骤
选择Windows 2016 Server为仅主机模式的VMnet2网段,用以下命令配置Windows 2016 Server的IP地址
netsh interface ipv4 set address “Ethernet0(即虚拟机网卡名称)” static IP地址 子网掩码 网关IP地址
通过以下方式在Windows 2016 Server上添加DHCP服务器
服务器管理器à管理à添加角色和功能、下一步、…、下一步、勾选DHCP服务器à下一步、…、下一步、完成即可。在服务器管理器页面右上角通知(黄色感叹号)处点击完成DHCP服务器配置。按下Win键,在Windows管理工具里面找到新添加的DHCP服务器,在下拉条里面右键“ipv4”点击出现的“新建作用域”。在新建作用域向导里面单击“下一步”,填写第一个作用域(一般是DHCP服务器所在的网段)的名称(随便写),之后点击“下一步”。填写起始IP地址和结束IP地址(可随意填写,因为实验环境中该网段没有主机)。通过下一步、下一步、“否,稍后配置这些选项”、下一步、完成,完成对第一个作用域的配置。其中租期的时间可以设置长一些。右击ipv4下的作用域,点击“激活”使该配置生效。
通过相似的方法设置Kali Linux与Windows 10侧网段(VMnet1)的作用域。只不过在结束之前选择“是,我想现在配置这些选项”,再点击“下一步”。添加网关的IP地址为实验环境中路由器的f0/0端口的IP地址,点击“下一步”。DNS稍后设置,再点击“下一步”直至结束。随后右击新配好的作用域下的“作用域选项”,选中DNS选项,在下面的IP地址栏中输入一个DNS服务器IP地址(虚假的真实的都可以,因为没有连接互联网)。在验证不通过后选择强制使用。
此时配置成功。
- 在配置过程中我出现的问题,GNS3配置完成后始终无法ping通,解决方法:我将交换机的接口改为了NM-16ESM后成功ping通(个人问题,可能不适用于他人)
实验过程:
在Vmware的虚拟网编辑器中,将VMnet1中的“使用本地DHCP服务将IP地址分配给虚拟机”选项勾除。在Windows 10的网络适配器中把ipv4更改为自动获取IP地址和自动获取DNS服务器。抓取GNS3上路由器左侧的链路的流量。在Windows 10的cmd上输入以下指令释放自己本身的IP地址参数
ipconfig /release
然后输入
Ipconfig /renew
尝试获取IP地址。(如下图)
发现此时window 10主机无法获得ip。
在GNS3中的镜像路由器上为f0/0端口配置中继,使用以下命令
conf tint f0/0ip helper-address 中继到f0/0的IP地址(即服务器IP地址)
之后在windows 10中继续输入
Ipconfig /renew
得到上图结果,我们可以看出此时服务器能够对其进行ip分配。
接下来输入
apt-get install yersinia //下载安装yersinia工具
下载完成后输入下列命令
yernisia -G
点击“launch attack”,选择sending discover packet。此时我们抓取路由器流量,得到下图:
我们可以看出此时均为kali主机发送的DHCP Discover报文,我们查看server主机此时作用域信息
可以看到此时预设值的作用域内ip均已被占用,此时我们使用windows 10主机再一次重新获取ip则无法获取,实现了DHCP “饿死攻击”,将服务器ip地址消耗完。
在Kali Linux上点击“List Attacks”并关闭当前DHCP攻击流量。然后点击“Launch Attack”,选择“creating DHCP rogue server”。在弹出的窗口中填写攻击参数,服务器地址为Kali的IP地址,Start IP和End IP写为非VMnet1中的IP地址,其他参数随意写,此时我们便对windows 10主机分配了一个虚假的ip, 使得其无法正常联网。攻击如下图:
我们可以看到,此时kali 主机向windows 10发送了一个DHCP offer报文,实现了向windows 10分配了不规范的ip地址。
来源地址:https://blog.csdn.net/weixin_51086098/article/details/127228014