APT 海莲花
【微步报告】"海莲花"团伙本月利用Office漏洞发起高频攻击
微步情报局 2018-05-16 10:26:01 5297人浏览

TAG:高级可持续攻击、APT32、海莲花、漏洞、Denis、CVE-2017-11882、CVE-2017-8570

TLP:白

日期:2018-04-27

概要

  “海莲花”,又名APT32和OceanLotus,是越南背景的黑客组织。该组织至少自2012年开始活跃,长期针对中国能源相关企业、海事机构、海域建设部门、科研院所和航运企业等进行网络攻击。除中国外,“海莲花”的目标还包含全球的政府、军事机构和大型企业,以及本国的媒体、人权和公民社会等相关的组织和个人。

  微步在线长期监控着“海莲花”的活动动向,曾发布多份关于该团伙的分析报告《“海莲花”团伙的最新动向分析》、《“海莲花”团伙专用后门Denis最新变种分析》和《微步在线发现“海莲花”团伙最新macOS后门》。微步在线监测发现,2018年4月份以来,该团伙攻击活动异常频繁,并开始利用高危Office漏洞来投递其常用特种木马Denis,具体内容包含:

- 据微步在线威胁情报云监测发现,本月APT32 的攻击活动异常频繁,中国能源和金融相关企业,以及越南周边的柬埔寨等国的相关目标遭到攻击,其中国内是重灾区。

- 2018年4月以来,APT32开始大量利用CVE-2017-11882和CVE-2017-8570等Office漏洞投递其特种木马Denis,攻击过程中利用了“白利用”技术。

- APT32在2018年4月5日前后集中注册了几十个域名,并开始使用后缀为info、club和xyz的顶级域名,且其中部分已被用于真实的攻击。

- 鉴于此次攻击行动相比之前,目标更广、频次更高,建议国内相关行业(金融、能源和政府)及重点单位及时排查。

- 微步在线通过对相关样本、IP和域名的溯源分析,共提取59条相关IOC,可用于威胁情报检测。微步在线的威胁检测响应平台(TDP)、威胁情报订阅、API等均已支持此次攻击事件和团伙的检测。

详情

  微步在线长期跟踪全球100余黑客组织。近期,微步在线监测到APT32的活动加剧,持续针对中国能源和金融等相关企业,以及越南周边的柬埔寨等国的相关目标发起攻击。微步在线的狩猎系统捕获了一批APT32的最新攻击样本,分析发现这些样本利用了CVE-2017-11882和CVE-2017-8570漏洞投递其专有的特种木马Denis,相关样本如下:

SHA256 漏洞 C2 文件名
e5c766ad580b5bc5f74acc8d2f5dd028c11495d2ce503de7c7a294f94583849d CVE-2017-11882 straliaenollma.xyz andreagahuvrauvin.com byronorenstein.com Document_GPI Invitation-UNSOOC China.doc
0d1577802d4560b9ba184a2d13570ba28ed0318eee520f2f7a6c5ef238671dd9 CVE-2017-11882 stopherau.com orinneamoure.com ochefort.com  
3a3bc31afcf2ec82ff9ac0016ce47e10833227665ab056117520bdf097525c63 CVE-2017-8570 tsworthoa.com earlase.com aximilian.com  
abfcba26e50a88c2ce507212b15d2ee24c28fc8b28edeaae27f70faaf6fae700 CVE-2017-8570 orinneamoure.com ochefort.com icmannaws.com Monthly Report 03.2018.doc

Denis是APT32最常用的特种木马,是一个全功能的后门,包含多种对抗技术,其特征是使用DNS隧道技术与其C2通信。Denis此前主要通过双扩展,虚假Word、Excel、WPS和PDF图标,虚假更新(Adobe、FireFox、Google),以及字体相关工具诱导受害者点击可执行文件进行传播。之前的一些诱饵文件的文件名和图标如下:

image.png

 

样本分析

以最新捕获的诱饵文档“Document_GPIInvitation-UNSOOC China.doc”为例进行分析,该文档包含CVE-2017-11882漏洞利用,触发漏洞利用之后会交付APT32的特种木马Denis。

1、 该样本的基本信息如下:

文件类型 rtf
文件大小        3139367 字节
文件名 Document_GPI Invitation-UNSOOC China.doc
SHA256 e5c766ad580b5bc5f74acc8d2f5dd028c11495d2ce503de7c7a294f94583849d
SHA1 e2d949cf06842b5f7ae6b2dffaa49771a93a00d9
MD5 02ae075da4fb2a6d38ce06f8f40e397e

2、 该样本在微步云沙箱的分析结果如下图:

image.png

image.png

https://s.threatbook.cn/report/file/e5c766ad580b5bc5f74acc8d2f5dd028c11495d2ce503de7c7a294f94583849d/?env=win7_sp1_enx86_office2010

3、  该文档包含CVE-2017-11882漏洞利用,打开后会显示一模糊图片来迷惑受害者,如下图:

image.png

4、  该诱饵文档触发CVE-2017-11882漏洞后的整体执行流程如下图,该漏洞的相关分析见附录的“漏洞分析”。

image.png

打开文档触发漏洞之后会执行shellcode1,shellcode1会继续执行shellcode2,shellcode2最终会在C:\ Program Files\目录下创建一个隐藏文件夹Microsoft-Windows-DiskDiagnosticResolver_2021325962,向该目录释放三个文件:MicrosoftWindowsDiskDiagnosticResolver.exe、rastls.dll和OUTLFLTR.DAT,然后启动MicrosoftWindowsDiskDiagnosticResolver.exe。MicrosoftWindowsDiskDiagnosticResolver.exe是一个包含Symantec签名的白文件,启动后会加载同目录下的恶意rastls.dll,这是典型的“白利用”技术。rastls.dll最终会交付APT32的特种木马Denis,相关“白利用”技术和Denis木马的详细分析见微步在线发布的报告《“海莲花”团伙专用后门Denis最新变种分析》。

关联分析

微步在线监测发现,近期APT32 的攻击活动加剧,中国能源和金融相关企业,以及越南周边的柬埔寨等国的相关目标遭到定向攻击,其中国内是重灾区。

使用x.threatbook.cn对straliaenollma.xyz、andreagahuvrauvin.com和byronorenstein.com进行关联发现,发现三者的注册信息都使用了隐私保护,于近期注册且注册时间相同。在一个木马中使用多个注册时间相近(多为同一天,且域名服务商多相同)的域名作为C2一直是APT32的习惯。

C2域名 域名有效期 注册邮箱
straliaenollma.xyz 2018/04/06-2019/04/06 隐私保护
andreagahuvrauvin.com 2018/04/06-2019/04/06 隐私保护
byronorenstein.com 2018/04/06-2019/04/06 隐私保护

         此外,使用x.threatbook.cn分析另一CVE2017-11882漏洞利用样本的C2 stopherau.com,发现其早已被微步在线识别:

image.png

根据微步在线威胁情报云数据,APT32近期(2018/04/04-2018/04/06)注册了几十个域名用作C2,且开始大量注册TLD为club、xyz和info等的域名,详细IOC见附录。其中部分在注册之后不到两周就被用于攻击,这也侧面说明APT32近期攻击活动极为活跃。

漏洞分析

CVE-2017-11882是存在于Office公式编辑器中的一个内存破坏漏洞,漏洞相关分析如下:

1)       公式编辑器是一个独立的可执行程序,由Office启动。这里通过在注册表中设置镜像劫持,然后将调试器设置为ollydbg来分析该程序,具体的路径如下:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options\EQNEDT32.exe

image.png

2)       首先启动公式编辑器,然后使用ollydbg附加其上,并在地址0x00411655上下一个软件断点0x00411655。这个地址是导致漏洞触发的位置(参考相关分析报告),然后关闭公式编辑器和ollydbg。如下图:

image.png

3)      打开漏洞利用样本,当漏洞成功触发后会启动公式编辑器,然后导致ollydb附加其上。如下图:

image.png

然后F9让公式编辑器运行起来,接着会触发新的断点,如下图:

image.png

栈溢出过程是在第二次,所以再次F9,再次断下来后看一下EDI,ESI的值,如下图:

image.png

此时EDI指向的地址位于栈上,如下图:

image.png

在没有拷贝数据前,12F250处的值是4115D8,拷贝完成后如下:

image.png

对比后会发现0012F250处的返回地址被覆盖为00402114,该地址位于公式编辑器中相关代码如下图,这里只是一个返回指令:

                image.png

4)      在00402114处下软件断点。00402114处执行完后,会将0012f3D0作为返回地址弹出来,该处的代码如下:

          image.png

a)      该段代码执行完后会会先获取kernel32的基地址,然后获取所需要的API,所要获取的API如下表:

 kernel32.GetModuleHandleW
 kernel32.LoadLibraryW
 kernel32.GetProcAddress
 kernel32.CreateFileW
 kernel32.SetFilePointer
 kernel32.ReadFile
 kernel32.WriteFile
 kernel32.CloseHandle
 kernel32.ExpandEnvironmentStringsW
 kernel32.VirtualAlloc kernel32.VirtualFree
 kernel32.CreateThread
 kernel32.WaitForSingleObject kernel32.CopyFileW
 kernel32.OpenProcess
 kernel32.GetCurrentProcess
 kernel32.GetCurrentProcessId
 kernel32.CreateToolhelp32Snapshot
 kernel32.Process32FirstW
 kernel32.Process32NextW
 kernel32.GetFileSize
 Kernel32.CreateFileMappingW
 kernel32.MapViewOfFile
 kernel32.GetLogicalDriveStringsW
 kernel32.QueryDosDeviceW
 kernel32.GetTempPathW    
 kernel32.OutputDebugStringW
 kernel32.Sleep

 

b)      然后调用kernel32.GetProcAddress获取ntdll中的相关函数:

ntdll.ZwQuerySystemInformation

ntdll.ZwDuplicateObject

ntdll.ZwQueryObject

c)      接着获取ole32.dll中的ole32.CoInitialize,ole32.CoCreateInstance。

d)      接着获取oleaut32.VariantInit,oleaut32.GetActiveObject。

e)      接着获取psapi.GetMappedFileNameW。

5)      查找winword进程,然后遍历系统所有打开的句柄,找到winword打开的样本句柄,然后将这个文件映射到公式编辑器的进程空间,从文件的尾部读取第二段shellcode。具体步骤如下:

a)      调用CreateToolhelp32Snapshot,Process32FirstW,Process32NextW,CloseHandle找到winword进程ID。

b)      调用ZwQuerySystemInformation遍历系统的所有打开的句柄。此时SystemInformationClass= SystemExtendedHandleInformation,通过ZwQueryObject查询对象的类型,找到属于winword打开的文件。然后调用CreateFileMappingW和MapViewOfFile函数将打开的文件映射到公式编辑器的内存空间。然后判断文件尾部是否是以“yyyy”结束,如是则表示是样本本身。接着通过VirtualAlloc重新分配内存将样本尾部的数据拷贝进去,然后跳到该片内存中执行。

6)      文件尾部的shellcode使用了混淆,加密和PE重构等技术。垃圾指令的部分代码如下:

image.png

  该段shellcode执行后会在内存中构建一个DLL文件,然后修复导入表和重定位表。接着调用这个DLL的DllMain函数完成初始化。然后调用这个DLL的导出函数DllEntry,在这个函数里后从DLL的资源节读取数据然后解压,并向c:\ Program Files\目录下创建一个隐藏文件夹Microsoft-Windows-DiskDiagnosticResolver_2021325962,然后向这个目录下释放三个文件:MicrosoftWindowsDiskDiagnosticResolver.exe、rastls.dll和OUTLFLTR.DAT,之后启动 MicrosoftWindowsDiskDiagnosticResolver.exe。

匿名用户 2018-06-05 14:39:20 回复
不错,分析很好
匿名用户 2018-05-21 15:57:13 回复
学习个
匿名用户 2018-05-21 15:55:21 回复
姿势不错。。6666
匿名用户 2018-05-21 15:42:05 回复
666
碧云涛 2018-05-19 00:33:39 回复
很强
T3a 2018-05-16 12:59:18 回复
微步的云沙箱用着感觉还不错,但好像百度搜索没啥宣传啊。搜微步云沙箱出来的还是微步社区的链接
星与月 2018-05-16 12:55:56 回复
官方出的情报贴啊,牛逼!!!
奖励计划banner
今日推荐