通过 DHCP 选项避免检测

随笔3个月前发布 诶呦喂
28 0 0

感邮 | 通过 dhcp 选项避免检测

在进行红队演习时,我们希望尽可能地融入目标网络上的现有系统。对于大多数大型网络,这意味着当您请求 DHCP 地址时,它看起来就像一台 Windows 计算机。

但在很多情况下,我们连接到目标网络的机器不会运行 Windows,而更有可能运行 Linux 的变体。默认情况下,Linux DHCP 请求与 Windows DHCP 请求不同。可视化这一点的一种方法是从 Wireshark 捕获数据包,将 DHCP 请求复制到文本文件中并使用Meld进行比较。

通过 DHCP 选项避免检测
左边是 Windows 10,右边是 Linux(默认 Kali dhclient)

如果有人在查看 DHCP 日志文件中是否存在异常情况,DHCP 请求选项的差异就足以暴露您的信息。特别是,请更改您的主机名“kali”!

我想看看如何才能使这个 Linux DHCP 请求尽可能接近 Windows 10 请求。为此,我修改了/etc/dhcp/dhclient.confKali VM 上的文件。

我首先调整请求节中选项的顺序,并添加一些缺少的选项,以达到以下目的:

选项 rfc3442-classless-static-routes 代码 121 = 无符号整数 8 的数组;
选项供应商特定信息 43 代码 43 = 字符串;
选项 ms-classless-static-routes 代码 249 = 无符号整数 8 的数组;
选项 WPAD 代码 252 = 字符串;

请求子网掩码、路由器、域名服务器、
	域名、路由器发现、静态路由、
	供应商特定信息-43,dhcp6.名称服务器,
	dhcp6.域搜索、dhcp6.fqdn、dhcp6.sntp 服务器、
	netbios 名称服务器、netbios 节点类型、netbios 范围、
	域搜索、rfc3442-无类静态路由、
	ms-classless-static-routes,WPAD;

开头的关键字option提供非标准 DHCP 选项的定义,否则无法在该request节中请求这些选项。该rfc3442-classless-static-routes选项已存在于配置文件中,但我必须添加Windows 10 所要求的选项43249和。252

这让我得到了Option 55 Parameter Request List在以下融合比较中观察到的相同节:

通过 DHCP 选项避免检测

这让我需要Option 61 Client IdentifierOption 32 Host NameOption 81 Client Fully Qualified Domain NameOption 60 Vendor class Identifier。其中,选项 60 可能是最重要的,因为它指示发出请求的操作系统,并且很可能会在任何系统日志中脱颖而出!

谷歌搜索等内容"dhclient" "client fully qualified domain name"让我找到了每个选项的答案,从而产生了以下最终配置文件:

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
option vendor-specific-information-43 code 43 = string;
option ms-classless-static-routes code 249 = array of unsigned integer 8;
option WPAD code 252 = string; 
send host-name = "ROGAN-REPORTING";
send fqdn.fqdn = "ROGAN-REPORTING"; 
send dhcp-client-identifier = hardware;
send vendor-class-identifier "MSFT 5.0"; 
request subnet-mask, routers, domain-name-servers, domain-name,
router-discovery, static-routes, vendor-specific-information-43,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn,
dhcp6.sntp-servers, netbios-name-servers, netbios-node-type,
netbios-scope, domain-search, rfc3442-classless-static-routes,
ms-classless-static-routes, WPAD;

显然,您可能想在网络上窥探一段时间,看看机器命名标准是什么样的,以便您可以适当地更新 和hostnamefqdn.fqdn

我想要避免的另一件事是发送来自不同网络上的先前 DHCP 请求的任何 IP 地址。我使用以下命令行管理此操作:

dhclient -d -lf /dev/null

-d在调试过程中使用将 保持dhclient在前台,从而简化了调试周期。并man dhclient告诉我-lf指定了“租约文件”的路径,dhclient 将在其中存储任何先前发出的租约。通过将其设置为/dev/null,我确保不会记录任何租约,也无法读取任何租约。

最终,由于我正在与具有相同主机名的 Windows 请求进行比较,我得到:

通过 DHCP 选项避免检测
Windows(左)和 Linux(右)DHCP 请求的比较。

如果您手动编辑它以考虑选项顺序的差异,我们会得到:

通过 DHCP 选项避免检测
手动重新排序节后的最终结果。正如人们所预料的那样,只有序列、MAC 和 IP 地址不同!

唯一的语义差异(忽略数据包中选项的顺序)是 DHCP 序列号、MAC 地址和 IP 地址。显然,MAC 地址是需要注意的事情,因为许多系统都会查找发布 MAC 地址的 OUI,并将其显示在报告或日志文件中。不寻常的 OUI 也会脱颖而出,并可能暴露您的身份。避免这种情况的一种方法是运行 tcpdump 一段时间以查看其他 DHCP 客户端正在使用的 OUI,然后用于macchanger在同一 OUI 中生成随机 MAC 地址。

因此,通过观察各个选项的顺序仍然可以区分两者。不过,如果我因为这个而被抓住,我会感到非常惊讶!除此之外,您现在应该能够避开除最偏执的网络管理员之外的任何人的雷达 – 至少在获取 IP 地址方面如此!

Solved: DHCP Client that can change default Vendor Code (60) from MSFT 5.0 | Experts Exchange

systemd-networkd – ArchWiki

使用供应商类别标识符将 DHCP 限制到特定池:r/RGNets

Windows CE 中的供应商特定 DHCP(选项 43) – CodeProject

Vendor-class-id not matching – MikroTik

光猫里显示的设备类型为什么是MSFT5.0 – 百度文库

Is it possible to detect Android and iOS devices based on DHCP requests? – Server Fault

systemd.network

networking – How to set friendly network name of android computer? – Super User

 

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...