题 如何查找网络上是否存在恶意DHCP服务器?


确定我的网络中是否有流氓DHCP服务器的最佳方法是什么?

我想知道大多数管理员如何解决这些问题。我发现 DHCP探测器 通过搜索,并考虑尝试。有没有人有过这方面的经验? (我想在花时间编译并安装之前知道)。

你知道任何有用的工具或最佳实践来寻找恶意DHCP服务器吗?


87
2018-05-15 08:12




MS工具非常简单易用! Rogue DHCP服务器检测 - RogueChecker.zip blogs.technet.com/b/teamdhcp/archive/2009/07/03/... - aa.malta
我找到了你的链接aa.malta的官方参考 social.technet.microsoft.com/wiki/contents/articles/... 但该链接在2016年不再有效。它向我展示了2009年的博客帖子,但我只看到了7月6日和6月29日的帖子。似乎没有链接网址所示的7月3日帖子发布。看起来MS删除它谁知道是什么原因。 - Daniel
看起来这个直接链接(我在wordpress网站上找到)可以从Microsoft服务器下载文件。链接工作自2016年1月起。由于URL是Microsoft,我觉得它可以信任,但我不保证: blogs.technet.com/cfs-file.ashx/__key/... - Daniel


答案:


一种简单的方法是在计算机上简单地运行像tcpdump / wireshark这样的嗅探器并发出DHCP请求。如果您从真实的DHCP服务器上看到其他任何优惠,那么您就知道自己遇到了问题。


53
2018-05-15 08:31



帮助使用以下过滤器:“bootp.type == 2”(仅用于显示DHCP提供,并查看是否存在来自不同/未知来源的响应) - l0c0b0x
使用DHCP-Find等程序(softpedia.com/get/Network-Tools/Network-IP-Scanner/...)与TCPDump / Wireshark一起触发DHCP响应。 - saluce
你能提供更具体的解决方案吗? - tarabyte
@tarabyte我不确定我应该提供什么解决方案或改进。我认为这个问题从其他十几个好的答案中得到了很好的报道?这些天我的goto选项只是将你的交换机配置为阻止DHCP,就像Jason Luther建议的那样。是否需要更好地涵盖某些具体内容? - Zoredache
我期待更多的一系列命令可以使用 tcpdump, arp等,具有明确的参数和那些参数的解释。 - tarabyte


回顾并添加一些其他答案:

暂时禁用生产DHCP服务器并查看其他服务器是否响应。 

您可以通过运行获取服务器的IP地址 ipconfig /all 在Windows机器上,然后您可以通过查找该IP地址来获取MAC地址 arp -a

在Mac上,运行 ipconfig getpacket en0 (或en1)。看到 http://www.macosxhints.com/article.php?story=20060124152826491

DHCP服务器信息通常位于/ var / log / messages中。 sudo grep -i dhcp /var/log/messages*

当然,禁用生产DHCP服务器可能不是一个好的选择。

使用专门查找恶意DHCP服务器的工具 

看到 http://en.wikipedia.org/wiki/Rogue_DHCP 获取工具列表(其中许多工具列在其他响应中)。

配置交换机以阻止DHCP提供

可以配置大多数管理型交换机以防止恶意DHCP服务器:


21
2018-05-15 09:18





dhcpdump,采取输入形式 tcpdump的 并仅显示与DHCP相关的数据包。帮助我找到rootkited Windows,在我们的局域网中冒充假DHCP。


16
2018-05-15 14:16





Wireshark / DHCP资源管理器/ DHCP探测方法适用于一次性或定期检查。但是,我建议调查一下 DHCP Snooping 支持您的网络。此功能将为网络上的恶意DHCP服务器提供持续保护,并受到许多不同硬件供应商的支持。

这是功能集,如下所示 思科文档

•验证从不受信任的来源收到的DHCP消息,并过滤掉无效的消息。

•速率限制来自受信任和不受信任来源的DHCP流量。

•构建和维护DHCP侦听绑定数据库,其中包含有关带有租用IP地址的不可信主机的信息。

•利用DHCP侦听绑定数据库验证来自不受信任主机的后续请求。


15
2018-05-28 23:08



Juniper的DHCP Snooping doc: juniper.net/techpubs/en_US/junos9.2/topics/concept/...  ProCurve的DHCP侦听: h40060.www4.hp.com/procurve/uk/en/pdfs/application-notes/... - sclarson


dhcploc.exe 是Windows系统上最快捷,最便捷的方式。它可以在XP支持工具中找到。支持工具位于每个OEM /零售XP磁盘上,但可能也可能不在某些OEM提供的“恢复磁盘”上。你也可以 下载 他们来自MS。

这是一个简单的命令行工具。你跑 dhcploc {yourIPaddress} 然后按“d”键进行虚假发现。如果你在没有按任何键的情况下让它继续运行,它将显示每个DHCP请求并回答它听到。按'q'退出。


10
2018-05-15 10:31



只是将它与杀死单个交换机端口结合使用,以追踪我们正在处理的偷偷摸摸的流氓服务器。好东西! - DHayes
您仍然可以在Windows 7上使用DHCPloc.exe:1。从[here] [1]下载“Windows XP Service Pack 2支持工具”。 2.右键单击可执行文件,选择Properties-> Compatibility,然后打开兼容模式并将其设置为“Windows XP(Service Pack 3)”。 3.正常安装。 DHCPLoc.exe在我的Win7 x64安装上运行正常。 [1]: microsoft.com/en-us/download/details.aspx?id=18546 - parsley72
我刚刚注意到你可以从以下位置下载可执行文件,它在Win 10 x64下工作正常: gallery.technet.microsoft.com/DHCPLOC-Utility-34262d82 - PeterJ


Scapy是一个基于python的数据包制作工具,适用于这些排序任务。有一个如何做到这一点的例子 这里


9
2017-08-24 23:48



哇,我发现Scapy在钻研它几天之后是如此强大。它超越了dhcpfind.exe和dhcploc.exe等糟糕的工具。 Scapy 2.2可以在Linux和Windows上运行 - 我试过了。唯一的障碍是你必须在某种程度上了解Python编程语言以利用它的力量。 - Jimm Chen
您发布的链接已损坏 - Jason S
@JasonS您好我已更新链接,但更改正在等待同行评审...等待时您可以在此处找到它: bitbucket.org/secdev/scapy/wiki/doc/IdentifyingRogueDHCPServers - Huygens


要扩展 l0c0b0x关于使用的评论 bootp.type == 2 作为过滤器。 bootp.type过滤器仅在Wireshark / tshark中可用。它在tcpdump中不可用,他的评论的上下文位置让我相信。

Tshark完美地为此工作。

我们将我们的网络划分为多个广播域,每个域都有自己的基于Linux的探测器,在“本地”广播域和管理子网上以一种或另一种方式存在。 Tshark结合了 ClusterSSH 允许我在网络的更远角落上轻松查找DHCP流量或(其他任何事情)。

这将使用Linux找到DHCP回复:

# ifconfig ethX promisc
# tshark -i ethX -n port 68 -R 'bootp.type == 2'

6
2018-02-14 10:57



非常有帮助,我花了很多时间试图找出我的原因 tcpdump: syntax error。甚至在上面发了一个问题,你的回答畅通无阻,谢谢! networkengineering.stackexchange.com/questions/39534/... - Elijah Lynn
此外,我认为有些事情发生了变化 -R <Read filter>。我明白了 tshark: -R without -2 is deprecated. For single-pass filtering use -Y.。 -Y 很好地工作。 - Elijah Lynn


一旦你确定网络上有一个流氓dhcp服务器,我发现解决它的最快方法是......

发送电子邮件给整个公司说:

“你们哪一个人已经在局域网中添加了无线路由器,你们已经为其他人杀了互联网”

期待一个羞怯的回应,或冲突的设备消失,迅速:)


6
2018-05-15 08:28