首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scapy ARP中毒

Scapy ARP中毒
EN

Stack Overflow用户
提问于 2018-10-29 22:53:03
回答 1查看 5.8K关注 0票数 3

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

代码语言:javascript
复制
send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client))

问题1:

我的理解是,这是来自客户端的ARP请求的广播。不应该由攻击者执行ARP毒药,以响应:

代码语言:javascript
复制
send(Ether(dst=clientMAC)/ARP(op="is-at", psrc=gateway, pdst=client))

问题2:在一篇关于Scapy的堆栈溢出的文章中,OP发布了:

这将向受害者发送一个ARP应答包,本地计算机伪装成路由器:

代码语言:javascript
复制
send(ARP(op=ARP.is_at, psrc=router_ip, hwdst=victim_mac, pdst=victim_ip))

这将向路由器发送一个ARP应答包,本地计算机伪装成受害者:

代码语言:javascript
复制
send(ARP(op=ARP.is_at, psrc=victim_ip, hwdst=router_mac, pdst=router_ip))

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

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

问题3:在Scapy文件中:

代码语言:javascript
复制
send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client))

但在任择议定书问题2的文章中,没有提供以太(dst-clientMAC)。这是否意味着它不是必需的?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-03-14 15:08:42

在计算机网络中,ARP欺骗、ARP缓存中毒或ARP毒路由是攻击者向局域网发送(欺骗)地址解析协议(ARP)消息的一种技术。通常,目的是将攻击者的MAC地址与另一个主机的IP地址(例如默认网关)关联起来,从而导致将用于该IP地址的任何通信量发送给攻击者。维基

正如Scapy文档中提到的,

ARP缓存中毒攻击通过VLAN跳转攻击使客户端无法加入网关,从而使其ARP缓存中毒。

它们的意思是,可怜的客户端将无法将其数据包发送到网关(在本例中为接入点),并且无法与外部资源通信。但是,请注意,同一个客户端仍然能够与VLAN中的其他主机通信。即使是攻击者(假设它也连接到同一个WiFi网络)。

让我们一步一步地经历这场袭击。

在此之前,让我们进一步检查客户端上的当前ARP表(在执行攻击之前)。在Linux上,要查看ARP表,需要运行以下命令:

代码语言:javascript
复制
$ 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中执行以下命令时:

代码语言:javascript
复制
send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client))

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

  1. 在以太层,目标MAC地址dst被设置为指向客户端(受害者的) MAC。同时,Scapy自动填充其他以太层字段,最重要的是设置为攻击者MAC地址的src字段。这意味着在以太层,数据包似乎来自攻击者。其他以太层字段保持不变,并包含默认值。如果在Scapy中运行以下命令,您可以自己看到它: a = Ether(dst="clientMAC") a.show()
  2. 现在,在IP层上,攻击者创建一个ARP请求包,其中他将psrc (源IP)字段设置为指向网关节点的IP (在本例中为AP)。现在,请记住,以前,在以太层上,Scapy为我们填写了src字段,并将其设置为指向攻击者的MAC地址。这意味着,发送给客户端(受害者)的最后一个数据包看起来像是来自具有攻击者MAC和Gateway IP地址的主机。我们稍后再谈。现在,让我们继续前进。最后,将客户端的IP地址设置为pdst字段中数据包的目的地。
  3. 该数据包被创建并发送到客户端(受害者)。

客户端接收此数据包并检查数据包的内容。它看到ARP请求来自Gateway IP (让我们假设它是192.168.1.1)。它检查数据包以太层中的MAC地址字段psrc (假设它是a9:2b:24:9c:fd:c7)并更新它的ARP表,该表现在看起来如下:

代码语言:javascript
复制
$ sudo arp -n

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

如您所见,IP地址保持不变,但MAC地址发生了变化。因此,现在,每当客户端向Gateway节点发送数据包时,它实际上都会将它们发送给攻击者的MAC。如果攻击者的目标是阻止客户端与网关通信,则这些数据包将被丢弃,永远不会传递到所需的目的地。

当攻击者不断向客户端发送精心编制的ARP数据包时,客户端将无法与网关通信。一旦攻击者停止,带有真实IP和MAC地址的网关的真正ARP请求最终将到达eh客户端,恢复正常通信。因此,作为攻击者,您可能希望创建一个用于发送恶意数据包的循环,如下所示:

代码语言:javascript
复制
sendp(Ether(dst=”CLIENT-MAC”)/ARP(op="who-has", psrc=”GATEWAY-IP”, pdst=”CLIENT-IP”), inter=0.2, loop=1)

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53055062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档