Scapy ARP毒化攻击

4
Scapy文档提供了ARP缓存投毒的示例:
send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client))

问题1:
我的理解是这是客户端发送ARP请求的广播。那么ARP欺骗不应该由攻击者响应执行吗?

send(Ether(dst=clientMAC)/ARP(op="is-at", psrc=gateway, pdst=client))

问题 2:

在 stackoverflow 上有人发表了一篇关于 Scapy 的文章,其中 OP 发布了如下内容:

这个命令会发送一个 ARP 回复数据包给受害者,让本地机器伪装成路由器:

send(ARP(op=ARP.is_at, psrc=router_ip, hwdst=victim_mac, pdst=victim_ip))

这将发送一个ARP回复数据包给路由器,本地机器伪装成受害者:
send(ARP(op=ARP.is_at, psrc=victim_ip, hwdst=router_mac, pdst=router_ip))

在这两个数据包中,hwsrc字段默认填充了本地机器的MAC地址。

但是Scapy文档没有提到hwdst是必需的。我想知道为什么。

问题3:在Scapy文档中:

send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client))

但在第2个问题中,OP的帖子中没有提供Ether(dst-clientMAC)。这是否意味着它不是必需的?

谢谢。

1个回答

8
在计算机网络中,ARP欺骗、ARP缓存中毒或ARP毒性路由是一种攻击技术,攻击者会向本地区域网络发送(伪造的)地址解析协议(ARP)消息。通常,目的是将攻击者的MAC地址与另一台主机的IP地址(例如默认网关)关联起来,从而导致任何针对该IP地址的流量被发送到攻击者而不是真正的目标主机。 参考:Wiki 正如Scapy文档所述,ARP缓存中毒攻击会通过VLAN跳转攻击来污染客户端的ARP缓存,从而防止客户端加入网关。
这意味着可怜的客户端将无法向网关(在这种情况下是接入点)发送其数据包,并且无法与外部资源进行通信。但请注意,同一客户端仍将能够与VLAN内的其他主机进行通信,即使攻击者(假设它也连接到相同的WiFi网络)也是如此。
让我们逐步了解此攻击过程。
在继续之前,请查看客户端侧的当前ARP表格(在执行攻击之前)。在Linux上查看ARP表格需要运行以下命令:
$ sudo arp -n

Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.1              ether   54:f6:15:f5:51:55   C                     wlan0

如您所见,ARP表只有一条记录,其中列出了网关IP地址(192.168.1.1)和其MAC地址(54:f6:15:f5:51:55)。

当攻击者在Scapy中执行以下命令时:

send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client))

它创建并发送以下数据包:

  1. 在Ether层,目标MAC地址dst被设置为指向客户端(受害者)的MAC。同时,Scapy自动填充其他Ether层字段,最重要的是src字段,该字段设置为攻击者的MAC地址。这意味着在Ether层上,数据包似乎来自攻击者。其他Ether层字段保持不变,并包含默认值。如果您在Scapy中运行以下命令,可以自行查看:

    a = Ether(dst="clientMAC") a.show()

  2. 现在,在IP层上,攻击者制作了一个ARP请求数据包,其中将psrc(源IP)字段设置为指向网关节点的IP(在本例中为AP)。现在,请记住,在之前的Ether层上,Scapy已经替我们填充了src字段,并将其设置为指向攻击者的MAC地址。这意味着,发送到客户端(受害者)的最终数据包,看起来像来自具有攻击者MAC和网关IP地址的主机。稍后我们会详细讨论它。现在,让我们继续。最后,将客户端的IP地址设置为数据包的目标。

  3. 数据包被创建并发送到客户端(受害者)。

客户端接收此数据包并检查数据包的内容。它看到ARP请求从网关IP(假设为192.168.1.1)到达。它检查数据包的Ether层中的MAC地址字段psrc(假设为a9:2b:24:9c:fd:c7),并更新其ARP表,现在如下所示:

$ sudo arp -n

Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.1              ether   a9:2b:24:9c:fd:c7   C                     wlan0

如您所见,IP地址保持不变,但MAC地址已更改。因此,现在,每当客户端发送数据包到网关节点时,它实际上会将它们发送到攻击者的MAC地址。如果攻击者的目标是阻止客户端与网关通信,则这些数据包将被丢弃并永远无法传递到所需的目标位置。
当攻击者继续向客户端发送伪造的ARP数据包时,客户端将无法与网关通信。一旦攻击者停止,来自带有真实IP和MAC地址的网关的真实ARP请求最终将到达客户端,恢复正常通信。这就是为什么作为攻击者,您可能想要创建一个循环以发送恶意数据包,如下所示:
sendp(Ether(dst=”CLIENT-MAC”)/ARP(op="who-has", psrc=”GATEWAY-IP”, pdst=”CLIENT-IP”), inter=0.2, loop=1)

通过这个永无止境的循环,您有效地阻塞了客户端和网关之间的通信。


1
你可以在解释中提到“Gratuitous ARP”这个术语 :-) - Cukic0d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接