- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Scapy 文档给出了以下 ARP 缓存中毒的例子:
send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client))
问题一:
我的理解是,这是来自客户端的 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)。这是否意味着不需要?
谢谢。
最佳答案
In computer networking, ARP spoofing, ARP cache poisoning, or ARP poison routing, is a technique by which an attacker sends (spoofed) Address Resolution Protocol (ARP) messages onto a local area network. Generally, the aim is to associate the attacker's MAC address with the IP address of another host, such as the default gateway, causing any traffic meant for that IP address to be sent to the attacker instead. Wiki
正如 Scapy 文档中提到的,
ARP cache poisoning attack prevents a client from joining the gateway by poisoning its ARP cache through a VLAN hopping attack.
他们的意思是,可怜的客户端将无法将他的数据包发送到网关(在这种情况下为接入点),并且无法与外部资源通信。但是请注意,同一个客户端仍然能够与 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 会自动填写其他 Ether 层字段,最重要的是设置为攻击者 MAC 地址的 src
字段。这意味着在以太层上,数据包似乎来自攻击者。其他以太层字段保持不变并包含默认值。如果你在 Scapy 中运行以下命令,你可以自己看到它:
a = Ether(dst="clientMAC")
a.show()
现在,在 IP 层,攻击者制作了一个 ARP 请求包,他在其中设置 psrc
(源 IP)字段指向网关节点的 IP(本例中的 AP案子)。现在,请记住之前,在以太层上,Scapy 为我们填写了 src
字段并将其设置为指向攻击者的 MAC 地址。这意味着,发送给客户端(受害者)的最终数据包看起来像是来自具有攻击者 MAC 和网关 IP 地址的主机。我们稍后再谈。现在,让我们继续。最后,客户端的 IP 地址在 pdst
字段中设置为数据包的目的地。
数据包被创建并发送给客户端(受害者)。
客户端收到此数据包并检查数据包的内容。它看到 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)
通过这个永无止境的循环,您可以有效地干扰客户端和网关之间的通信。
关于Scapy ARP 中毒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53055062/
我需要在本地网络中查找 MAC 地址并且我使用的是 Linux。我所做的是使用 libnet 发送一个 ARP 请求,但是在我发送 3 个请求后,缓存仍然不会更新。我使用 wireshark 来捕获数
我正在尝试学习 ARP 协议(protocol)。我对 ARP 的看法是,它是一种有助于将 IP 寻址到确切 MAC 地址的协议(protocol)。 但是当我尝试这样做时: arp -a 我认为它将
因此,在我玩过 Digitalsquid 开发的 Network Spoofer (http://digitalsquid.co.uk/netspoof/) 之后,我一直试图通过编写一个执行某些操作的
我目前正在编写一个发送 arp 请求的小程序,该程序似乎可以工作,因为 wireshark 捕获了数据包,但有一些奇怪的地方;首先,目标主机没有收到数据包(我没有收到任何响应,甚至在目标上运行 wir
我们有一个运行 Windows XP Embedded SP1 的产品。我们在 ARP 表中为假 IP 配置假(不存在)MAC 地址。当发生通信时,Windows 将数据包发送到伪造的 MAC 和伪造
我试图在 Linux 中将 ARP 绑定(bind)添加到 ARP 表中,我的 arp 表如下所示: IP address HW type Flags HW addre
使用 ARP 表,我们可以访问 Android 9 及更早版本的热点连接设备的 IP 和 MAC。现在来自 Android 10 的权限被拒绝。请建议我如何在 Android 10 中访问连接设备的
我正在尝试在 Linux 上用 c 语言制作一个简单的 arp 欺骗程序(主要是为了更好地理解低级网络)。到目前为止,我成功地创建了一个 arp 请求并获得了带有目标和网关 mac 地址的 arp 回
我需要在任意 IP 网络上存储对第三方设备的持久引用,其中设备的 IP 地址可能是静态的或由 DHCP 随机分配的。我不控制网络上的设备,我不能依赖 DNS 和其他现有的或与设备一起使用的临时网络协议
Scapy 文档给出了以下 ARP 缓存中毒的例子: send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client)) 问
我正在尝试在我的 android 设备上调用“arp -a”,但由于它仅适用于 pc - 我该如何更改?有没有办法访问 arp -a 给你的 IP 地址列表,但是在 android 上? 我的代码在a
我正在从事一个网络安全项目,我注意到一些我无法解释的事情: 为什么我们需要arp中的源硬件地址字段?它不是已经包含在以太网 header 中了吗? 最佳答案 ARP 是这样设计的,因此它可以在其他硬件
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在通过 PC1 向 PC2 发送数据,两者都是 Linux 2.6 内核机器。此传输将需要几个小时。 PC1 中的 ARP 缓存过时超时设置为 50 秒。因此在数据传输期间,PC1 每隔 50 秒
我需要编写一个java程序,获取所有计算机网络接口(interface)并扫描子网内的IP地址和MAC地址。 我不太确定该怎么做,但我发现有一个方法叫做: Arping.scan(deviceName
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我需要一些可在 Linux 下编译的 C 或 C++ 代码,以便能够获取一些任意数量的远程主机的 IP 地址列表,并为每个主机获取一个以太网 MAC 地址。这些主机可能在同一个子网上,也可能在路由器后
我一直在尝试找出将 Linux ARP 表复制到数组中的最佳方法,我只需要 IP 和 MAC 地址。我试过复制/proc/net/arp 文件,但我发现这不是最好的方法,我读到除了 ARP(IPv6
我需要编写一个程序来显示这些信息: 网络统计 TCP/UDP 连接 有关IP的信息 ipconfig/all arp-a 路线图 我已经有了其中的大部分,但是我在 route print 和 arp
我正在为 WiFi direct 编写一个应用程序,它使用我通过另一种方法(有效)传输的 mac 地址,客户端将使用 ARP 表查找主机的 IP,因为 groupownerintent 在全部在安卓上
我是一名优秀的程序员,十分优秀!