文章插图
写在前面的话
微软在今年一月份发布的更新 , 让公众对DHCP客户端中的关键漏洞CVE-2019-0547有了一个新的认识 。这个漏洞的CVSS评分非常高 , 而且微软也没有立即发布相关的可利用性评价 , 因此用户也很难决定是否需要立即更新他们的系统 。但是某些研究人员认为 , 这个漏洞在不久的将来很可能会被大量网络犯罪分子利用 。
因此 , 为了更好地检测针对DHCP漏洞的攻击以及相关的漏洞 , 并更新我们的产品 , 我们需要深入了解所有的细节 。而我们要做的第一件事 , 就是网络侦察 。
网络侦查
一开始我们打算使用搜索引擎来寻找关于该漏洞的信息 , 但并没有找到太多的细节 , 而且大部分内容都是来自MSRC网站发布的安全公告 。不过在浏览这些安全公告的过程中 , 我们发现我们面对的是Window10(版本1803)中客户端和服务器端系统的一个内存崩溃漏洞 , 当攻击者向DHCP客户端发送专门设计的响应信息时 , 就会触发该漏洞 。
文章插图
我们可以看到 , MSRC给出的评分为2 , 被利用的可能性比较小 , 这意味着这个漏洞可能无法被利用 , 或者利用难度大 。不过 , 我们还是想通过自己的分析 , 看看这个漏洞到底是什么情况 。
在这个网站中 , 我们下载了这个安全更新补丁(.msu文件) , 将其解压 , 然后查找跟客户端处理DHCP响应相关的文件 。但是这很困难 , 因为这个补丁包里面包含的是当月修复的所有漏洞补丁 , 而不是针对单个漏洞的补丁 。在大量的文件中 , 我们用过滤器找到了几个匹配的代码库 , 然后对系统的版本进行了比较 。其中 , dhcpcore.dll库是最接近的:
文章插图
实际上 , 只有DecodeDomainSearchListData这个函数进行了较大的改动 , 如果你熟悉DHCP协议的话 , 你就会知道它其实很少使用函数 。
DecodeDomainSearchListData函数
DHCP中的域名搜索选项号为0×77(119) , 它允许服务器再客户端上设置DNS后缀 , 但不适用于windows设备 , 因为之前的Windows系统会忽略这个选项 。在必要的时候 , 可以通过组策略来配置DNS的名称后缀 。不过Windows 10在新版本1803中引入了针对域名搜索选项的处理库 。
文章插图
DecodeDomainSearchListData的处理过程如下:首先从服务器端接收信息 , 然后根据域名搜索选项的配置来解码数据 。针对输入 , 它接收封装好的数据数组 , 并输出一个以空字节结尾的字符串 , 这个字符串包含由逗号分隔的域名列表 。比如说 , 该函数会对下面这个域名后缀进行转换:
.eng.Apple.com
.marketing.apple.com
eng.apple.com,marketing.apple.com
DecodeDomainSearchListData会在UpdateDomainSearchOption的处理过程中被调用 , 并将返回的结果列表写入注册表键的”DhcpDomainSearchList”参数中:
HKLMSYSTEMCurrentControlSetServicesTcpipParametersInterfaces{INTERFACE_GUID}
然后将主参数存储至特定的网络接口:
文章插图
DecodeDomainSearchListData函数会进行两次数据传递 。第一次 , 它会执行除设置输出缓冲区进入点之外的所有操作 , 即计算保存返回数据所需要的内存大小 。第二次 , 它会为数据分配内存 , 并进行数据填充 。这个函数大约有250条指令 , 主要任务就是处理传入的字节流 。它还会检查缓冲区的大小 , 如果大小为零 , 则不会为缓冲区分配内存 , 并完成执行然后返回错误信息:
文章插图
因此 , 只有当目标缓冲区大小为零时 , 才可以触发漏洞 。
漏洞利用
首先 , 我们可以使用重解析点来确保非空输入数据生成并输出一个空字符串:
推荐阅读
- DHCP服务如何配置才能尽量减少被攻击的可能
- 简历中的兴趣爱好该怎么写 特长爱好写简历怎么写
- 谁才是毛尖中的尖子生 毛尖属于什么茶
- 什么是红茶菌红茶中的红茶菌有何功效
- 微软|众多新功能上阵!微软喊话下一个Windows 11大更新要来了
- 汇文茶时光茶馆喧哗中的漠漠时光
- 唐伯虎茶画体会其中的茶艺思想的介绍
- 婚姻中的三观是哪些 婚姻中的三观是哪三观
- 禅堂中的茶道
- 小米手机中的6个小功能,简单又好用,安排!