确定网络中是否有恶意DHCP服务器的最佳方法是什么?
我想知道大多数管理员如何解决这类问题。我通过搜索找到了DHCP探针,并考虑进行尝试。有没有人有经验?(我想在花时间编译和安装之前知道)。
您是否知道寻找恶意DHCP服务器的有用工具或最佳实践?
确定网络中是否有恶意DHCP服务器的最佳方法是什么?
我想知道大多数管理员如何解决这类问题。我通过搜索找到了DHCP探针,并考虑进行尝试。有没有人有经验?(我想在花时间编译和安装之前知道)。
您是否知道寻找恶意DHCP服务器的有用工具或最佳实践?
Answers:
一种简单的方法是简单地在计算机上运行诸如tcpdump / wireshark之类的嗅探器,然后发出DHCP请求。如果您从实际的DHCP服务器上看到其他任何报价,则说明您有问题。
tcpdump
,arp
具有明确的参数,这些参数的说明等。
回顾并添加一些其他答案:
暂时禁用生产DHCP服务器,并查看其他服务器是否响应。
您可以通过ipconfig /all
在Windows计算机上运行来获取服务器的IP地址,然后使用来查找该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服务器:
Wireshark / DHCP资源管理器/ DHCP Probe方法非常适合一次性或定期检查。但是,我建议您对网络上的DHCP侦听支持进行研究。此功能将提供对网络上流氓DHCP服务器的持续保护,许多不同的硬件供应商都支持此功能。
这是Cisco docs中指示的功能集。
•验证从不可信来源收到的DHCP消息并过滤掉无效消息。
•对来自受信任和不受信任来源的DHCP流量进行速率限制。
•构建和维护DHCP侦听绑定数据库,该数据库包含有关具有租用IP地址的不受信任主机的信息。
•利用DHCP侦听绑定数据库来验证来自不受信任主机的后续请求。
dhcploc.exe是Windows系统上最快,最方便的方法。它在XP支持工具中可用。支持工具在每个OEM /零售XP磁盘上,但是可能会或可能不会在某些OEM提供的“恢复磁盘”上。您也可以从MS 下载它们。
这是一个简单的命令行工具。您运行dhcploc {yourIPaddress},然后按'd'键进行虚假发现。如果不按任何键即可使其运行,它将显示每个DHCP请求并听到答复。按“ q”退出。
Scapy是基于python的数据包制作工具,非常适合这些排序任务。还有就是怎么做的正是这样的例子在这里。
扩展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: syntax error
。甚至在上面发布了一个问题,您的回答也畅通无阻,谢谢!networkengineering.stackexchange.com/questions/39534/...
-R <Read filter>
。我懂了tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
。-Y
效果很好。
禁用主DHCP服务器并(重新)配置连接。
如果您获得了IP地址,那么您就流氓了。
如果您使用Linux,则标准dhcpclient会告诉您DHCP服务器的IP地址(否则,您可以嗅探流量以查看DHCP响应来自何处)。
有几种方法,如果您运行的是小型网络,最简单的方法是关闭/禁用/拔下dhcp服务器,然后在客户端上运行ipconfig / renew或类似的命令,如果您获得IP,则您的计算机上存在一些问题网络。
另一种方法是使用Wireshark数据包捕获器/分析器查看您的网络流量并查找DHCP连接,此处有一个实验室工作表,介绍如何实现此目的。
还有许多实用程序可以做到这一点,一个是DHCP资源管理器,另一个是您在原始帖子中提到的DHCP探针。
您可以使用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
还阅读以下信息:
在debian / ubuntu上,也可以选择使用dhcpdump
和/或tcpdump
借助例如dhclient
使用dhcpdump:
dhcpdump -i eth0
在一个shell / shell中运行(eth0或您的接口名称)dhclient
另一个外壳启动(不必成功运行)dhcpdump
获取信息(它应该是格式精美,内容详实的详细信息列表)选项2如果您不喜欢使用dhcpdump:
tcpdump -i eth0 -t -n > /tmp/my_file.txt
在一个外壳程序/窗口中运行-t
=禁用时间戳// // -n
禁用名称解析,仅IP地址,无服务器名称(对于RHEL / centos使用-nn))dhclient
在另一个外壳中启动(不必成功运行)*旁注:可能必须安装tcpdump和dhcpdump(例如:)sudo apt get install tcpdump dhcpdump
;dhcpdump取决于tcpdump
我建议启动两个终端,一个用于监视,另一个用于发送请求。Terminal1将显示来自所有现有DHCP服务器的响应,包括MAC地址。此示例在Ubuntu上运行:
Terminal1(用于监视):
sudo tcpdump -nelt udp端口68 | grep -i“启动。*回复”
tcpdump:详细输出被抑制,使用-v或-vv进行完整协议解码,监听enp2s0,链接类型EN10MB(以太网),捕获大小262144字节20:a6:80:f9:12:2f> ff:ff:ff: ff:ff:ff,以太网类型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,以太网类型IPv4(0x0800),长度590:192.168.1.253.67> 255.255.255.255.68:BOOTP / DHCP,答复,长度548
Terminal2(用于发送请求):
sudo nmap --script广播-dhcp-发现-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.94秒内扫描了0个IP地址(0个主机已启动)
只需要该监视终端即可查看所有响应(nmap只能显示第一个响应)。