概述
-
在方程式组织攻击中国组织所控制的目标时捕获了代码
-
中国组织在发动针对方程式组织基础设施的攻击中捕获了代码(可能性较小)
-
中国组织和方程式组织攻击同一目标时,中国组织通过监视发现方程式组织的工具并捕获代码
背景
-
CVE-2017-0005漏洞是由Lockheed Martin公司的计算机事件响应小组发现并上报微软的
-
CVE-2017-0005漏洞使用的多层打包程序,似乎与其在CVE-2019-0803中发现的打包程序相同
CVE-2017-0005(左)和CVE-2019-0803(右)打包程序比较图
沿着这一线索,研究人员开始对CVE-2017-0005漏洞进行深入分析。在获得CVE-2017-0005的64位攻击样本后,研究人员根据微软报告中的描述信息进行了验证。发现这两个漏洞样本不仅匹配,而且在忽略随机页面分配时,两个样本都使用相同的地址。
微软的样本(左)和Check Point的样本(右)
通过寻找,研究人员发现了更多使用与CVE-2017-0005漏洞使用的打包程序相同或类似的样本和恶意软件家族。并发现这些恶意软件都明确地归属于与中国相关的攻击组织。结合微软将CVE-2017-0005归属于中国APT,NSA将CVE-2019-0803归属于受中国政府支持的威胁组织,研究人员更加确信CVE-2017-0005的漏洞利用程序被中国组织所使用的。
CVE-2017-0005(Jian)漏洞分析
操作系统版本上下文
研究人员在分析Jian时,注意到该漏洞利用会创建一个包含多个字段的丰富版本上下文,每个字段代表目标操作系统的不同特征。这种上下文信息在归因于中国组织的漏洞中并不常见,它看起来像是某种实用程序/框架。更加可疑的是,上下文中的某些字段(红色标记)甚至都没有初始化,并且漏洞利用程序本身仅使用了其中的三个(蓝色标记)版本信息,如下图所示:
Jian收集的版本信息
对比而言,CVE-2019-0803漏洞利用程序仅支持单一的Windows版本,并使用Windows Server 2008 R2的硬编码的版本常量。甚至,在阿里巴巴的报告中还提到该工具使用的文件名为2008.dll,毫无疑问的表明了该工具的目标系统。
全局配置表
操作系统版本枚举被用作全局配置表的索引。这是在需要版本依赖的配置时使用这种枚举的典型示例。配置表本身看起来较为强大,可能会被用于同一作者的其他漏洞利用程序中。
研究人员了查找包含该配置表的样本的检测规则,并查询到以下样本:
-
Mcl_NtElevation_EpMe_GrSa.dll(x86)—292fe1fc7d350cc7b970da0f308d22089cd36ab552e5659e3cfb0d9690166628
-
Mcl_NtElevation_EpMo_GrSa.dll(x64)—1537cad1d2c5154e142af775ed555d6168d528bbe40b31f451efa92c9e4f02de
文件的命名方式及其内容令研究人员感到惊讶。研究人员认出这些样本是影子经纪人泄漏的方程式组织工具的一部分。方程式组织是被怀疑与美国国家安全局(NSA)有联系的APT组织。令研究人员感到奇怪的是,在搜索2017年修补的归因于中国组织的CVE-2017-0005零日漏洞中,提取的特殊组件时,为何会显示2013年泄漏的方程式组织工具的结果?为了回答这个问题,研究人员开始深入研究并分析其所发现的信息。
APT31组织的Jian VS 方程式组织的EpMe
通过回顾分析方程式组织泄漏的工具,研究人员确定方程式组织的“EpMe”工具利用了CVE-2017-0005零日漏洞。研究人员表明EpMe漏洞利用程序与微软博客中描述的CVE-2017-0005的详细信息完全相符,并且该利用程序在微软修复了该漏洞后立即停止运作。但是两个APT组织利用同一漏洞(CVE-2017-0005)的可能只是一个巧合,这种情况通常被称为“漏洞冲突”。两个组织都有可能独立发现此漏洞,并不一定意味着这些工具之间存在真正的联系。
因此,接下来研究人员通过比较Jian和EpMe这两个漏洞利用样本,发现二者之间具有相似的版本上下文、相同的内存布局,且使用完全相同的硬编码常量。
相似版本上下文
上文中研究人员发现Jian使用了一个上下文,其中包含有关目标操作系统版本的多个字段,蓝色标记的是已用字段,未初始化的字段用红色标记。
Jian收集的版本信息
研究人员在回顾由DanderSpritz框架共享的所有漏洞所使用的版本信息时,发现以下非常相似的结构:
方程式漏洞利用程序中使用的版本上下文
可以看出在方程式组织的漏洞利用样本中,红色标记圈出的字段与Jian中相同。且在4个DanderSpritz漏洞中仍有一个字段未使用,但是另一个字段使用率很高,并且拥有NTOS内核映射版本的句柄。这两个结构之间无论是前9个字段的顺序和大小,还是二者之间的未使用字段的大小,都极为的相似,这不得不引起研究人员的注意。
两种配置结构之间的变化是,方程式组织的配置包含更多与Windows 8及更高版本系统相关的字段,这些字段主要用于安全缓解措施。二者之间的最后一个区别是在指定目标内核架构的字段中,由于某种原因,Jian该字段进行了否定。无论如何,该字段从未被漏洞利用。
总而言之,归因于中国组织的漏洞利用程序使用版本上下文并不常见,更不用说该版本上下文与DanderSpritz NtElevation模块所使用的几乎相同,这绝对不是巧合。
相同的内存布局
漏洞利用的核心是一个函数,该函数使用各种虚假的GDI对象填充缓冲区。这两个漏洞利用程序不仅都使用了单个函数来构造所有的虚假对象,且参数缓冲区中对象的内存布局也相同。
共享常量
总结
-
方程式组织的EpMe漏洞利用程序可追溯到2013,它是最初基于该漏洞开发的工具,该漏洞在2017年被微软标记为CVE-2017-0005。
-
2014年左右,中国黑客组织APT31通过某种方式捕获了方程式组织EpMe漏洞利用程序的32位和64位样本。
-
APT31组织复制了EpMe以构建Jian,并将此新版本的漏洞利用程序与其独特的多阶段打包程序一起使用。
-
Lockheed Martin公司的计算机响应小组捕获到Jian样本,并将其上报微软。微软在2017年3月针对该漏洞推出了补丁修复程序,并将其标记为CVE-2017-0005。
更多信息请参见Check Point周一发布的分析报告:
https://research.checkpoint.com/2021/the-story-of-jian/
END
本文始发于微信公众号(SecTr安全团队):中国黑客早在NSA方程式组织工具泄漏之前,就已经对其进行利用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论