2017年3月,360追日团队发现了一类定向攻击的样本,确认是之前所未知的APT组织的攻击行动样本,目前可以追溯到的该组织至少在2016年4月便开始活动。追日团队将该攻击组织编号为APT-C-35。2017年6月,360威胁情报中心又发现该组织新的攻击活动,确认并曝光了该团伙针对巴基斯坦的定向攻击活动,并详细分析了该组织使用的独有的EHDevel恶意代码框架(见参考[1])。
2018年3月,国外安全团队ASERT继续披露了该组织新的恶意代码框架yty,并根据PDB路径中的机器用户名将该组织命名为Donot。鉴于该组织的活动是由360独立发现,并在全球率先披露的,符合360威胁情报中心对APT组织进行独立命名的条件。故,参考国外已有命名及360威胁情报中心对APT组织的命名规则,我们将APT-C-35组织正式名为“肚脑虫”组织(Donot音译)。
APT-C-35主要针对巴基斯坦等南亚地区国家进行网络间谍活动,该组织主要针对政府机构等领域进行攻击,其中以窃取敏感信息为主。从2017年至今,该组织针对巴基斯坦至少发动了4波攻击行动,攻击过程主要是以携带Office漏洞或者恶意宏的鱼叉邮件进行恶意代码的传播,并先后使用了两套独有的恶意代码框架:EHDevel和yty。
自第一次发现该组织的攻击活动以来,360威胁情报中心对该组织一直保持着持续跟踪,近期我们再次跟踪到该团伙利用较新的Office Nday漏洞发起的新的攻击活动,并对攻击中使用的yty框架最新的恶意代码进行了详细分析。
360威胁情报中心与360追日团队对APT-C-35组织的攻击活动跟踪分析的时间线如下:
2018年6月下旬,360威胁情报中心在对恶意代码的跟踪过程中发现疑似定向攻击的APT样本,通过对该样本的深入分析,并利用360威胁情报中心数据平台进行关联,确认其为360威胁情报中心2017年首次曝光的针对性攻击活动的后续(详见参考[1])。
捕获的诱饵文档文件名为:kahsmirissue abida.doc(克什米尔问题),克什米尔地区南部属于印度管辖,北部属于巴基斯坦管辖,两国均宣称对克什米尔全境拥有主权,一直以来处于地区主权纷争当中。因此我们初步推测该攻击主要针对该地区附近的国家。
整个攻击流程如下:
发现的样本是名为kahsmirissue abida.doc的漏洞利用文档,该漏洞利用样本包含三个Objdata,其中两个为Package对象,一个为包含CVE-2017-8570漏洞的OLE2Link。样本利用RTF文档自动释放Package对象的特性,将包含的两个Package对象释放至%TMP%目录下,最后通过CVE-2017-8570触发执行释放的恶意脚本,再通过脚本执行释放的EXE文件,包含漏洞的Objdata对象信息如下:
包含漏洞的OLE2Link对象中设置FileMoniker对应的文件为_JVGHBCYYKRAE2DU.sct脚本,漏洞触发后执行,其主要功能为执行释放在%TMP%目录下的Setup.exe:
释放的Setup.exe是C++编写的下载者程序,其首先创建一个名为“toptwo”的互斥量,保证系统中只有一个实例运行:
然后在%APPDATA%Roaming/HexRun目录下创建名为lset.txt的调试文件,输出一些运行信息:
并在%APPDATA%Roaming/HexRun创建kt.bat文件,通过创建CMD.exe进程启动该文件:
kt.bat主要功能为设置任务计划,从当前时间开始每5分钟启动一次%APPDATA%Roaming/HexRun/Setup.exe:
设置完成的任务计划如下:
设置完任务计划后,样本开始收集系统信息,获取磁盘信息:
获取MAC地址:
还会检测是否为虚拟机执行环境,并将该环境信息一并发送给攻击者服务器:
之后还会收集计算机名、用户名、program file下的文件名,系统版本号等信息,将获取的所有信息组合成以“|||”分割的字符串:
之后从Google文档:获取文件内容作为C2:
获取的文件名为customer.txt,C2地址为:tes.sessions4life.pw,若获取失败则使用硬编码的C2地址:aoc.sessions4life.pw
进一步拷贝自身到%AppData%/Roaming/Hexrun目录下:
随后与C2进行通信,将获取的信息经过AES加密后POST到tes.sessions4life.pw/football/goal:
当C2返回为“win”时,样本将进行后续的下载行为,若系统中没安装.NET,样本会先从tes.sessions4life.pw/jszx/jquery/3x/simple.exe下载.NET框架进行安装:
若已有安装了.NET则首先将收集到的‘计算机名-用户名-MAC地址|||work.exe’经AES加密后POST到tes.sessions4life.pw/football/download/3/work.exe,获取work.exe文件。并将:‘计算机名-用户名-MAC地址|||boothelp.exe’加密后POST到tes.sessions4life.pw/football/download/2并获取boothelp.exe文件。Work.exe主要功能为启动boothelp.exe:
Boothelp.exe是C#编写的后门程序,其根据C2返回的指令下载插件并执行。与Setup.exe一样,boothelp.exe的字符串也是全部倒序后再经BASE64编码存储,解码算法如下:
boothelp的C2地址也是通过Google获取:http://docs.google.com/uc?id=1wUaESzjGT2fSuP_hOJMpqidyzqwu15sz&export=download
且还硬编码了一个C2地址:aoc.sessions4life.pw
该后门会获取计算机名、用户名、MAC地址,再经AES加密后POST到aoc.sessions4life.pw/football/flag:
AES加密算法:
最后处理返回的数据,判断指令是否包含有需要下载的插件。若指令内包含插件名,则以格式“计算机名-用户名-MAC地址|||插件名”经AES加密后发送到aoc.sessions4life.pw/football/download/2或者aoc.sessions4life.pw/football/download/5获取插件并执行:
在我们调试过程中,C2返回数据包括了7个插件,但我们只成功获取了五个插件并进行了分析:
相关插件功能如下:
下载回来的后门插件功能详细分析如下:
vstservice.exe
vstservice.exe是.NET程序,功能为收集文件发送到C2,与之前的文件一致,其C2也来源于Google,文档名为goods.txt,内容为qwe.sessions4life.pw。与前面分析的样本一致,该插件中也硬编码了一个C2:mon.sessions4life.pw
获取系统磁盘信息的功能:
判断磁盘是固定磁盘且%appdata%/Roming/vstservice/vstservice目录下没有.man结尾的文件,则在该磁盘下收集文件:
收集磁盘内的.ppt/.doc/.pdf/.rtf等敏感文档:
将上述格式文件保存到%appdata%/Roming/vstservice/vstservice目录下的“磁盘名.doc”中,并以文件名>文件大小>最后修改时间的格式保存:
将出上述格式外的文件保存到%appdata%/Roming/vstservice/vstservice目录下的“磁盘名.man”中:
之后将文件发送到C2:mon.sessions4life.pw/panel/bigdata/file_upload
abode.exe
该文件主要功能是上传除vstservice.exe之外的其他插件生成的文件以及C2指令中的文件(vstservice.exe具有与C2通信的功能,其他插件没有),同样的,与其他yty框架中的文件相同,adode.exe的C2也来源于Google,且与vstservice.exe使用相同的C2:
定期发送其他插件生成的文件到C2,并根据C2返回指令发送指定文件:
获取插件生成的文件:
之后将“计算机名-用户名-MAC地址”经加密后发送到mon.sessions4life.pw/panel/bigdata/orderfile并获取指定文件名:
上传指定文件到mon.sessions4life.pw/panel/bigdata/file_upload:
mdriver.exe
mdriver.exe插件是C++编写的键盘记录器,该插件主要功能记录键盘输入,并保存到%user%/LanConfig/ mdriver/mdriver目录下:
保存的键盘输入格式如下:
dspcheck.exe
截图插件,每五分钟截屏一次,并以文件名格式为”日月 年 时 分 秒”保存到” %user%/LanConfig/dspcheck/dspcheck.exe”下:
mboard.exe
mboard.exe使用UPX加壳,脱壳后根据字符串相关信息可知是go语言编写的程序,该插件创建多个CMD进程执行命令,获取系统相关信息,并将获取的信息保存到” %user%/LanConfig/ mboard/ mboard下,并以.qr结尾。然后获取系统中的doc、pdf、msg等文件保存到” %user%/LanConfig/mboard/ mboard目录下:
相关CMD命令如下表
命令 | 功能 |
---|---|
dir /a /s 磁盘名:\; | 获取磁盘相关文件 |
systeminfo | 获取系统信息 |
Ipconfig /all | IP相关信息 |
net view | 当前域的计算机列表 |
tasklist | 进程列表 |
通过对此次攻击中使用的PDB路径、域名/IP关联分析,以及使用360威胁情报中心分析平台对相关样本和网络基础设施进行拓展,我们确认此次攻击的幕后团伙为360威胁情报中心2017年首次曝光的针对巴基斯坦的APT组织APT-C-35。
在分析的下载者Setup.exe中我们发现一个特殊的PDB路径:
根据其PDB路径及代码特征确定该样本使用的是yty恶意框架,其与ASERT披露的dspcheck.exe插件PDB路径一致(详见参考[3]):
通过360威胁情报中心数据平台对样本中使用的C2域名tes.sessions4lif4.pw进行搜索,左下角可以看见已收录了相关报告:
而该报告引用了360威胁情报中心在2017年6月发布的关于APT-C-35的攻击活动分析文章:《针对巴基斯坦的某APT活动事件分析》
可以看到本次事件中使用的域名 tes.session4life.pw在17年时就已经被该APT组织使用:
并且我们发现Setup.exe中有一个经过base64编码的目录football/download2:
我们尝试在tes.session4life.pw/football/download2目录下获取文件,并成下载了一个名为helpdll.dll的文件,该文件采用C#编写,经分析该文件与ASERT披露的boothelp.exe文件结构基本一致:
且在helpdll.dll的getGoogle方法中,我们同样的发现了一个google文档下载地址(https://drive.google.com/uc?authuser=0&id=1BUuYXU6bLdH_k_NWQIo7n5Uo_7L-uZSu&export=download),下载回来的文件名为ip2.txt,内容为一个IP地址:5.135.199.0。
通过360威胁情报中心数据平台对IP进行查询,也成功关联到APT-C-35组织(2018年5月被ASERT命名为Donot)
由此我们可以确认,360威胁情报中心本次捕获的APT攻击样本和最早披露针对巴基斯坦且使用EHDevel恶意代码框架的APT攻击样本以及国外安全公司披露的使用yty恶意代码框架的APT攻击样本均来自于同一个APT组织:APT-C-35。
通过360威胁情报中心大数据关联分析,对C&C地址的访问均来自于巴基斯坦,可以确认APT-C-35最新的攻击目标仍然是巴基斯坦。
360威胁情报中心对本次的攻击样本溯源关联过程如下:
360威胁情报中心通过样本分析和大数据关联得到了APT-C-35组织近年来使用的大部分样本MD5、PDB路径、C&C地址(详见IOC节)。并发现了很多从未被公开过的该组织的样本和C&C地址:
比如PDB路径为D:\Soft\DevelopedCode_Last\yty2.0 – Copy\Release.Net\vstservice.pdb的样本,该样本功能与插件分析中的vstservice.exe一致,编译时间为2018.4.10:
与其他样本一样,该样本C2地址也来自Google:http://docs.google.com/uc?id=1xCEI_NZX9HQIq5bkpd7FsamzWFvmiC6Q&export=download
返回的文档名为mnpby.txt,内容为一个全新的C2地址:qwe.drivethrough.top
自2017年360威胁情报中心首次披露APT-C-35组织的活动以来,该组织从EHDevel框架到如今的yty框架一直在不断进行更新。本次捕获的样本框架较三个月前,功能虽然一致,但其字符串全部经倒序后再经Base64编码,且在数据传输中不再采用明文传输的方式,而是将获取的系统信息等经AES加密后进行发送。种种迹象表明,APT-C-35从未停止自己的活动,或许近期会再次发动新的网络间谍攻击。
目前,基于360威胁情报中心的威胁情报数据的全线产品,包括360威胁情报平台(TIP)、天眼高级威胁检测系统、360 NGSOC等,都已经支持对此APT攻击团伙攻击活动的检测。
*本文作者:360天眼实验室,转载自FreeBuf.COM
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.