it-swarm.cn

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

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

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

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

92
l0c0b0x

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

54
Zoredache

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

暂时禁用生产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://zh.wikipedia.org/wiki/Rogue_DHCP (其中许多工具已在其他回复中列出)。

配置交换机以阻止DHCP提供

可以将大多数受管交换机配置为防止流氓DHCP服务器:

22
Jason Luther

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

17
vartec

Wireshark/DHCP Explorer/DHCP Probe方法非常适合一次性或定期检查。但是,我建议您在网络上考虑 DHCP Snooping 支持。此功能将提供对网络上不可靠DHCP服务器的持续保护,许多不同的硬件供应商都支持此功能。

这是 Cisco docs 中指示的功能集。

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

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

•构建和维护DHCP监听绑定数据库,该数据库包含有关具有租用IP地址的不受信任主机的信息。

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

15
Dave K

dhcploc.exe 是Windows系统上最快最方便的方法。它可以在XP支持工具中使用。支持工具位于每个OEM /零售上XP您也可以通过MS download 他们从某些OEM提供。

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

10
quux

Scapy是一个基于python)的数据包制作工具,对这些排序任务很有用。这里有一个如何精确执行此操作的示例 here

9
Kyle Brandt

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

一旦确定网络上存在恶意dhcp服务器,我发现解决它的最快方法是...

向整个公司发送电子邮件,内容是:

“你们中的哪一个在LAN中添加了无线路由器,您已经杀死了其他所有人的互联网”

期望一个令人毛骨悚然的反应,或有冲突的设备很快消失:)

6
Shh now
3
juFo

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

如果您获得了IP地址,那么您就流氓了。

如果您使用Linux,则标准dhcpclient会告诉您DHCP服务器的IP地址(否则,您可以嗅探流量以查看DHCP响应来自何处)。

3
Vinko Vrsalovic

有几种方法,如果您运行的是小型网络,最简单的方法是关闭/禁用/拔下dhcp服务器,然后在客户端上运行ipconfig/renew或类似的命令,如果您获得IP,则您的计算机上存在一些问题网络。

另一种方法是使用 Wireshark 数据包捕获器/分析器查看您的网络流量并查找DHCP连接,这里有一个实验室工作表,介绍如何从 此处 获得此功能。

还有许多实用程序可以实现此目的,一种是 DHCP Explorer ,另一种是您在原始帖子中提到的DHCP探针。

3
Jona

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

您需要对静态设备(可能是路由器接口和打印机)的数量有个大致的了解,但会略微偏斜该数量,但这应该是在多个网络中识别它们的快速而准确的方法。

2
Peter

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

使用dhcpdump:

  • 1.a)运行dhcpdump -i eth0在一个Shell/shell中(eth0或您的接口名称)
  • 1.b)在另一个Shell中启动dhclient(不必成功运行)
  • 1.c)查看dhcpdump的输出以获取信息(它应该是尼斯格式的,最详细的信息列表)

选项2如果您不喜欢使用dhcpdump:

  • 2.a)运行tcpdump -i eth0 -t -n > /tmp/my_file.txt在一个Shell /窗口中
    (可选的: -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”-

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

2
eli

我建议启动两个终端,一个用于监视,另一个用于发送请求。 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-脚本广播-dhcp-发现-e eth0

从2019年10月13日21:21 EEST开始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只能显示第一个响应)。

1
ajaaskel