检测具有相同MAC地址的另一个主机
如何检测另一个主机是否使用与当前主机相同的MAC地址(例如,因为其他主机是欺骗?检测具有相同MAC地址的另一个主机
我在嵌入式环境中工作,所以找一个协议层次的答案,而不是“用这样或那样的工具”。
编辑:RARP确实不是解决了这个问题。为了让RARP得到任何答复,必须在支持RARP的网段上至少有一台主机。由于RARP已经过时,现代操作系统不支持它。此外,所有RARP都可以告诉你自己的IP地址 - 如果在具有相同MAC的网段上有另一个主机,则该响应不会有任何不同,除非该主机本身使用了不同的IP地址。在单一网段使用相同的MAC地址
这个问题太放人了!在几次错误的开始之后,我开始思考问题的基本组成部分,并向RFC寻求建议。 我还没有找到一个明确的答案,但这里是我的思维过程,希望它有助于:
原来的问题询问如何检测其他设备与您的MAC地址。假设你在一个IP网络上,完成这个需要什么?
的被动方法是简单地听交通和寻找,你没有发射,但有你的MAC地址的任何数据包。这可能会或可能不会发生,所以虽然它可以告诉你明确是否存在重复,它不能告诉你明确说没有。
不限活性方法要求发送一个数据包力冒名顶替者作出反应。这立即消除了任何依赖于可选协议的方法。
如果有其他设备欺骗你,它必须(顾名思义),使报文带着您 MAC地址作为目的做出回应。否则,它窥探但不欺骗。
该解决方案应该是独立的IP地址,并且仅涉及MAC地址。
所以答案,看来,将是要么发送广播(以太网)数据包,或与您的MAC地址作为其目标,这需要一个响应包。 Monkeywrench是一个IP地址通常涉及,你不知道它。
什么样的协议适合这种描述?
简单的答案:
- 如果您的网络支持BOOTP或DHCP,大功告成,因为这种权威绑定MAC地址,IP地址。发送BOOTP请求,获取IP地址,并尝试与之通话。你可能需要具有创造性,以强制数据包上网,并防止自己回应(我正在考虑明智地使用iptables和NAT)。
不那么容易回答:
这是独立的IP的协议:一方不使用IP层,或一个允许广播。没有人想到。
发送任何数据包通常会生成您的响应,阻止您的响应并查找来自其他设备的响应。使用你的IP地址作为目的地似乎是明智的,但我并不相信这一点。不幸的是,细节(以及答案)留给了OP的练习......但是我希望讨论是有帮助的。
我怀疑最终的解决方案将涉及技术的组合,因为没有任何一种方法似乎可以保证可靠的决心。
一些信息,请http://en.wikipedia.org/wiki/ARP_spoofing#Defenses
如果一切都失败了,你可能会喜欢这样的:http://www.rfc-editor.org/rfc/rfc2321.txt
请张贴跟进你的解决方案,因为我敢肯定,这将是有益的给他人。祝你好运!
两个主机可能会使开关发疯,你很可能由具有极不可靠的网络连接(如开关将发出属于您的主机的数据包的某些部分检测出来第二个,取决于你们哪一方向他们的方向发送了最后一个数据包)。
您可以发送一个ARP请求在子网中的每个可能的IP。 当然,ARP请求的源地址必须是ff:ff:ff:ff:ff:ff,否则你可能看不到响应。
我用bittwiste伪造了一个这样的数据包,并用PReplay重播了它,网络上的所有主机都收到了响应。 (我不知道如果这些伪造的ARP数据包是合法的或不...某些操作系统可能会忽略它们)
这里是伪造的包看起来像:
这里的答复是什么样子:
如果你看的答复,并看到包一个您的MAC地址(在红色矩形),比别人有相同的MAC地址做什么...
Unfortuantely我不能”完全检验理论,因为没有一个m y(Windows)机器关心我试图设置网卡的MAC地址...
这是非常晚,并且是无法回答的,但我想跟进到底我做了什么以防其他人感兴趣。
我正在使用一些非常奇怪的嵌入式硬件,它没有在制造时分配的MAC地址。这意味着我们需要用软件分配一个。
显而易见的解决方案是让用户选择一个他们知道在他们的网络上可用的MAC地址,最好是从本地管理的范围,这就是我所做的。但是,我想选择一个合理安全的默认值,并且在发生冲突时尝试警告用户。
最后,我决定在本地管理的范围内选择随机默认设置,通过制作一些具有中等熵的硬件读数进行选择。我故意排除了这个范围的开始和结束,因为我们假定这些范围可能是手动选择的。有可能在任何给定的网络上只有这些设备中的一个,并且当然少于20个,所以冲突的可能性非常低,尽管不会像可预测的随机数那样低。
鉴于出现问题的可能性很小,并且尽管上面有出色的答案,我决定免除冲突检测,并提醒用户注意MAC冲突问题。
如果我确实决定实施冲突检测,那么考虑到我控制整个网络堆栈,我可能会查找过多的未知或丢失的数据包,然后触发MAC地址更改或在发生此情况时发出警告。
希望这可以帮助别人 - 但可能不会!
感谢您的出色反应。 为了我的目的,可以依靠IP--我不希望支持非IP网络:)。 我一定会跟进。 – 2008-11-10 14:30:56