概述
近期,360威胁情报中心监控到一系列针对巴基斯坦地区的定向攻击活动,而相关的恶意程序主要利用包含了InPage文字处理软件漏洞CVE-2017-12824的诱饵文档(.inp)进行投递,除此之外,攻击活动中还使用了Office CVE-2017-11882漏洞利用文档。InPage是一个专门针对乌尔都语使用者(巴基斯坦国语)设计的文字处理软件,卡巴斯基曾在2016年11月首次曝光了利用该软件漏洞进行定向攻击的案例[6],而利用该文字处理软件漏洞的野外攻击最早可以追溯到2016年6月[14]。
通过对这批InPage漏洞利用文档及相关攻击活动的分析,我们关联到幕后的团伙正是360公司在2016年披露的“蔓灵花”APT组织[5],并且经过进一步分析,攻击活动中的多个样本还与“摩诃草”、Bahamut和Confucius等APT组织有很强的关联性,这不禁让人对这些南亚来源的APT组织的同源性产生更多的联想。
相关时间线
360威胁情报中心梳理了近两年来利用InPage漏洞进行定向攻击的关键事件时间点:
InPage漏洞分析(CVE-2017-12824)
用于漏洞分析的InPage漏洞利用文档在VirusTotal上的查杀情况如下:
InPage是一个专门针对乌尔都语使用者设计的文字处理软件,而与之相关的在野攻击样本涉及的漏洞编号为:CVE-2017-12824。
360威胁情报中心对该漏洞分析后发现,漏洞是由于InPage文字处理软件处理文档流时,未对需要处理的数据类型(Type)进行检查,导致越界读,通过精心构造的InPage文档可以触发执行任意代码。
我们使用InPage 2015软件环境对该漏洞进行了详细分析,过程如下。
InPage 2015
漏洞成因:越界读(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:
而InPage处理一个.inp文件的主要过程如下:
InPage首先会调用Ole!StgCreateDocfile函数解析整个.inp文件,然后调用Ole! COleStreamFile::OpenStream打开InPage文档中的InPage100数据流:
而所有InPage100流相关的处理逻辑将在PraseInPage100_432750函数中进行,并利用回调函数InPage100Read_440ED0读取流中的数据:
最终通过函数sub_453590处理触发漏洞的Type数据,也就是前面提到的0x7E和0x72。下图中的buf则是通过调用InPage100Read_440ED0读取到的包含Type的数据:
而漏洞函数sub_453590则会根据Type1和Type2(0x7E和0x72两个字节)选择对应的处理流程,首先根据Type1读取函数指针数组,然后根据Type2从函数指针数组中读取函数,最后调用该函数处理数据:
我们再来看看上图中的dword_656A28的赋值及范围:
可以看到程序在处理漏洞利用文档时的Type1 = ECX(0x1F8)>>2 = 0x7E(126),Type2 = EDI(0x72):
通过IDA Pro查找dword_656A28[0x7E]的赋值:
可以看到dword_656E60数组实际大小为30(0x1E):
而由于漏洞文档中的Type2大小设置为0x72,也就是EDI=0x72,但是InPage并未对传入的Type2大小做判断,这将导致访问dword_656E60[0x72],而由于0x72>30(0x1E),则发生了越界读错误。
漏洞利用
由于攻击者将文档中的Type2设置为了0x72,通过寻址计算后,则会越界访问函数地址0x00455AFA处的代码:
可以看到dword_656E60[0x72](0x455AFA)正好是一段pop retn指令:
这段pop retn指令序列正好起到了“跳板”地址的作用,由于执行Type相关的处理函数时,传入的参数(指针:0x031E383F)正好指向InPage文档中某个数据流,攻击者可以将这段可控的数据流填充为ShellCode,那么pop retn指令执行完后将直接返回到攻击者设置的ShellCode中执行:
而InPage程序没有开启DEP和ASLR保护,这导致ShellCode将被直接执行:
利用InPage漏洞的4类攻击框架分析
360威胁情报中心对近期针对巴基斯坦地区利用InPage漏洞进行定向攻击的相关样本进行了详细分析,发现这一批漏洞样本的生成时间、InPage100文档流大小、初始ShellCode、相关流的标签全部一致,几乎可以确认这一系列的漏洞样本具有相同的来源。
通过对这批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执行:
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)
再通过将自身添加到注册表自启动项实现持久化:
并判断当前进程路径是否为c:\intel\drvhost.exe,若不是则拷贝自身到该路径下并执行:
当进程路径满足条件后,则从注册表获取机器GUID、计算机用户名等信息加密后拼接成一个字符串:
之后发送构造好的字符串与C2:nethosttalk.com进行通信,并再次获取命令执行:
此时C2服务器返回以”AXE:#”开头的指令,本地程序通过判断指令中是否为“#”或者“.”, 以此来确定是否有后续的木马插件可以下载执行:
若”AXE:#”后跟了字符串内容,则下载执行该插件
而在360威胁情报中心分析人员调试分析的过程中,我们成功获取到一个名为“wscspl”的可以执行的插件:
Backdoor – wscspl
MD5 | 1c2a3aa370660b3ac2bf0f41c342373b |
编译时间 | 2018.9.13 |
原始文件名 | winsvc.exe |
该主功能木马则与360公司在2016年披露的“蔓灵花”APT组织[5]所使用的木马功能一致。该木马共支持包含上传硬盘列表、查找、读取、创建指定文件、枚举进程列表、结束指定进程在内的17种命令。木马功能分析如下:
木马程序运行后设置两个间隔10秒定时器:
- 定时器一:主要负责请求C&C:wcnchost.ddns.net的IP,若请求成功,则把IP保存到全局变量里,并把标识变量置1:
- 定时器二:检查标识变量的值,若是1就尝试连接C&C:
随后创建两个线程:
- 线程一:检测与C&C的连接状态,若与C&C成功连接,则接收C&C命令执行
- 线程二:检测全局变量dword_C9618是否有数据,若有数据则发送该变量数据到C&C
命令执行代码片段如下:
木马程序所有的命令及对应功能如下表所示:
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后门程序
另外一个捕获到的名为AAT national assembly final.inp 的CVE-2017-12824漏洞利用文档则会释放执行Visual Basic编写的后门程序。
相关漏洞利用文档信息如下:
MD5 | ce2a6437a308dfe777dec42eec39d9ea |
文件名 | AAT national assembly final.inp |
ShellCode
漏洞触发后的ShellCode首先通过内存全局搜素字符串“LuNdLuNd”定位主ShellCode:
定位到主ShellCode后获取需要使用的API函数,并通过创建互斥量“QPONMLKJIH”保证只有一个实例运行:
然后提取文档中包含的一个DLL模块,使用内存加载的方式执行:
Dropper
MD5 | 43920ec371fae4726d570fdef1009163 |
PDP路径 | c:\users\mz\documents\visualstudio2013\Projects\Shellcode\Release\Shellcode.pdb |
内存加载的DLL文件是一个Dropper,包含两个资源文件,”Bin”以及”Bin2”:
其中Bin文件是Visual Basic编写的后门程序,而Bin2则是漏洞触发后释放打开的正常的inp诱饵文件,相关诱饵文档内容如下:
Backdoor – smtpldr.exe
MD5 | 694040b229562b8dca9534c5301f8d73 |
编译时间 | 2018.7.4 |
原始文件名 | smtpldr.exe |
Bin文件是Visual Basic编写的后门程序,主要用于获取命令执行,木马运行后首先从”SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\”获取当前系统已安装的应用名:
之后判断安装应用中是否包含卡巴斯基、诺顿、趋势科技等相关杀软应用:
然后通过WMI执行select * from win32_computersystem命令获取应用程序信息,并通过判断名称中是否包含”virtual”字样来检测虚拟机环境:
若检测处于虚拟机环境下,则弹窗显示not a valid file并退出:
若检测通过后则在%Start%目录下创建”SMTP Loader.lnk”实现自启动:
最后则会与C&C: referfile.com进行通信,获取后续指令执行:
Delphi后门程序
360威胁情报中心通过大数据还关联到一批使用Delphi编写的后门程序,也是通过InPage漏洞利用文档进行传播,相关样本信息如下:
MD5 | fec0ca2056d679a63ca18cb132223332 |
原始文件名 | adobsuit.exe |
捕获到的Delphi后门程序与Visual Basic编写的后门一样,也是由相似的Dropper从资源文件释放并且通过在%Start%目录下创建Adobe creative suit.lnk文件,并指向自身实现持久化:
该后门程序会在%Ducument%文件夹下创建users.txt文件,并随机写入30个字节的字符串:
木马程序会获取计算机用户名,并将计算机用户名经加密处理后保存到%Ducument%/SyLog.log文件中:
之后与C2:errorfeedback.com进行通信,以POST的方式发送SyLog.log文件的内容:
当C2返回Success时,再次以HTTP GET请求的方式与C2通信,若返回一段字符串,则继续从”errorfeedback.com/ MarkQuality455 /TTGKWoFdyQHEwpyYKmfVGtzQLfeqpJ /字符串”下载后续Payload进行执行:
使用Cobalt Strike的后门程序
另外一个捕获到的InPage漏洞利用文档最终则会执行Cobalt Strike生成的后门程序,相关文档信息如下:
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文件与上述的Visual Basic/Delphi后门一样,也是从资源释放木马文件并执行:
Downloader – winopen.exe
MD5 | 09d600e1cc9c6da648d9a367927e6bff |
编译时间 | 2018.10.12 |
释放执行的Downloader名为winopen.exe,其会从jospubs.com/foth1018/simple.jpg获取具有正常JPEG文件头的加密文件,若成功获取,则从JPEG 文件第49字节开始与0x86异或解密:
解密后的文件是一个DLL文件,然后加载执行该DLL。DLL程序首先会进行运行环境判断,检测加载DLL的进程是否为rundll32.exe:
若加载进程不为rundll32.dll,则在C:\ProgramData\Adobe64下释放名为aflup64.dll的后门程序:
之后在启动目录下创建start.lnk文件,LNK文件目标为 rundll32.exe “C:\\ProgramData\\Adobe64\\aflup64.dll”,IntRun,以此实现自启动:
最后启动rundll32.exe加载aflup64.dll,并调用其导出函数IntRun:
Backdoor – aflup64.dll
MD5 | 91e3aa8fa918caa9a8e70466a9515666 |
编译时间 | 2018.10.12 |
导出函数IntRun 会再次重复前面的行为,获取JPEG文件,异或解密后执行。因为是通过rundll32启动,所以会进入另一分支,首先创建互斥量“9a5f4cc4b39b13a6aecfe4c37179ea63”:
然后在%TEMP%目录下创建“nnp74DE.tmp”文件,之后通过执行命令tasklist,ipconfig ./all,dir来获取系统进程信息、网络信息、文件列表等,将所获取到的信息保存到“nnp74DE.tmp”中:
然后获取机器ID、系统版本、系统当前时间,并以“tag FluffyBunny”开头连接所有获取的信息,并用Base64编码后连接C&C并上传:
信息传输成功后,会返回字符串”OK”的Base64编码:
如果请求上线不成功,则会循环请求上线。上线成功后会进入第二阶段,发送计算名-用户名的Base64编码数据到jospubs/foth1018/go.php,并获取命令执行:
可以获取的相关命令格式为“数字:参数”形式,共支持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继续获取加密后的文件:
成功获取后,经异或解密后执行,解密后的文件是由Cobalt Strike生成的远控后门:
利用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对象信息如下:
漏洞成功触发执行后会通过与SOP for Retrieval of Mobile Data Records.inp(InPage)漏洞利用文件相同的下载地址获取后续Payload执行:
溯源与关联
360威胁情报中心通过对这批InPage漏洞利用文档及相关攻击活动的分析,关联到使用wscspl后门程序进行定向攻击的幕后团伙正是360公司在2016年披露的“蔓灵花”(BITTER)APT组织[5],并且经过进一步分析,该系列攻击活动中的多个样本还与“摩诃草”、Bahamut和Confucius等APT组织有很强的关联性。
“蔓灵花”(BITTER)APT组织
360威胁情报中心针对攻击时间较近的几个InPage漏洞文档深入分析后发现,漏洞文档最终释放的木马程序正是360公司在2016年曝光的“蔓灵花”APT组织所使用的后门程序[5],也就是上述分析的wscspl全功能后门程序。
并且其中的多个C&C地址在360威胁情报中心的内部分析平台中也和“蔓灵花”APT组织强相关,这批C&C地址被多次使用在针对中国发起的攻击活动中。故相关的攻击活动可以确认为“蔓灵花”所为。
与”Confucius”的关联
Delphi后门攻击框架中使用的C&C地址errorfeedback.com在趋势科技探究Confucius和摩诃草的相似度[10]中出现,该域名曾被趋势披露为Confucius使用。
与”摩诃草”的关联
通过上述对Delphi后门攻击框架的深入分析和关联,我们还发现该攻击框架和样本同样出现在了Palo Alto在2017年分析的InPage攻击样本中[13],Palo Alto认为该攻击框架和后门程序可能和“摩诃草”相关。
与”Bahamut”的关联
360威胁情报中心分析到攻击活动中的一个漏洞文档“AAT national assembly final.inp”最终执行的木马程序(Visual Basic后门程序)使用了域名referfile.com作为C2,该C2为Cisco Talos安全研究团队在2018年7月公开的《一例针对印度iOS用户的定向攻击活动》[9]中被披露,而Talos安全研究团队关联到该域名正好也是被一个Visual Basic后门程序所使用,且相关的网络资产疑似为APT组织”Bahamut”所有。
总结及猜想
360威胁情报中心通过对相同来源(漏洞利用文档在生成时间、ShellCode、InPage100流大小、流的固定特征)的一系列针对巴基斯坦的攻击样本分析后发现,同一来源的攻击样本分别使用了至少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 |
参考
- https://ti.360.net/
- http://www.inpage.com/
- https://en.wikipedia.org/wiki/InPage
- https://ti.360.net/blog/articles/analysis-of-apt-campaign-bitter/
- https://www.anquanke.com/post/id/84910
- https://www.kaspersky.com/blog/inpage-exploit/6292/
- 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/
- https://blog.talosintelligence.com/2018/07/Mobile-Malware-Campaign-uses-Malicious-MDM.html
- https://blog.talosintelligence.com/2018/07/Mobile-Malware-Campaign-uses-Malicious-MDM-Part2.html
- https://blog.trendmicro.com/trendlabs-security-intelligence/confucius-update-new-tools-and-techniques-further-connections-with-patchwork/
- https://documents.trendmicro.com/assets/appendix-confucius-update-new-tools-techniques-connections-patchwork-updated.pdf
- https://researchcenter.paloaltonetworks.com/2016/09/unit42-confucius-says-malware-families-get-further-by-abusing-legitimate-websites/
- https://researchcenter.paloaltonetworks.com/2017/11/unit42-recent-inpage-exploits-lead-multiple-malware-families/
- https://www.virustotal.com/gui/file/9bf55fcf0a25a2f7f6d03e7ba6123d5a31c3e6c1196efae453a74d6fff9d43bb/submissions