一个利用CVE-2017-11292的APT样本技术分析(一)

时间:2022-04-28
本文章向大家介绍一个利用CVE-2017-11292的APT样本技术分析(一),主要内容包括1. 引言、2. 样本分析、3. 样本溯源分析、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

1. 引言

最近沸沸扬扬的黑色绿洲(BlackOasis) APT 利用了Adobe Flash 的漏洞CVE-2017-11292。最近,我们发现除了黑色绿洲 APT 外,还有另外一个APT 攻击也利用了CVE-2017-11292这个漏洞。

2. 样本分析

这个APT 样本是一个大小为14K左右的.doc 文件,文件名为”World War3.doc”,这文件名就吓死本宝宝了。双击运行的话,会发现Word 一闪而后退出,同时产生一个新的Word进程。

显示的内容如下。大意是关于朝鲜核武器的评论。

浓浓的APT 攻击味道啊。

解压这个doc文件,发现有个activeX1.bin文件很可疑。

喂到十六进制编辑工具里面瞅瞅,

果然,是个doc文件!

把这个doc文件扫描一下,

发现里面嵌套了2个 3.8K大小的SWF文件, 事实上这两个SWF文件一模一样。估计这里攻击者犯了一个小错误,同一个文件嵌入了2次。

把SWF文件喂到反编译工具里,

代码非常简单,将binaryData里的数据解压缩,然后通过Loader.loadBytes() 加载。解压后数据如下图所示。

哦,卖高得,头上3个字节是C1 3B 69 这是个神马文件格式。Loader.loadBytes()怎么能加载呢?

仔细看一下init代码,发现下面这3行,

原来悟空你又调皮了,偷偷把SWF的文件头给替换了。把’CWS’文件头补回去。再次喂给反编译器,就可以看到第二层的真面目了。关键代码如下图

这段代码非常清晰:

首先去服务器“/p99uvs0.php”下载一个配置文件:配置文件内容如下:

k1=77wn6p1cl1k4&k2=3q1htxrk0ocm6uax&k3=131&k4=177

参数定义如下表:

k1

漏洞利用的 URL

k2

有效载荷(Payload)的URL

k3

漏洞利用模块解密的密钥

k4

有效载荷(Payload)的解密的密钥

获取到配置文件后,将从配置k2中指定的 URL去下载漏洞利用程序。这个漏洞利用程序是经过压缩和加密的。

解密算法较为简单,如下图所示

写个python脚本,可以解密出 漏洞利用程序。

解密后的漏洞利用程序是个混淆过的SWF程序。小样的,你以为你加个花我就认不出你来了?

反混淆后再反编译,发现如下代码:

这段代码,正是CVE-2017-11292的漏洞利用代码。在windbg中下断点,我们可以看到控制转移时发生的一幕

在地址5e1c699f 处,控制通过call edx指令转移到了shellcode,地址0c0b0008处。

仔细分析该处指令不难发现,这种攻击方法是Hacking Team 使用的破坏

MethodInfo._implGPR() 虚函数指针的方法。这个函数是进入JIT 生成代码的函数,这种攻击的方法好处是可以绕过CFG的保护(这个函数并没有被CFG保护)。

在 0c0b0008 处,即为shellcode的开始。Shellcode代码并不复杂:

1) 首先在内存中找到传入的解密后的的有效载荷。它是个PE文件,在shellcode的后面,可以通过搜索PE文件头的方式定位到。 2) 然后通过ZwAllocateVirtualMemory()分配一块内存 3) 在2)分配的内存中加载PE文件,并将控制转移到PE文件入口点。

在这个攻击中,有效载荷为一个137K左右的后门,具体功能将在后续篇章中继续分析。

3. 样本溯源分析

此APT 攻击应该发生在今年10月份左右。既然是APT 攻击,溯源分析必不可少。那么攻击者来自哪个组织呢。

无论从攻击手法,还是攻击中使用到的一些代码的细节,比如k1,k2,k3,k4的配置,还有解密方式,甚至是有效载荷,种种迹象都表明,这个攻击应该出自APT28 之手。此APT攻击和去年的一个APT28攻击手法极为相似。

在我们的分析中还发现,CVE-2017-11292这个漏洞利用程序,包含有很多冗余代码。为什么会出现这种情形呢?我们不妨大胆的假设,(这个漏洞利用在攻击时很有可能是 0 day), 这个攻击代码很有可能是从 0 day 军火商那里购买后集成进来的。

那么至于此次攻击究竟针对哪个国家呢? 想想APT28来自于哪个国家,而样本中doc文件中提到的内容,我想聪明的读者心里一定已经有了答案了。