这是一个允许拦截发送给Wi-Fi网络上任意客户端的帧的漏洞。
详细说明请参见这里。
注意: MITRE的描述不准确,请通过上方链接获取正确的详细信息。
本仓库基于该链接。
为了搭建真实的测试环境,受害者和攻击者运行在不同的主机上。
可能可以在单台主机上同时运行受害者和攻击者,但这需要三个无线网络接口,并且可能需要修改代码和执行方式。
运行以下命令(可选在Python虚拟环境中):
pip install scapy==2.6.1 httpx==0.28.1
或者,你也可以使用ping、curl或网络浏览器代替victim.py。
运行以下命令:
cd macstealer/research
./build.sh
cd ../../attacker
./pysetup.sh
确保受害者已连接到要测试的网络。
编辑./attacker/attacker.conf以匹配受害者连接的网络设置。
如果不确定,请查看如何配置wpa_supplicant.conf。
# attacker.conf
# 请勿更改此行,否则MacStealer无法正常工作
ctrl_interface=wpaspy_ctrl
network={
#填写你的网络属性
key_mgmt=WPA-PSK
ssid="你的SSID"
psk="你的密码"
}
你需要配置NetworkManager以忽略两个接口:
在/etc/NetworkManager/NetworkManager.conf中添加以下行:
[keyfile]
unmanaged-devices=interface-name:{iface};interface-name:{mon_iface}
运行以下命令应用更改:
sudo systemctl restart NetworkManager
要恢复,请删除添加的行并再次重启NetworkManager。
执行前以root身份激活虚拟环境:
cd attacker
sudo su
source venv/bin/activate
运行victim.py并根据提示输入所需信息(或使用默认值)。
然后每按一次回车键,将发送一个ICMP Echo请求和一个HTTP GET请求。
运行以下命令:
./attacker.py -i $iface -m $mon_iface -v $victimMAC
-i指定攻击者的管理接口,
-m指定攻击者的监听接口,
-v指定受害者的MAC地址。
例如:
./attacker.py -i wlan0 -m wlan1 -v a0:d3:65:2c:ed:71
执行后,脚本会自动建立预连接并准备攻击。
当攻击准备就绪时,你会看到提示:
Press enter to start attack:
此时,先在受害者一侧按下回车键发送请求,然后立即在攻击者一侧按下回车键开始攻击。
为了攻击成功,两个操作必须几乎同时进行。
但受害者必须先发送请求。
注意: - 更短的连接时间可以提高攻击成功率。 - 在我的测试中,连接时间约为200ms,但有时AP会意外拒绝连接,导致连接时间变长。 - 如果发生这种情况,请等待超时或使用
Ctrl+C终止进程,然后重试。 - 预连接和重新连接之间的间隔越长,失败的可能性越大。 - 尽可能快速地按下回车键以开始攻击。 - 如果攻击未成功但攻击者的连接稳定,请尝试将受害者请求的服务器改为更远的位置。 - 由于我位于韩国,我选择了一个阿根廷的服务器,这是最远的地区之一。

检查是否成功拦截HTTP和ICMP响应,并确保HTTP正文和ICMP负载正确显示。
准备
解除认证攻击
拦截