DHCP 服务器可以确定客户端的操作系统吗?

网络工程 dhcp 协议理论
2021-07-12 14:59:29

DHCP 服务器是否可以确定客户端操作系统?

我正在为基于 Web 的本地网络上的网关开发一个监控工具,并希望能够以某种方式确定网络上的设备正在运行什么操作系统,在我看来,最明显的发现是在DHCP 服务器分配 IP 地址的时间。

如果做不到这一点,我确实知道如何过滤端口 80 上的流量并提取 HTML 标头信息,但这种方法依赖于等待设备上网,因此不如早期检测/解决方案更可取,尤其是。因为并非所有设备都将用于浏览互联网。

我可以完全控制网关的配置——它运行一个精简的 debian 发行版,所以任何其他可以完成这项工作的工具——DHCP、DNS、ARP 等,我愿意接受建议!

4个回答

已经做了一些工作来确定来自不同操作系统的 DHCP 数据包的细微差异,从而产生 DHCP 指纹。示例包括 DHCP 请求中出现的选项及其顺序,以及某些选项的内容,如选项 55(参数列表)。

fingerbank.org 上查看文件和签名这表明(我自己没有测试过)可以完成基于 DHCP 流量的被动操作系统指纹识别。可以通过包含其他信息来改善结果,例如通用 IP 属性(TTL、diffserv 等)。

主动指纹识别可能会提供更好的结果,但在您的用例中可能不是一个选项。

Fingerbank 网站提到了几个使用签名的开源产品。专有 DHCP 设备 Infoblox 似乎包含类似的功能,但没有提供技术细节。

某些 DHCP 客户端在启动时不能可靠地公开操作系统信息。如上所述,有一些与这些技术相关的知识产权;例如,Infoblox 和 Cisco ISE 可以根据他们看到的 dhcp 数据包构建客户端操作系统配置文件。实际上,Cisco ISE 包括一些相当复杂的操作系统分类算法,如果您可以向它发送多个 dhcp 的话。

或者,您可以在“已用秒数”字段中使用类似于Windows 端序错误的启发式方法,但依赖操作系统错误是处理操作系统检测的一种糟糕方式。

如果您确实必须在没有专用供应商设备的情况下检测操作系统,只需发出 IP 地址,并在发送 DHCP Ack 后使用 NMAP 扫描主机。使用 HTTP 标头不如nmap可靠,因为任何人都可以根据需要更改 UserAgent 字符串。 nmap在操作系统检测方面不是 100% 可靠的,但是如果您必须为所有事情选择一种方法,它与您会发现的一样好。

我会将此作为服务器上的可配置选项,因为有些人可能不喜欢每个 DHCP 主机上的默认nmap扫描。

针对 Windows7 的nmap操作系统扫描示例

[mpenning@myhost ~]$ sudo nmap -O 10.1.1.1

Starting Nmap 5.51 ( http://nmap.org ) at 2013-08-24 16:20 CDT
Nmap scan report for 10.1.1.1
Host is up (0.00078s latency).
Not shown: 985 closed ports
PORT      STATE SERVICE
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds

Device type: general purpose
Running: Microsoft Windows Vista|2008|7
OS details: Microsoft Windows Vista SP0 - SP2, Server 2008, or Windows 7 Ultimate
Network Distance: 5 hops

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.25 seconds
[mpenning@myhost ~]$

作为 DHCP 过程本身的一部分,我不这么认为。但是,您可以抓取 dhcpd 日志,观察 dhcp acks 并根据这些执行外部进程,如 nmap os 指纹识别,以查看是否可以找出刚刚分配的 IP 背后的内容。

最短的准确答案是否定的。您已经得到了关于 的有用答案nmap,但是如果必须通过 DHCP,许多客户端会在他们的发现数据包中发送他们的供应商类标识符(DHCP 选项 60),以便 DHCP 服务器可以提供供应商特定选项(DHCP 选项 43)的报价。如果您运行 tcpdump 查看客户端发送的选项 60 的 DHCP 发现数据包,您可以看到类似MSFT 5.0Windows 客户端的内容,udhcpc通常用于运行微型 dhcp 客户端的嵌入式设备等。请记住,此信息不是很具体,因为它被使用区分 DHCP 客户端而不是操作系统。