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

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文件中提到的内容,我想聪明的读者心里一定已经有了答案了。

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

关于SQLRecoverableException问题的排查和分析(r4笔记第13天)

上周在升级时候,客户反馈某个job报了下面的错误,想让我们查看一下是不是数据库这边有什么问题。 报错的内容如下。 Caused by: java.sql.SQ...

30640
来自专栏技术小黑屋

Gmail托管邮箱发邮件认证失败

Gmail是一款很优秀的邮件工具,我一直使用Gmail来托管公司的邮箱,利用最棒的过滤器进行过滤垃圾邮件。前段时间公司邮箱密码更换,使用了新的密码后导致了只能收...

23410
来自专栏FreeBuf

技术剖析:海莲花OceanLotus Encryptor样本分析

前言 上周,360发布了海莲花的报告,数据收集,分析,解释,加工方面很能让人折服,但是看了其对所谓OceanLotus Encryptor样本的分析,和我自己观...

23770
来自专栏Jerry的SAP技术分享

SAP Cloud for Customer Extensibility的设计与实现

今天的文章来自Jerry的同事,SAP成都研究院C4C开发团队的开发人员徐欢(Xu Boris)。徐欢就坐我左手边的位置,因此我工作中但凡遇到C4C的技术问题,...

12420
来自专栏CaiRui

RAID技术

磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。 磁盘阵列是由很多...

434150
来自专栏SDNLAB

NameSpace:OpenStack的网络实现解析

编者按:众所周知在Linux系统中PID、IPC、Network等都是全局性的资源,任何的修改和删减都会对整个系统造成影响,这也是为什么KVM之类的虚拟化技术需...

424100
来自专栏深度学习那些事儿

如何从亚马逊下载aws-SpaceNet卫星遥感图片数据集

亚马逊SpaceNet数据集是作用于机器学习人工智能方面比赛或者研究用的商用数据集。我们在利用深度学习进行卫星图像分割时,比如利用FCN、Deeplab算法进行...

1.1K50
来自专栏后端技术探索

nginx防止DDOS攻击配置(二)

我们用的高防服务器只防流量攻击不防CC,现在的攻击多数都是混合型的,而且CC攻击很多,防CC只能自己搞了,按照第一篇的配置,在实际的使用中效果并不理想。限制每秒...

71320
来自专栏FreeBuf

快速读懂无线安全

* 本文原创作者:icecolor不疯不魔不成活,本文属FreeBuf原创奖励计划,未经许可禁止转载 About channel: ? 1.每个协议都有不同的工...

397100
来自专栏WeTest质量开放平台团队的专栏

QUIC协议的分析,性能测试以及在QQ会员实践

原文链接:http://wetest.qq.com/lab/view/384.html

61830

扫码关注云+社区

领取腾讯云代金券