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

我想知道大多数管理员如何解决此类问题。我通过搜索找到了DHCP探针,并考虑进行尝试。有没有人有经验? (我想在花时间编译和安装之前知道这一点。)

,您是否知道寻找恶意DHCP服务器的任何有用工具或最佳实践?

评论

MS工具,使用非常简单!恶意DHCP服务器检测-RogueChecker.zipblogs.technet.com/b/teamdhcp/archive/2009/07/03/…

我在social.technet.microsoft.com/wiki/contents/articles/…上找到了对您的链接aa.malta的正式引用,但是该链接从2016年起似乎不再起作用。它显示了2009年的博客文章,但我只请参阅7月6日和6月29日的帖子。您发布的链接URL似乎没有7月3日的帖子。看起来MS出于知道原因的原因将其删除了。

看起来这个直接链接(我在wordpress网站上找到)可以从Microsoft Server下载文件。链接从2016年1月开始运行。由于URL是Microsoft,因此我认为它可以信任,但我不能保证:blogs.technet.com/cfs-file.ashx/__key/…

Wayback机器有一个副本web.archive.org/web/20100601022750/http://blogs.technet.com/b/…

#1 楼

一种简单的方法是简单地在计算机上运行诸如tcpdump / wireshark之​​类的嗅探器,然后发出DHCP请求。如果您在真正的DHCP服务器上看到其他任何报价,则说明您有问题。

评论


帮助使用以下过滤器:“ bootp.type == 2”(仅用于显示DHCP提供,并查看是否有来自其他/未知来源的响应)

–l0c0b0x
09年6月16日在20:13

将类似DHCP-Find(softpedia.com/get/Network-Tools/Network-IP-Scanner/…)的程序与TCPDump / Wireshark结合使用以触发DHCP响应。

–酱
2012年5月19日15:03

您能否提供更具体的解决方案?

–塔拉字节
16-11-30在23:07

@tarabyte我不确定应该提供什么解决方案或改进措施。我认为这个问题可以从其他十几个好的答案中得到很好的覆盖?这些天,我的转到选项是像Jason Luther建议的那样,仅将交换机配置为阻止DHCP。是否有需要更好地涵盖的特定问题?

– Zoredache
16-11-30在23:54



我期望更多的命令序列可以使用tcpdump,arp等,并带有明确的参数并解释这些参数。

–塔拉字节
16年1月1日在0:49

#2 楼

重述并添加其他一些答案:

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

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

在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服务器:


http:// www.cisco.com/zh-CN/docs/switches/lan/catalyst6500/ios/12.2SX/configuration/guide/snoodhcp.html
http://www.juniper.net/techpubs/zh_CN/junos9。 2 / topics / concept / port-security-dhcp-snooping.html
http://h40060.www4.hp.com/procurve/uk/en/pdfs/application-notes/AN-S12_ProCurve-DHCP-snooping -final.pdf


#3 楼

dhcpdump,采用tcpdump的输入形式,仅显示与DHCP相关的数据包。帮助我找到了Rootkit Windows,在我们的LAN中伪装成DHCP。

#4 楼

Wireshark / DHCP资源管理器/ DHCP Probe方法非常适合一次性或定期检查。但是,我建议您对网络上的DHCP侦听支持进行研究。此功能将提供对网络上流氓DHCP服务器的持续保护,并得到许多不同硬件供应商的支持。
•验证从不可信来源收到的DHCP消息并过滤掉无效消息。

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

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

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


评论


瞻博网络的DHCP侦听文档:juniper.net/techpubs/en_US/junos9.2/topics/concept / ... ProCurve的DHCP侦听:h40060.www4.hp.com/procurve/zh/zh/pdfs/application-notes/…

–sclarson
09年5月15日14:25

#5 楼

dhcploc.exe是Windows系统上最快,最方便的方法。它在XP支持工具中可用。支持工具在每个OEM /零售XP磁盘上,但是可能会或可能不会在某些OEM提供的“恢复磁盘”上。您也可以从MS下载它们。

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

评论


只是将其与杀死单个交换机端口结合使用来跟踪我们正在处理的偷偷摸摸的恶意服务器。好东西!

–DHayes
2010-09-10 15:44

您仍然可以在Windows 7上使用DHCPloc.exe:1.从[这里] [1]下载“ Windows XP Service Pack 2支持工具”。 2.右键单击可执行文件,然后选择“属性”->“兼容性”,然后打开“兼容性模式”并将其设置为“ Windows XP(Service Pack 3)”。 3.正常安装。在我的Win7 x64安装上,DHCPLoc.exe可以正常工作。 [1]:microsoft.com/en-us/download/details.aspx?id = 18546

–parsley72
2012年4月29日23:24

我刚刚注意到您可以从以下位置下载可执行文件,并且在Win 10 x64下可以正常运行:gallery.technet.microsoft.com/DHCPLOC-Utility-34262d82

– PeterJ
16年11月4日,1:14

#6 楼

Scapy是基于python的数据包制作工具,非常适合这些排序任务。这里有一个如何精确执行此操作的示例。

评论


哇,我发现Scapy深入研究了几天之后,功能如此强大。它超越了诸如dhcpfind.exe和dhcploc.exe之类的cr脚工具。 Scapy 2.2可以在Linux和Windows上运行-我都尝试过。唯一的障碍是您必须在一定程度上了解Python编程语言以利用其功能。

–陈i
13年5月21日在1:35



您发布的链接已损坏

–Jason S
2015年2月10日在20:46

@JasonS嗨,我已经更新了链接,但是更改正在等待同行审阅...等待期间,您可以在这里找到:bitbucket.org/secdev/scapy/wiki/doc/IdentifyingRogueDHCPServers

–惠更斯
15年8月14日在16:06

#7 楼

扩展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'


评论


非常有用,我花了很多时间试图弄清楚为什么我得到tcpdump:语法错误。甚至在上面发布了一个问题,您的回答也畅通无阻,谢谢! networkengineering.stackexchange.com/questions/39534/…

–伊利亚·林恩(Elijah Lynn)
17 Mar 10 '17 at 5:16

另外,我认为-R 发生了某些变化。我得到tshark:不带-2的-R已过时。对于单通滤波,请使用-Y。-Y效果很好。

–伊利亚·林恩(Elijah Lynn)
17 Mar 10 '17在5:17



#8 楼

一旦您确定网络上存在恶意dhcp服务器,我发现解决该问题的最快方法是... />“其中一个人已经在LAN中添加了无线路由器,您已经杀死了所有人的互联网”。

期待一个令人毛骨悚然的响应,或者冲突的设备会很快消失:)

#9 楼

禁用主DHCP服务器并(重新)配置连接。

如果获得IP地址,就很无赖。否则,您可以嗅探流量以查看DHCP响应来自何处。

评论


虽然这当然可以工作,但是如果您实际上担心提供服务,则停止生产DHCP服务器可能不是最佳方法。

–马西莫
2012年2月14日在11:04

取决于您服务的人数。在大多数情况下,您可以在几分钟内中断服务,而没人会注意到,尤其是在大多数人已经租用了一天的中途。

– Vinko Vrsalovic
2012年2月16日在11:44

#10 楼

有几种方法,如果您运行的是小型网络,最简单的方法是关闭/禁用/拔下dhcp服务器,然后在客户端上运行
ipconfig / renew
或类似方法,如果和IP,您的网络上会出现一些路由问题。

还有许多可用的实用程序,其中一项是DHCP资源管理器,另一项是您在原始帖子中提到的DHCP探针。

#11 楼

您可以使用Microsoft提供的RogueChecker:

原始链接:
http://blogs.technet.com/b/teamdhcp/archive/2009/07/03/rogue-dhcp-server- detection.aspx

下载链接:
https://web.archive.org/web/20141022013752/http://blogs.technet.com/b/teamdhcp/archive/2009 /07/03/rogue-dhcp-server-detection.aspx

还阅读以下信息:

https://social.technet.microsoft.com/wiki/contents /articles/25660.how-to-prevent-rogue-dhcp-servers-on-your-network.aspx

#12 楼

我建议启动两个终端,一个用于监视,另一个用于发送请求。 Terminal1将显示来自所有现有DHCP服务器的响应,包括MAC地址。此示例在Ubuntu上运行:

Terminal1(用于监视):

20:a6:80:f9:12:2f> ff:ff:ff:ff:ff:ff:ff,ethertype IPv4(0x0800),长度332:192.168.1.1.67> 255.255.255.255。 68:BOOTP / DHCP,答复,长度290
00:23:cd:c3:83:8a> ff:ff:ff:ff:ff:ff,ethertype IPv4(0x0800),长度590:192.168.1.253 .67> 255.255.255.255.68:BOOTP / DHCP,答复,长度548

Terminal2(用于发送请求):

sudo nmap --script broadcast-dhcp- discover -e eth0

在EEST 2019-10-13 21:21开始Nmap 7.01(https://nmap.org)
预扫描脚本结果:
| broadcast-dhcp-discover:
|回应1之1:
|提供的IP:192.168.1.228
| DHCP消息类型:DHCPOFFER
| IP地址租用时间:2h00m00s
|服务器标识符:192.168.1.1
|子网掩码:255.255.255.0
|路由器:192.168.1.1
| _域名服务器:8.8.8.8,8.8.4.4
警告:未指定目标,因此已扫描0台主机。
已完成Nmap:0个IP地址(0个主机)在0.94秒内扫描完毕。

只需要该监视终端即可查看所有响应(nmap只能显示第一个响应)。

评论


至少对于linux而言,这与接受的答案的噪音和其他噪音不同,它的工作原理非常简单,并且已经安装了tcpdump和nmap。帮助我快速跟踪网络上的红色dhcp服务器。

– DKebler
20-11-12的20:02

#13 楼

您可以对网络进行ping扫描,然后将其与DHCP服务器分发的DHCP租约数量进行比较。

您需要对静态设备(可能是路由器接口和打印机)的数量有所了解,但这会是一种快速准确的跨多个网络识别它们的方法。 。

#14 楼

在debian / ubuntu上,还可以选择使用dhcpdump和/或tcpdump,例如dhclient

使用dhcpdump:


1.a)在一个shell / shell(eth0或接口名称)中运行dhcpdump -i eth0

1.b)在另一个shell中启动dhclient(不必成功运行)

1.c)查看dhcpdump的输出以获取信息(它应该是格式精美,内容丰富的信息)最详细的列表)

如果您不喜欢使用dhcpdump,则选择2:


2.a)在一个shell /窗口中运行tcpdump -i eth0 -t -n > /tmp/my_file.txt
(可选:-t =禁用时间戳记// -n =禁用名称解析,仅提供IP地址,无服务器名(对于RHEL / centos使用-nn))
2.b)在另一个shell中启动dhclient(它不会不必成功运行)
2.c)停止正在运行的tcpdump()
2.d)使用您喜欢的编辑器检查文件/tmp/my_file.txt并搜索诸如以下内容:“。 53”(默认的DNS端口)/“ NX” /“ CNAME” /“ A?” /“ AAAA”-

* sidenote:可能必须安装tcpdump和dhcpdump(例如:sudo apt get install tcpdump dhcpdump); dhcpdump取决于tcpdump

#15 楼

在OSX(我怀疑是Linux)下,这就是我所做的:
tcpdump -i en0 -n port 67 or port 68

您需要将en0更改为接口的名称。发出DHCP请求(通过单击“网络系统偏好设置”面板的高级部分中的“续订DHCP租约”)后,我看到了类似以下情况: “ Bootstrap协议服务器。
可能需要关闭主DHCP服务器,以查看其他任何不适当地响应DHCP请求的网络设备。