近期,瑞星威胁情报中心捕获到一起针对巴基斯坦攻击事件,攻击者疑似APT组织“蔓灵花”,该组织利用CVE-2017-11882漏洞,通过投递带有恶意链接的DOCX文档对受害者进行攻击,一旦成功将获取受害者电脑内的所有敏感信息,并对其进行远程操控。
据瑞星安全专家介绍,APT组织“蔓灵花”又名BITTER或T-APT-17,于2016年被国外某安全厂商曝光,该组织长期针对中国、巴基斯坦等国家进行有组织,有计划地攻击,其目的以窃取政府、军工业、电力等领域的敏感资料为主,具有强烈的政治背景。
此次“蔓灵花”组织攻击对巴基斯坦的攻击手法是,向其内部投放主题为List of Commercial Counsellor at Pakistan’s Missions Abroad(中译为:巴基斯坦驻外使团商务参赞名单)的诱饵文档,并在诱饵文档中注入了恶意链接,该链接指向带有CVE-2017-11882漏洞RTF文档,其目的应在于盗取巴基斯坦政府及相关机构的内部机密资料,并进行远程操控等恶意行为。
据悉,CVE-2017-11882漏洞作为一个典型的APT高危漏洞,影响着Office诸多版本,同时为众多攻击组织所青睐,而用于各类重大APT攻击事件中,因此没有及时修复漏洞的机构都存在巨大风险。同时由于蔓灵花”组织也曾对我国发起过类似的APT攻击,因此广大政府及企业应引起高度重视,做好相应的防御措施。
这起攻击事件主要针对巴基斯坦,攻击者投放的诱饵文档的主题是List of Commercial Counsellor at Pakistan’s Missions Abroad,中译为:巴基斯坦驻外使团商务参赞名单。诱饵文档中列举了巴基斯坦驻外使团在中国,美国,法国,加拿大,印度等多个国家的联系地址,联系电话,传真,邮箱等详细信息。
图:诱饵文档内容节选
图:攻击流程
攻击者在投放的诱饵文档中注入了恶意链接,该链接指向带有CVE-2017-11882漏洞,名为update的RTF文档。恶意链接为:http://quartzu.hol.es/mso/x64/x32/section/update。
MD5 | A0DCBD63716B264F868CD38D7**B494D |
---|---|
文件大小 | 63.97 KB (65502 bytes) |
文件格式 | DOCX |
创建时间 | 2018-10-22 |
VT首次上传时间 | 2019-11-28 |
VT检测结果 | 5/59 |
涉及URL | http://quartzu.hol.es/mso/x64/x32/section/update |
表:诱饵文档信息
图:诱饵文档访问恶意链接
恶意链接位于诱饵文档中的word\rels\settings.xml.rels中。
图:诱饵文档中恶意链接所处位置
update.rtf文档带有CVE-2017-11882漏洞,攻击者利用漏洞下载执行恶意程序。以下是详细分析。
MD5 | 78441ABDFF82636F9527D22AC0109BE7 |
---|---|
文件大小 | 56.01 KB (57358 bytes) |
文件格式 | RTF |
VT首次上传时间 | 2019-11-28 |
VT检测结果 | 18/59 |
漏洞利用 | CVE-2017-11882 |
涉及URL | http://quartzu.hol.es/creatmong/tangkrdg/uplandjt |
表:update.rtf信息
图:CVE-2017-11882漏洞处恶意代码
3.1下载恶意程序X098765432198.exe
下载http://quartzu.hol.es/creatmong/tangkrdg/uplandjt,命名为X098765432198.exe,存于本地C:\Users\win7\AppData\Local目录中。
图:下载恶意程序
3.2执行X098765432198.exe
执行下载于本地的X098765432198.exe。
图:执行程序
攻击者利用X098765432198.exe去访问恶意链接,获取并执行shellcode。shellcode内存解密出dll并执行。恶意链接为:http://kerbosim.com/dramtun/miskder/kipr.jpg。以下是对X098765432198.exe的详细分析。
文件名 | X098765432198.exe |
---|---|
MD5 | 707B75D6C9EB5EAE30B10F6353ECAB4D |
文件大小 | 312.00 KB (319488 bytes) |
文件格式 | Win32 EXE |
创建时间 | 2019-11-21 |
VT首次上传时间 | 2019-11-28 |
VT检测结果 | 22/69 |
涉及URL | http://kerbosim.com/dramtun/miskder/kipr.jpg |
表:X098765432198.exe信息
4.1访问恶意链接获取kipr.jpg
访问http://kerbosim.com/dramtun/miskder/kipr.jpg,获取kipr.jpg的数据存放于申请的内存中。
文件名 | kipr.jpg |
---|---|
MD5 | 31bcb31b2125297c08ddebaadd3479c3 |
文件大小 | 199.04 KB (203820 bytes) |
文件格式 | JPEG |
VT首次上传时间 | 2019-11-29 |
VT检测结果 | 3/57 |
表:kipr.jpg信息
图:读取kipr.jpg
4.2创建线程去执行kipr.jpg中的shellcode
①定位到kipr.jpg中的shellcode,shellcode位于是kipr.jpg的头0×14个字节之后。
图:定位kipr.jpg中的shellcode
②创建线程执行shellcode
图:执行shellcode
4.3shellcode内存解密出dll并执行
①shellcode对自身所携带的dll进行解密。解密算法是异或0×93。
图:异或解密
图:dll的具体位置
②跳转到解密出的dll文件的入口点,从而将dll执行起来。
图:执行dll
dll通过获取当前运行进程名,与进程名rundll32.exe进行对比判断,根据结果分为两种执行情况。第一种情况(攻击初期)是:进程名不为rundll32.exe,第二种情况(攻击后期)是进程名为rundll32.exe。此步骤为第一种情况(攻击初期),dll会在受害者机器上释放skydriveshell64.dll,并利用rundll32.exe执行skydriveshell64.dll,还会在Windows自启动菜单中创建执行skydriveshell64.dll的快捷方式。以下是对shellcode解密出的dll的详细分析过程。
图:两种执行流程
5.1获取dll中所存放的pe数据,pe大小为0x12E00
图:读取dll中的pe
图:pe数据
5.2创建Common文件夹
①遍历进程,查询avgnt.exe进程是否存在。
图:找寻avgnt.exe进程
②如果avgnt.exe进程存在,在%appdata%目录下创建Common文件夹。如果avgnt.exe进程不存在,在%programdata%目录下创建Common文件夹。
图:创建Common文件夹
图:创建Common文件夹
5.3创建PE文件和快捷方式
在Common目录下创建PE文件skydriveshell64.dll,skydriveshell64.dll文件内容来自步骤5.1所获取的pe数据。在Windows启动菜单中创建名为OneDrive的快捷方式,快捷方式的作用是利用rundll32.exe执行skydriveshell64.dll中的IntRun函数。
文件名 | skydriveshell64.dll |
---|---|
MD5 | 06AE12974694B6BBBADE3097EE25AFFF |
文件大小 | 75.50 KB (77312 bytes) |
文件格式 | Win32 DLL |
创建时间 | 2019-11-21 |
VT首次上传时间 | 2019-11-28 |
VT检测结果 | 25/68 |
设计URL | http://kerbosim.com/dramtun/miskder/kipr.jpg |
表:skydriveshell64.dll信息
图:创建skydriveshell64.dll和OneDrive.lnk
图:示例图
5.4利用rundll32.exe执行skydriveshell64.dll中的IntRun函数
图:执行skydriveshell64.dll
skydriveshell64.dll的技术分析和步骤4关于X098765432198.exe的技术分析进行对比,发现有很大的重合性,它们会访问相同恶意链接,获取并执行相同的shellcode。
攻击者在skydriveshell64.dll中利用while(1)建立了一个无限循环,在循环过程中,样本会每隔5秒反复执行同一个恶意操作。此恶意操作的主要行为是:访问恶意链接,获取并执行shellcode。恶意链接为:http://kerbosim.com/dramtun/miskder/kipr.jpg。以下是对恶意操作的详细分析。
文件名 | skydriveshell64.dll |
---|---|
MD5 | 06AE12974694B6BBBADE3097EE25AFFF |
文件大小 | 75.50 KB (77312 bytes) |
文件格式 | Win32 DLL |
创建时间 | 2019-11-21 |
VT首次上传时间 | 2019-11-28 |
VT检测结果 | 25/68 |
设计URL | http://kerbosim.com/dramtun/miskder/kipr.jpg |
表:skydriveshell64.dll信息
6.1访问恶意链接获取kipr.jpg
访问http://kerbosim.com/dramtun/miskder/kipr.jpg,获取kipr.jpg的数据存放于申请的内存之中。
图:获取kipr.jpg数据
6.2创建线程去执行kipr.jpg中的shellcode
①定位到kipr.jpg中的shellcode,shellcode位于是kipr.jpg的头0×14个字节之后。
图:定位kipr.jpg中的shellcode
②创建线程执行shellcode
图:执行shellcode
6.3shellcode内存解密出dll并执行
①shellcode对自身所携带的dll进行解密。解密算法是异或0×93。
图:异或解密
图:dll的具体位置
②跳转到解密出的dll文件的入口点,从而将dll执行起来。
图:执行dll
dll通过获取当前运行进程名,与进程名rundll32.exe进行对比判断,根据结果分为两种执行情况。第一种情况(攻击初期)是:进程名不为rundll32.exe,第二种情况(攻击后期)是进程名为rundll32.exe。此步骤为第二种情况(攻击后期),dll将会收集受害者机器上的进程信息,网络信息,目录信息,操作系统信息,电脑名,用户名,加载的模块信息,当前本地时间和日期,并将它们打包发送到http://kerbosim.com/conpandre/quitzu/ctlizedr.php上。
图:两种执行流程
7.1创建互斥体
防止多开,创建名为44cbdd8d470e88800e6c32bd9d63d341的互斥体。
图:创建互斥体
7.2创建临时文件,存储收集的进程信息
样本利用GetTempFileNameW函数生成文件名,文件名由nnp和系统时间组成,例如nnp8059.tmp文件。创建名为nnp8059.tmp的临时文件,将机器上所以的进程信息存于此文件中。
①利用函数GetTempFileNameW函数生成文件名,例如nnp8059.tmp。
图:生成文件名
②在%temp%目录下创建名为nnp8059.tmp的临时文件,nnp8059.tmp文件中记录了当前机器上所有的进程信息。
图:创建文件
图:文件存储的进程信息
7.3收集机器上所有的网络连接详细信息并存于临时文件
①在临时文件nnp8059.tmp中写入由“-”组成的分割线。
图:写入分割线
②在临时文件nnp8059.tmp中新增的分割线后写入机器上所有网络连接的详细信息。
图:写入网络相关信息
图:网络相关信息
7.4收集盘符目录信息并存于临时文件
①在临时文件nnp8059.tmp中写入由“-”组成的分割线。
图:写入分割线
②在临时文件nnp8059.tmp中新增的分割线后写入所收集盘符C、D、E、F、G、H的目录信息。
图:收集盘符目录
图:盘符目录
7.5将临时文件中的数据写入内存,删除临时文件
将临时文件nnp8059.tmp中的所有数据写入申请的内存之中,然后将nnp8059.tmp文件删除。
图:删除nnp8059.tmp文件
7.6收集其他信息,并和之前信息汇总
①收集操作系统版本信息,电脑名,用户名,当前本地的时间和日期,将他们拼接到前面所收集的信息的头部,并在信息的最前面附加上一些攻击者特定的标志,比如Tag:FreshPss和Version:2.5。
图:汇总信息1
②收集加载的模块信息,将它们拼接到前面所收集信息的末尾。
图:汇总信息2
7.7发送收集的数据,接收远控指令
样本将上述所汇总的数据利用函数CryptBinaryToStringA转换成base64字符串,然后发送到HTTP服务器上,样本还会接收远控指令,对受害者机器进行远程操作。
①将所收集的数据利用函数CryptBinaryToStringA转换成base64字符串,发送到HTTP服务器上,服务器地址为:http://kerbosim.com/conpandre/quitzu/ctlizedr.php。
图:发送的请求
图:发送的请求
②根据返回的数据是否为“OK”字符串,来判断数据是否发送成功,如果不成功,则继续进行步骤①操作。
图:判断数据是否发送成功
③数据发送成功后,利用while(1)建立无限循环,向HTTP服务器发送由电脑名和用户名组成的Base64字符串,并接收和执行攻击者发送过来的远控指令。
图:建立无限循环
图:发送的请求
④接收攻击者发来的远程控制命令,执行相应的远程操作,远程操作共有5种。
图:接收远控指令
图:远程操作
命令 | 操作 |
---|---|
103 | 下载文件并执行 |
105 | 执行shellcode |
120 | 下载文件并执行,删除OneDrive.lnk |
117 | 删除OneDrive.lnk |
115 | 获取文件于内存中 |
表:命令对应的操作
此次攻击事件和早期瑞星威胁情报中心捕获到的蔓灵花攻击事件进行对比,发现它们的攻击手法有很大的重合性,都是利用漏洞去下载执行功能相似的PE程序,再访问构造雷同的恶意链接去获取执行shellcode达到窃密和远程控制的目的。
MD5 | 5A489FB81335A13DFF52678BBCE69771 |
---|---|
文件大小 | 1.37 MB (1438306 bytes) |
文件格式 | INP |
VT首次上传时间 | 2019-02-14 |
VT检测结果 | 11/54 |
漏洞利用 | CVE-2017-12824 |
涉及Domain | burningforests.com |
表:早期样本信息表:早期样本信息
图:对比
图:特定标志对比
APT攻击有着针对性强、组织严密、持续时间长、高隐蔽性和间接攻击的显著特征,针对的目标都是具有重大信息资产,如国家军事、情报、战略部门和影响国计民生的行业如金融、能源等,国内相关政府机构和企业单位务必要引起重视,加强防御措施。
1. 不打开可疑邮件,不下载可疑附件。
此类攻击最开始的入口通常都是钓鱼邮件,钓鱼邮件非常具有迷惑性,因此需要用户提高警惕,企业更是要加强员工网络安全意识的培训。
2. 部署网络安全态势感知、预警系统等网关安全产品。
网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。
3. 安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。
杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文档,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。
4. 及时修补系统补丁和重要软件的补丁。
http://quartzu.hol.es/mso/x64/x32/section/update
http://quartzu.hol.es/creatmong/tangkrdg/uplandjt
http://kerbosim.com/dramtun/miskder/kipr.jpg
http://kerbosim.com/conpandre/quitzu/ctlizedr.php
A0DCBD63716B264F868CD38D7**B494D
78441ABDFF82636F9527D22AC0109BE7
707B75D6C9EB5EAE30B10F6353ECAB4D
31BCB31B2125297C08DDEBAADD3479C3
06AE12974694B6BBBADE3097EE25AFFF
5A489FB81335A13DFF52678BBCE69771
86E3E98C1E69F887E23D119D0D30D51C
*本文作者:瑞星,转载请注明来自FreeBuf.COM