行业新闻

蔓灵花(BITTER)APT组织使用InPage软件漏洞针对巴基斯坦的攻击及团伙关联分析

蔓灵花(BITTER)APT组织使用InPage软件漏洞针对巴基斯坦的攻击及团伙关联分析

概述

近期,360威胁情报中心监控到一系列针对巴基斯坦地区的定向攻击活动,而相关的恶意程序主要利用包含了InPage文字处理软件漏洞CVE-2017-12824的诱饵文档(.inp)进行投递,除此之外,攻击活动中还使用了Office CVE-2017-11882漏洞利用文档。InPage是一个专门针对乌尔都语使用者(巴基斯坦国语)设计的文字处理软件,卡巴斯基曾在2016年11月首次曝光了利用该软件漏洞进行定向攻击的案例[6],而利用该文字处理软件漏洞的野外攻击最早可以追溯到2016年6月[14]。

通过对这批InPage漏洞利用文档及相关攻击活动的分析,我们关联到幕后的团伙正是360公司在2016年披露的“蔓灵花”APT组织[5],并且经过进一步分析,攻击活动中的多个样本还与“摩诃草”、BahamutConfucius等APT组织有很强的关联性,这不禁让人对这些南亚来源的APT组织的同源性产生更多的联想。

相关时间线

360威胁情报中心梳理了近两年来利用InPage漏洞进行定向攻击的关键事件时间点:


image.png

InPage漏洞分析(CVE-2017-12824)

用于漏洞分析的InPage漏洞利用文档在VirusTotal上的查杀情况如下:


image.png

InPage是一个专门针对乌尔都语使用者设计的文字处理软件,而与之相关的在野攻击样本涉及的漏洞编号为:CVE-2017-12824。

360威胁情报中心对该漏洞分析后发现,漏洞是由于InPage文字处理软件处理文档流时,未对需要处理的数据类型(Type)进行检查,导致越界读,通过精心构造的InPage文档可以触发执行任意代码。

我们使用InPage2015软件环境对该漏洞进行了详细分析,过程如下。


image.png

InPage2015

漏洞成因:越界读(Out-Of-Bound Read)

CVE-2017-12824漏洞的本质是Out-Of-Bound Read,InPage文字处理程序在处理文档中的InPage100流时未对需要处理的数据类型(Type)进行检查,而需要处理的数据类型(Type)是通过InPage文档中的某个字段指定的。这样攻击者可以通过设置一个超出Type范围的值来使得InPage程序发生越界读错误。

 

漏洞文档(.inp)中触发漏洞的关键数据结构如下,0x7E和0x72代表了需要处理的文档流中的某一类Type,我们将0x7E标记为Type1,0x72标记为Type2:


image.png

而InPage处理一个.inp文件的主要过程如下:

InPage首先会调用Ole!StgCreateDocfile函数解析整个.inp文件,然后调用Ole! COleStreamFile::OpenStream打开InPage文档中的InPage100数据流:


image.png


image.png

而所有InPage100流相关的处理逻辑将在PraseInPage100_432750函数中进行,并利用回调函数InPage100Read_440ED0读取流中的数据:


image.png

最终通过函数sub_453590处理触发漏洞的Type数据,也就是前面提到的0x7E和0x72。下图中的buf则是通过调用InPage100Read_440ED0读取到的包含Type的数据:


image.png

而漏洞函数sub_453590则会根据Type1和Type2(0x7E和0x72两个字节)选择对应的处理流程,首先根据Type1读取函数指针数组,然后根据Type2从函数指针数组中读取函数,最后调用该函数处理数据:


image.png

我们再来看看上图中的dword_656A28的赋值及范围:


image.png


image.png


image.png

可以看到程序在处理漏洞利用文档时的Type1 = ECX(0x1F8)>>2 = 0x7E(126),Type2 =EDI(0x72):


image.png

通过IDA Pro查找dword_656A28[0x7E]的赋值:


image.png

可以看到dword_656E60数组实际大小为30(0x1E):


image.png

而由于漏洞文档中的Type2大小设置为0x72,也就是EDI=0x72,但是InPage并未对传入的Type2大小做判断,这将导致访问dword_656E60[0x72],而由于0x72>30(0x1E),则发生了越界读错误。

漏洞利用

由于攻击者将文档中的Type2设置为了0x72,通过寻址计算后,则会越界访问函数地址0x00455AFA处的代码:


image.png

可以看到dword_656E60[0x72](0x455AFA)正好是一段popretn指令:


image.png

这段pop retn指令序列正好起到了“跳板”地址的作用,由于执行Type相关的处理函数时,传入的参数(指针:0x031E383F)正好指向InPage文档中某个数据流,攻击者可以将这段可控的数据流填充为ShellCode,那么pop retn指令执行完后将直接返回到攻击者设置的ShellCode中执行:


image.png

而InPage程序没有开启DEP和ASLR保护,这导致ShellCode将被直接执行:


image.png

利用InPage漏洞的4类攻击框架分析

360威胁情报中心对近期针对巴基斯坦地区利用InPage漏洞进行定向攻击的相关样本进行了详细分析,发现这一批漏洞样本的生成时间、InPage100文档流大小、初始ShellCode、相关流的标签全部一致,几乎可以确认这一系列的漏洞样本具有相同的来源


image.png

通过对这批InPage漏洞利用文档及相关恶意代码的分析,我们发现漏洞文档携带的恶意代码分别使用了4类不同的攻击框架:4类完全不同的后门程序。相关的分析如下。

wscspl全功能后门程序

360威胁情报中心捕获的一个诱饵文档名为“SOP for Retrieval of Mobile Data Records.inp”(用于移动数据记录检索的SOP)的CVE-2017-12824漏洞利用文档,最终会下载执行一个名为wscspl的全功能后门程序。

 

相关漏洞利用文档信息如下:

 

MD5 863f2bfed6e8e1b8b4516e328c8ba41b
文件名 SOP for Retrieval of Mobile Data Records.inp

 

ShellCode

漏洞触发成功后,ShellCode会通过搜素特殊标识“27862786”来定位主功能ShellCode,之后会从khurram.com.pk/js/drv下载Payload并保存到c:\conf\Smss.exe执行:


image.png

Downloader

MD5 c3f5add704f2c540f3dd345f853e2d84
编译时间 2018.9.24
PDB路径 C:\Users\Asterix\Documents\VisualStudio2008\Projects\28NovDwn\Release\28NovDwn.pdb

 

下载回来的EXE文件主要用于与C2通信并获取其他模块执行,执行后首先会设置注册表键值(键: HKCU\Environment,键值: AppId,数据:c:\intel\drvhost.exe)


image.png

再通过将自身添加到注册表自启动项实现持久化:


image.png

并判断当前进程路径是否为c:\intel\drvhost.exe,若不是则拷贝自身到该路径下并执行:


image.png

当进程路径满足条件后,则从注册表获取机器GUID、计算机用户名等信息加密后拼接成一个字符串:


image.png

之后发送构造好的字符串与C2:nethosttalk.com进行通信,并再次获取命令执行:


image.png

此时C2服务器返回以”AXE:#”开头的指令,本地程序通过判断指令中是否为“#”或者“.”,以此来确定是否有后续的木马插件可以下载执行:


image.png

若”AXE:#”后跟了字符串内容,则下载执行该插件


image.png


image.png

而在360威胁情报中心分析人员调试分析的过程中,我们成功获取到一个名为“wscspl”的可以执行的插件:


image.png

Backdoor - wscspl

MD5 1c2a3aa370660b3ac2bf0f41c342373b
编译时间 2018.9.13
原始文件名 winsvc.exe

 

该主功能木马则与360公司在2016年披露的“蔓灵花”APT组织[5]所使用的木马功能一致。该木马共支持包含上传硬盘列表、查找、读取、创建指定文件、枚举进程列表、结束指定进程在内的17种命令。木马功能分析如下:

 

木马程序运行后设置两个间隔10秒定时器:


image.png

l  定时器一:主要负责请求C&C:wcnchost.ddns.net的IP,若请求成功,则把IP保存到全局变量里,并把标识变量置1:


image.png

l  定时器二:检查标识变量的值,若是1就尝试连接C&C:


image.png

随后创建两个线程:


image.png

l  线程一:检测与C&C的连接状态,若与C&C成功连接,则接收C&C命令执行


image.png

l  线程二:检测全局变量dword_C9618是否有数据,若有数据则发送该变量数据到C&C


image.png

命令执行代码片段如下:


image.png

 

木马程序所有的命令及对应功能如下表所示:

 

3000 获取RAT状态信息
3001 获取计算机硬盘信息
3002 获取指定目录下的文件列表信息
3004 获取RAT日志1
3005 创建指定文件
3006 向创建文件写入数据
3007 打开指定文件
3009 读取指定文件内容
3012 创建远程控制台
3013 执行远程命令
3015 获取RAT日志2
3016 结束远程控制台
3017 关闭指定句柄
3019 获取存在UPD活动链接的进程
3021 获取RAT日志3
3032 结束指定进程
3023 获取系统中进程信息
3025 获取RAT日志4

Visual Basic后门程序

另外一个捕获到的名为AATnational assembly final.inp 的CVE-2017-12824漏洞利用文档则会释放执行Visual Basic编写的后门程序。

 

相关漏洞利用文档信息如下:

 

MD5 ce2a6437a308dfe777dec42eec39d9ea
文件名 AAT national assembly final.inp

 

ShellCode

漏洞触发后的ShellCode首先通过内存全局搜素字符串“LuNdLuNd”定位主ShellCode:


image.png

定位到主ShellCode后获取需要使用的API函数,并通过创建互斥量“QPONMLKJIH”保证只有一个实例运行:


image.png

然后提取文档中包含的一个DLL模块,使用内存加载的方式执行:


image.png

Dropper

MD5 43920ec371fae4726d570fdef1009163
PDP路径 c:\users\mz\documents\visualstudio2013\Projects\Shellcode\Release\Shellcode.pdb

 

内存加载的DLL文件是一个Dropper,包含两个资源文件,”Bin”以及”Bin2”:


image.png

其中Bin文件是VisualBasic编写的后门程序,而Bin2则是漏洞触发后释放打开的正常的inp诱饵文件,相关诱饵文档内容如下:


image.png

Backdoor - smtpldr.exe

MD5 694040b229562b8dca9534c5301f8d73
编译时间 2018.7.4
原始文件名 smtpldr.exe

 

Bin文件是Visual Basic编写的后门程序,主要用于获取命令执行,木马运行后首先从"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"获取当前系统已安装的应用名:


image.png

之后判断安装应用中是否包含卡巴斯基、诺顿、趋势科技等相关杀软应用:


image.png

然后通过WMI执行select *from win32_computersystem命令获取应用程序信息,并通过判断名称中是否包含”virtual”字样来检测虚拟机环境


image.png

若检测处于虚拟机环境下,则弹窗显示not a valid file并退出:


image.png

若检测通过后则在%Start%目录下创建”SMTPLoader.lnk”实现自启动:


image.png

最后则会与C&C:referfile.com进行通信,获取后续指令执行:


image.png

Delphi后门程序

360威胁情报中心通过大数据还关联到一批使用Delphi编写的后门程序,也是通过InPage漏洞利用文档进行传播,相关样本信息如下:

 

MD5 fec0ca2056d679a63ca18cb132223332
原始文件名 adobsuit.exe

 

捕获到的Delphi后门程序与VisualBasic编写的后门一样,也是由相似的Dropper从资源文件释放并且通过在%Start%目录下创建Adobe creative suit.lnk文件,并指向自身实现持久化:


image.png

该后门程序会在%Ducument%文件夹下创建users.txt文件,并随机写入30个字节的字符串:


image.png

木马程序会获取计算机用户名,并将计算机用户名经加密处理后保存到%Ducument%/SyLog.log文件中:


image.png

之后与C2:errorfeedback.com进行通信,以POST的方式发送SyLog.log文件的内容:


image.png

当C2返回Success时,再次以HTTP GET请求的方式与C2通信,若返回一段字符串,则继续从”errorfeedback.com/ MarkQuality455 /TTGKWoFdyQHEwpyYKmfVGtzQLfeqpJ /字符串”下载后续Payload进行执行:


image.png

使用Cobalt Strike的后门程序

另外一个捕获到的InPage漏洞利用文档最终则会执行CobaltStrike生成的后门程序,相关文档信息如下:

 

MD5 74aeaeaca968ff69139b2e2c84dc6fa6
文件类型 InPage漏洞利用文档
发现时间 2018.11.02

ShellCode

漏洞触发成功后,ShellCode首先通过特殊标识“LuNdLuNd”定位到主ShellCode,随后内存加载附带的DLL并执行。

Dropper

MD5 ec834fa821b2ddbe8b564b3870f13b1b
PDB路径 c:\users\mz\documents\visualstudio2013\Projects\Shellcode\Release\Shellcode.pdb

 

内存加载的DLL文件与上述的VisualBasic/Delphi后门一样,也是从资源释放木马文件并执行:


image.png

Downloader - winopen.exe

MD5 09d600e1cc9c6da648d9a367927e6bff
编译时间 2018.10.12

 

释放执行的Downloader名为winopen.exe,其会从jospubs.com/foth1018/simple.jpg获取具有正常JPEG文件头的加密文件,若成功获取,则从JPEG 文件第49字节开始与0x86异或解密:


image.png

解密后的文件是一个DLL文件,然后加载执行该DLL。DLL程序首先会进行运行环境判断,检测加载DLL的进程是否为rundll32.exe:


image.png

若加载进程不为rundll32.dll,则在C:\ProgramData\Adobe64下释放名为aflup64.dll的后门程序:


image.png

之后在启动目录下创建start.lnk文件,LNK文件目标为 rundll32.exe“C:\\ProgramData\\Adobe64\\aflup64.dll”,IntRun,以此实现自启动:


image.png

最后启动rundll32.exe加载aflup64.dll,并调用其导出函数IntRun:


image.png

Backdoor - aflup64.dll

MD5 91e3aa8fa918caa9a8e70466a9515666
编译时间 2018.10.12

 

导出函数IntRun 会再次重复前面的行为,获取JPEG文件,异或解密后执行。因为是通过rundll32启动,所以会进入另一分支,首先创建互斥量“9a5f4cc4b39b13a6aecfe4c37179ea63”:


image.png

然后在%TEMP%目录下创建“nnp74DE.tmp”文件,之后通过执行命令tasklist,ipconfig./all,dir来获取系统进程信息、网络信息、文件列表等,将所获取到的信息保存到“nnp74DE.tmp”中:


image.png

然后获取机器ID、系统版本、系统当前时间,并以“tag FluffyBunny”开头连接所有获取的信息,并用Base64编码后连接C&C并上传:


image.png

信息传输成功后,会返回字符串”OK”的Base64编码:


image.png

如果请求上线不成功,则会循环请求上线。上线成功后会进入第二阶段,发送计算名-用户名的Base64编码数据到jospubs/foth1018/go.php,并获取命令执行:

 


image.png

可以获取的相关命令格式为“数字:参数”形式,共支持5个命令,相关命令列表如下:

 

命令ID 功能
103 下载Plugin插件落地到%TEMP%目录下执行
105 获取文件内存加载
115 获取参数文件内容
117 删除Start.lnk文件
120 下载文件落地到%temp%目录下,并删除Start.lnk

Plugins - jv77CF.tmp

MD5 c9c1ec9ae1f142a8751ef470afa20f15
编译时间 2018.4.3

 

在360威胁情报中心分析人员的调试过程中,成功获取到一个落地执行的木马插件。木马插件会从pp5.zapto.org继续获取加密后的文件:


image.png

成功获取后,经异或解密后执行,解密后的文件是由Cobalt Strike生成的远控后门:


image.png

 

利用CVE-2017-11882漏洞的攻击样本分析

通过360威胁情报中心大数据平台进行拓展,我们发现了一个属于同一系列攻击活动的Office CVE-2017-11882的漏洞利用文档。该文档名为“SOP for Retrieval of Mobile Data Records.doc”,这与释放wscspl木马程序(与蔓灵花同源)的InPage漏洞利用文档同名,只不过该漏洞文档针对微软Office进行攻击。

 

MD5 61a107fee55e13e67a1f6cbc9183d0a4
文件名 SOP for Retrieval of Mobile Data Records.doc

 

包含漏洞的Objdata对象信息如下:


image.png

漏洞成功触发执行后会通过与SOPfor Retrieval of Mobile Data Records.inp(InPage)漏洞利用文件相同的下载地址获取后续Payload执行:


image.png

溯源与关联

360威胁情报中心通过对这批InPage漏洞利用文档及相关攻击活动的分析,关联到使用wscspl后门程序进行定向攻击的幕后团伙正是360公司在2016年披露的“蔓灵花”(BITTER)APT组织[5],并且经过进一步分析,该系列攻击活动中的多个样本还与“摩诃草”、BahamutConfucius等APT组织有很强的关联性。

“蔓灵花”(BITTER)APT组织

360威胁情报中心针对攻击时间较近的几个InPage漏洞文档深入分析后发现,漏洞文档最终释放的木马程序正是360公司在2016年曝光的“蔓灵花”APT组织所使用的后门程序[5],也就是上述分析的wscspl全功能后门程序。


image.png

并且其中的多个C&C地址在360威胁情报中心的内部分析平台中也和“蔓灵花”APT组织强相关,这批C&C地址被多次使用在针对中国发起的攻击活动中。故相关的攻击活动可以确认为“蔓灵花”所为。

与"Confucius"的关联

Delphi后门攻击框架中使用的C&C地址errorfeedback.com在趋势科技探究Confucius和摩诃草的相似度[10]中出现,该域名曾被趋势披露为Confucius使用。

与"摩诃草"的关联

通过上述对Delphi后门攻击框架的深入分析和关联,我们还发现该攻击框架和样本同样出现在了Palo Alto在2017年分析的InPage攻击样本中[13],Palo Alto认为该攻击框架和后门程序可能和“摩诃草”相关。


image.png

与"Bahamut"的关联

360威胁情报中心分析到攻击活动中的一个漏洞文档“AAT national assembly final.inp”最终执行的木马程序(Visual Basic后门程序)使用了域名referfile.com作为C2,该C2为Cisco Talos安全研究团队在2018年7月公开的《一例针对印度iOS用户的定向攻击活动》[9]中被披露,而Talos安全研究团队关联到该域名正好也是被一个Visual Basic后门程序所使用,且相关的网络资产疑似为APT组织"Bahamut"所有。


image.png

总结及猜想

360威胁情报中心通过对相同来源(漏洞利用文档在生成时间、ShellCodeInPage100流大小、流的固定特征)的一系列针对巴基斯坦的攻击样本分析后发现,同一来源的攻击样本分别使用了至少4套不同的恶意代码框架,并分别与“蔓灵花”(BITTER)、“摩诃草”、“Confucius”、“Bahamut”APT组织产生了或多或少的关联。或许这些APT组织应该归属于同一组织亦或者这些APT组织拥有相同的数字武器来源(APT组织幕后的支持者向这些APT团伙派发了相同的漏洞利用生成工具)

 

以下是360威胁情报中心针对本文中相关的APT组织的TTP进行的简单对比,以供参考:

 

  蔓灵花(BITTER) 摩诃草(PatchWork) Confucius Bahamut
攻击目标 中国,巴基斯坦 中国,巴基斯坦为主 南亚 南亚(主要巴基斯坦),中东
攻击平台 PC/Android PC/Android PC/Android PC/Android/iOS
恶意代码实现 C Delphi/C# Delphi Delphi/VB
攻击入口 鱼叉攻击 社交网络,鱼叉攻击 社交网络 社交网络,鱼叉攻击

IOC

InPage漏洞利用文档
863f2bfed6e8e1b8b4516e328c8ba41b
ce2a6437a308dfe777dec42eec39d9ea
74aeaeaca968ff69139b2e2c84dc6fa6
Office漏洞利用文档
61a107fee55e13e67a1f6cbc9183d0a4
木马程序
c3f5add704f2c540f3dd345f853e2d84
f9aeac76f92f8b2ddc253b3f53248c1d
8dda6f85f06b5952beaabbfea9e28cdd 
25689fc7581840e851c3140aa8c3ac8b
1c2a3aa370660b3ac2bf0f41c342373b
43920ec371fae4726d570fdef1009163
694040b229562b8dca9534c5301f8d73
fec0ca2056d679a63ca18cb132223332
ec834fa821b2ddbe8b564b3870f13b1b
09d600e1cc9c6da648d9a367927e6bff
91e3aa8fa918caa9a8e70466a9515666
4f9ef6f18e4c641621f4581a5989284c   
afed882f6af66810d7637ebcd8287ddc
C&C
khurram.com.pk
nethosttalk.com
xiovo416.net
nethosttalk.com
newmysticvision.com
wcnchost.ddns.net
referfile.com
errorfeedback.com
Jospubs.com
traxbin.com
referfile.com

参考

[1].    https://ti.360.net/

[2].    http://www.inpage.com/

[3].    https://en.wikipedia.org/wiki/InPage

[4].    https://ti.360.net/blog/articles/analysis-of-apt-campaign-bitter/

[5].    https://www.anquanke.com/post/id/84910

[6].    https://www.kaspersky.com/blog/inpage-exploit/6292/

[7].    https://cloudblogs.microsoft.com/microsoftsecure/2018/11/08/attack-uses-malicious-inpage-document-and-outdated-vlc-media-player-to-give-attackers-backdoor-access-to-targets/

[8].    https://blog.talosintelligence.com/2018/07/Mobile-Malware-Campaign-uses-Malicious-MDM.html

[9].    https://blog.talosintelligence.com/2018/07/Mobile-Malware-Campaign-uses-Malicious-MDM-Part2.html

[10]. https://blog.trendmicro.com/trendlabs-security-intelligence/confucius-update-new-tools-and-techniques-further-connections-with-patchwork/

[11]. https://documents.trendmicro.com/assets/appendix-confucius-update-new-tools-techniques-connections-patchwork-updated.pdf

[12]. https://researchcenter.paloaltonetworks.com/2016/09/unit42-confucius-says-malware-families-get-further-by-abusing-legitimate-websites/

[13]. https://researchcenter.paloaltonetworks.com/2017/11/unit42-recent-inpage-exploits-lead-multiple-malware-families/

[14]. https://www.virustotal.com/gui/file/9bf55fcf0a25a2f7f6d03e7ba6123d5a31c3e6c1196efae453a74d6fff9d43bb/submissions

关闭