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)。 那是否不是必需的?
谢谢。
答案 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))
它创建并发送以下数据包:
在以太层,目标MAC地址dst
设置为指向客户端(受害者)的MAC。同时,Scapy自动填充其他以太层字段,最重要的是,将src
字段设置为攻击者的MAC地址。这意味着在以太层上,数据包似乎来自攻击者。其他以太层字段保持不变,并包含默认值。如果在Scapy中运行以下命令,则可以自己查看:
a = Ether(dst="clientMAC")
a.show()
现在,攻击者在IP层上制作ARP请求数据包,在该数据包中,他将psrc
(源IP)字段设置为指向网关节点(在这种情况下为AP)的IP。现在,请记住,以前,在Sethery的Ether层上,为我们填写了src
字段,并将其设置为指向Attacker的MAC地址。这意味着,发送给客户端(受害者)的最终数据包看起来像是来自具有攻击者的MAC和网关的IP地址的主机。我们稍后再讨论。现在,让我们继续前进。最后,在pdst
字段中将客户端的IP地址设置为数据包的目的地。
数据包已创建并发送给客户端(受害者)。
客户端收到此数据包并检查该数据包的内容。它看到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)
通过这个永无止境的循环,您可以有效地阻塞客户端和网关之间的通信。