【发布时间】:2012-05-02 13:48:55
【问题描述】:
我正在使用 Python 和他的合作伙伴 Scapy 进行编程。我面临的情况是,我不知道这是 ARP 协议的正常行为还是其他问题。
我有这种情况:
1- 一台 vm 机器 (1) 向另一台 vm 机器 (2) 发送“ARP 请求”,其中包含 Spoofed Source MAC Address 字段(由 Scapy 生成)。
2 - vm 机器 (2) 收到带有欺骗源 MAC 地址字段的“ARP 请求”,并使用“ARP 回复”来响应。奇怪的是 vm 机器 (1) 收到了。
注意事项: 我已通过 Wireshark 确认第一个数据包(ARP 请求)到达 vm 机器 (2),且源 MAC 地址字段确实被欺骗了。并且网络接口上的混杂模式被禁用,因此 vm 机器只接收真正发往其接口的数据包。
所以,我的问题:
a) 这是 ARP 协议的正常行为吗?
b) 因为 vm 机器 (1) 在您的接口上配置了另一个 MAC 地址(真实的),所以从 vm 机器 (2) 发送的响应数据包如何与目标上的另一个 MAC 地址字段(即被欺骗,因此甚至不存在于网络上)到达 vm 机器 (1) 并由 vm 机器 (1) 有效处理,就像有效的“ARP 回复”一样??
【问题讨论】:
-
你说的是ARP缓存吗?如果机器收到一个 ARP 响应(不是发给它的),它将把它缓存在本地缓存中。毕竟,如果有人宣布“00-1F-29-52-E7-81 位于 1.1.1.1”,为什么不添加一个 arp 条目映射 1.1.1.1 -> 00-1f-29-52-e7-81。跨度>
-
您还可以检查是否有任何其他数据包从 vm 机器 2 到 vm 机器 1 正在广播地址上发送? vm 机器 1 可能正在发送 arp 通知(即使在禁用混杂模式的接口上也会收到)。
-
嗨,David,我将举例说明(数据包 1 - 请求)——谁拥有 IP 192.168.2.2? -- 源 MAC 地址:22:22:22:11:11:11(欺骗)- 目标 MAC 地址:ff:ff:ff:ff:ff:ff(广播)******** (数据包 2 - 回复)- IP 192.168.2.2 位于 44:44:44:44:44:44 -- 源 MAC 地址:44:44:44:44:44:44 -- 目标 MAC 地址: 22:22:22:11:11:11 (Spoofed) **** Question: Packet2 (reply) 如何回到 vm 机器 (1) 如果数据包包含一个虚假的目标 MAC 地址不是真正的 MAC vm机器(1)的网络iface上配置的地址?
-
您如何确认 Packet2 已返回到原始 VM 机器?您是在进行数据包捕获(数据包捕获设置为混杂模式)还是只是检查 VM2 上的 arp 缓存。在第一台机器上的数据包捕获中,您确定它没有收到任何目标 MAC 设置为广播 MAC 地址的广播 arp。
-
我正在使用 Wireshark 进行捕获。从两台机器捕获时禁用混杂模式。 VM2 上的 ARP 缓存只有一个条目(Spoofed IP to Spoofed MAC),没有出现来自 VM1 的真实 MAC。在 VM1 上,我看到 ARP 回复数据包返回的捕获:即使目标字段上的假 MAC 与 VM1 的网络 iface 上的真实 MAC 不匹配
标签: python networking arp scapy spoof