1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
| NAT模式:相当于在中间加了一个路由器,你发出的ARP广播包根本出不去,被挡在了虚拟网络里,所以你看不到外面的设备
NAT隔离:相当于你现在被关在“虚拟的小房间”里,而受害者在“房间外面的大厅”里
解决方案:必须切换到“桥接模式” (Bridged)
想要攻击手机热点下的其他设备,你必须让 Kali “走出小房间,直接连到热点上”。
操作步骤:
#修改虚拟机设置:
在 VMware 菜单栏点击 虚拟机 (Virtual Machine) -> 设置 (Settings)。
点击左侧的 网络适配器 (Network Adapter)。
在右侧选择 桥接模式 (Bridged)。
关键一步:勾选“复制物理网络连接状态”(Replicate physical network connection state)。
点击确定。
#打开虚拟网络编辑器 (Virtual Network Editor)
在 Windows 下(不是 Kali 里),点击 VMware 软件左上角的 编辑 (Edit) -> 虚拟网络编辑器 (Virtual Network Editor)。
点击右下角的 更改设置 (Change Settings)(需要管理员权限)。
在列表中找到 VMnet0(它的类型应该是“桥接模式”)。
如果没有 VMnet0,就点击“添加网络”添加一个。
在下方的 已桥接至 (Bridged to) 下拉菜单中:
千万不要选“自动”!
必须选择你截图里那个 Wi-Fi 网卡的名字:Qualcomm WCN685x Wi-Fi 6E...。
点击 确定 保存。
sudo systemctl restart NetworkManager 重启网络管理器服务
什么你觉得没变?
因为你的网卡现在同时拥有两个 IP:
172.24.198.118(旧的,错误的)
172.20.10.5(新的,正确的)
这种情况会让网络工具“精神分裂”,它可能会继续默认使用上面那个错误的 IP 发包。我们需要手动帮它“清理门户”。
第一步:清理掉错误的 IP
为了防止干扰,我们手动把那个错误的 IP 删掉,只保留正确的。
在终端输入:
sudo ip addr del 172.24.198.118/20 dev eth0
输完之后,再输入 ip a 确认一下,应该只剩下 172.20.10.5 了。
第二步:扫描受害者(关键时刻)
既然你现在的 IP 是 172.20.10.5,说明你已经成功混入了手机热点的网络。
注意:你的子网掩码是 /28(这是 iPhone 热点的特性,意味着它只允许 14 台设备连接,IP 范围很小)。
请运行这个精准的扫描命令:
sudo netdiscover -r 172.20.10.0/24
(用 /24 也没关系,扫得更宽一点)
预期结果:
172.20.10.1:这是网关(你的手机)。
172.20.10.3:这是你截图里显示的受害者(如果它还连着的话)。
172.20.10.x:其他设备。
第三步:开始攻击演示
一旦扫描确认了受害者在线(比如看到了 172.20.10.3),就可以进行 ARP 欺骗了。
开启转发(别忘了):
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
双向欺骗(两个窗口):
# 窗口 1:告诉受害者(.3) 我是网关(.1)
arpspoof -i eth0 -t 172.20.10.3 172.20.10.1
# 窗口 2:告诉网关(.1) 我是受害者(.3)
arpspoof -i eth0 -t 172.20.10.1 172.20.10.3
开始 ARP 欺骗
假设我们要攻击那台 Intel 的电脑 (172.20.10.4),请按以下步骤操作。
第一步:开启路由转发(必做,否则对方会断网)
在 Kali 终端执行:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
第二步:发动攻击(双向欺骗)
你需要打开两个终端窗口,分别执行以下命令:
窗口 1:欺骗受害者(告诉 .4 我是网关)
sudo arpspoof -i eth0 -t 172.20.10.4 172.20.10.1
窗口 2:欺骗网关(告诉 .1 我是受害者)
sudo arpspoof -i eth0 -t 172.20.10.1 172.20.10.4
(如果你想攻击自己的主机 .3,就把上面的 172.20.10.4 换成 172.20.10.3 即可)
第三步:验证效果
攻击开始后,你可以用 Wireshark 抓包,或者使用 driftnet 查看受害者正在浏览的图片:
sudo driftnet -i eth0
#需要先让 Kali “认识”一下受害者,然后再攻击。
第一步:停止当前的攻击
在两个 arpspoof 的终端窗口中,都按 Ctrl + C 停止运行。
第二步:手动“激活”目标(关键)
在终端里输入以下命令,强行让 Kali 去寻找受害者:
ping -c 4 172.20.10.4
确保你能看到 64 bytes from ... 的回显。这不仅证明它是通的,更重要的是,这会把受害者的 MAC 地址写入 Kali 的 ARP 缓存表。
第三步:检查 ARP 缓存
输入以下命令确认 Kali 已经获取到了 MAC:
arp -a
你应该能看到类似 (172.20.10.4) at 08:b4:d2:55:49:89 ... 的记录。只要不是 (incomplete) 或者没有记录,就可以继续。
第四步:重新开始欺骗
现在重新运行那两条攻击命令:
# 窗口 1
sudo arpspoof -i eth0 -t 172.20.10.4 172.20.10.1
# 窗口 2
sudo arpspoof -i eth0 -t 172.20.10.1 172.20.10.4
👀 观察变化: 这次再看 arpspoof 的输出,中间那个 MAC 地址应该变成真实的 08:b4:d2...,而不是 0:0:0:0:0:0 了。
第五步:验证 Wireshark
回到 Wireshark:
重新开始抓包。
让受害者随便打开一个网页(比如百度)。
你应该能看到 TCP 和 TLS 的数据包开始刷屏。这就说明你成功截获流量了!
不需要纠结 Ping 不通的问题,直接开始攻击。因为 Kali 现在已经知道对方的 MAC 地址了,之前那个 0:0:0:0:0:0 的错误不会再出现了。
立刻运行攻击命令(两个窗口):
窗口 1:
sudo arpspoof -i eth0 -t 172.20.10.4 172.20.10.1
窗口 2:
sudo arpspoof -i eth0 -t 172.20.10.1 172.20.10.4
这次你会发现,终端里刷出的日志里,MAC 地址会是正确的 08:b4:d2...,这就说明攻击已经生效了!
💡 额外验证(如果你非要 Ping 通): 如果你能操作那台受害者电脑(172.20.10.4),去把它的 Windows 防火墙 暂时关掉,或者在防火墙设置里允许 ICMP 回显,Ping 马上就通了。但这不影响你进行 ARP 欺骗实验
#使用 Wireshark(最专业,看所有流量)
如果你想看受害者具体在干什么(不仅仅是看图片),Wireshark 是最强大的工具,而且 Kali 默认自带。
在 Kali 左上角菜单搜索 Wireshark 并打开(或者终端输入 sudo wireshark)。
在欢迎界面双击 eth0 开始抓包。
现在你的屏幕上会疯狂跳动数据包。
如何过滤只看受害者?
在顶部的过滤栏(Filter)输入:ip.addr == 172.20.10.4
回车。现在你看到的就是全都是受害者的流量了。
你可以尝试输入 http 来只看网页浏览记录。
#driftnet 显示黑屏(或者一直捕获不到图片)的核心原因只有一个:HTTPS 加密。
1. 核心原因:HTTP vs HTTPS
Driftnet 的原理:它只能从流量中提取 HTTP(未加密) 协议传输的图片。
现在的互联网:99% 的网站(百度、B站、淘宝、Google、所有银行)都强制使用了 HTTPS(加密传输)。
结果:当受害者访问 HTTPS 网站时,所有图片数据在传输过程中都是乱码(加密的)。Driftnet 看不懂这些乱码,所以提取不出图片,窗口就是黑的。
2. 如何验证你的攻击是否成功?
为了证明你的中间人攻击其实是成功的,你需要让受害者访问一个非加密的 HTTP 网站。
🧪 测试步骤:
保持攻击:不要关闭 arpspoof 和 driftnet 的窗口。
受害者操作:用受害者的电脑(或手机)打开浏览器,访问下面这些纯 HTTP 网站(不要用搜索引擎搜,直接在地址栏输入):
http://www.vulnweb.com/ (一个专门用于测试的靶场网站)
http://example.com/
观察 Driftnet:
一旦受害者加载了 www.vulnweb.com 里的图片,你的 driftnet 小黑窗里瞬间就会浮现出图片。
3. 如果连 HTTP 网站都抓不到...
如果受害者访问了 HTTP 网站,但你还是黑屏,那可能有以下两个问题:
问题 A:IP 转发没开(导致受害者断网) 如果受害者那边网页根本打不开(一直在转圈),说明你的 Kali 截获了数据包但没发出去。
检查命令:
cat /proc/sys/net/ipv4/ip_forward
如果是 0,请再次执行:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
问题 B:Driftnet 监听错网卡了 虽然你用了 -i eth0,但建议确认一下流量是否真的在走。
改用 Wireshark 验证:
打开 Wireshark,选 eth0。
输入过滤条件:ip.addr == 172.20.10.4 (受害者IP)。
看有没有数据包在跳动。如果有,说明攻击成功了,只是 Driftnet 解析不了 HTTPS 而已。
总结
你现在的状态就像是**“戴着普通眼镜试图看红外线”**。
攻击是成功的(你截获了数据)。
但是数据是加密的(HTTPS),所以 Driftnet 这个老旧的工具(只懂 HTTP)变成了“瞎子”。
|