Scapy ARP中毒

时间:2018-10-29 22:53:03

标签: scapy arp

Scapy文档提供了以下ARP缓存中毒的示例:

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

问题1:
我的理解是,这是来自客户端的ARP请求的广播。 攻击者不应该执行ARP Poison来响应:

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

问题2: 在关于Scapy的stackoverflow帖子中,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 个答案:

答案 0 :(得分:0)

  

在计算机网络中,ARP欺骗,ARP缓存中毒或ARP   毒药路由,是攻击者发送(欺骗)的一种技术   将地址解析协议(ARP)消息发送到局域网上。   通常,目标是将攻击者的MAC地址与   导致以下问题的另一台主机(例如默认网关)的IP地址   流量意味着该IP地址将被发送给攻击者。   Wiki

Scapy文档中提到,

  

ARP缓存中毒攻击阻止客户端加入网关   通过VLAN跳跃攻击中毒其ARP缓存。

这意味着可怜的客户端将无法将其数据包发送到网关(在本例中为Access Point),并且将无法与外部资源进行通信。但是请注意,同一客户端仍将能够与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. 在以太层,目标MAC地址dst设置为指向客户端(受害者)的MAC。同时,Scapy自动填充其他以太层字段,最重要的是,将src字段设置为攻击者的MAC地址。这意味着在以太层上,数据包似乎来自攻击者。其他以太层字段保持不变,并包含默认值。如果在Scapy中运行以下命令,则可以自己查看:

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

  2. 现在,攻击者在IP层上制作ARP请求数据包,在该数据包中,他将psrc(源IP)字段设置为指向网关节点(在这种情况下为AP)的IP。现在,请记住,以前,在Sethery的Ether层上,为我们填写了src字段,并将其设置为指向Attacker的MAC地址。这意味着,发送给客户端(受害者)的最终数据包看起来像是来自具有攻击者的MAC和网关的IP地址的主机。我们稍后再讨论。现在,让我们继续前进。最后,在pdst字段中将客户端的IP地址设置为数据包的目的地。

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

客户端收到此数据包并检查该数据包的内容。它看到ARP请求来自网关IP(假设它是192.168.1.1)。它检查数据包以太层中的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请求最终将到达eh客户端,以恢复正常通信。因此,作为攻击者,您可能想要创建一个发送恶意数据包的循环,如下所示:

sendp(Ether(dst=”CLIENT-MAC”)/ARP(op="who-has", psrc=”GATEWAY-IP”, pdst=”CLIENT-IP”), inter=0.2, loop=1)

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