我试图使用dnsspoof,但它没有按预期工作。这些是我遵循的步骤:
- 将内核中的 IP 转发设置为 1
arpspoof -i eth0 -t 192.168.1.39 -r 192.168.1.1
和arpspoof -i eth0 -t 192.168.1.1 -r 192.168.1.39
。检查arp -a
并有效- 使用以下命令创建 file.txt:
137.222.0.38 *.hello.com
dnsspoof -i eth0 -f file.txt
192.168.1.39
从我浏览到的受害者计算机www.hello.com
,它被重定向到真实站点。输出dnsspoof
为:
dnsspoof: listening on eth0 [udp dst port 53 and not src 192.168.1.35]
192.168.1.39.1113 > 8.8.8.8.53: 3864+ A? www.hello.com
192.168.1.39.1113 > 8.8.8.8.53: 3864+ A? www.hello.com
我已经检查过了Wireshark
,似乎受害者正在接收来自同一个 IP 的响应,路由器 MAC(第一个)和攻击者 MAC(第二个)。我已经刷新了 DNS 并尝试了新的请求,尽管理论上这不是必需的。我的问题是:
1)为什么这不起作用?有人建议使用iptables
来阻止来自路由器的数据包,但它自己dnsspoof
不这样做似乎很奇怪,而且我检查过的教程(1、2、3、4)都不需要这一步。此外,我无法获得正确的iptables
规则来使其正常工作。
2)许多教程似乎没有dnsspoof
使用arpspoof
. 后者真的有必要吗?我提到是因为曾经(偶然)DNS 欺骗似乎在另一台没有“arpspoofed”的计算机上工作。
3)如何dnsspoof
工作?只是通过侦听整个 LAN 中的 DNS 请求,然后将解析发送回来?
编辑
使用该iptables
命令iptables -D FORWARD --match string --algo kmp --hex-string '|68 65 6c 6c 6f|' --jump DROP
不查询路由器,只发送欺骗的 DNS。然而,受害者浏览器永远保持加载状态,最后它说它无法访问该站点(?)。如果没有iptables
命令,我可以看到请求是如何进行的:
victim --> attacker --> router
并回答: router --> attacker --> victim
就在这之后,攻击者向受害者发送了两倍的欺骗 DNS。同样,我仍然对这种行为感到困惑,并且还没有回答我的三个问题中的任何一个。我有点相信(2)的答案是dnsspoof
欺骗了整个网络,但前提是你之前做过arpspoof
,你才能保证欺骗的数据包会在合法数据包之前到达受害者。但是,就我而言,这不起作用,因为请愿书已转发。
编辑
这是在另一个网络 (10.10.10.0) 上具有相同示例的网络捕获。首先转发合法的 DNS,然后再转发欺骗的 DNS。在此示例中,两个响应中间还有其他请愿书,但我经常一个接一个地收到数据包。