*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。
概述
摩诃草组织(APT-C-09),又称HangOver、VICEROY TIGER、The Dropping Elephant、Patchwork,是一个来自于南亚地区的境外APT组织,该组织已持续活跃了7年。摩诃草组织最早由Norman安全公司于2013年曝光,随后又有其他安全厂商持续追踪并披露该组织的最新活动,但该组织并未由于攻击行动的曝光而停止攻击,相反从2015年开始更加活跃。360持续对摩诃草组织的攻击进行了监控,从2015年至今发现了其6次以上的大型攻击行动。
近期,360高级威胁应对团队监控到了摩诃草组织从2017年11月至12月初的多起活跃攻击,攻击目标主要针对中国部分地区和南亚区域的国家机构,我们对截获的攻击样本进行了详细的技术分析,确认该样本是2016年360追日团队曝光的该组织FakeJLI后门进阶版本。摩诃草组织的网络武器正在不断升级,持续发起新的攻击,请相关机构和单位提高警惕。本文分析了样本的完整攻击流程,帮助大家进一步了解高级威胁攻击。
样本攻击流程简介
此次攻击的样本使用了内核提权漏洞进行沙箱逃逸、白利用执行DLL荷载、COM对象创建计划任务、Github公共资源更新C&C等技术,主要攻击流程如下图所示:
攻击技术特点分析
1. EPS进程沙箱逃逸
在Office 2010及其高版本上的EPS脚本过滤器进程fltldr.exe被保护在低权限沙盒中,要攻破其中的低权限沙盒保护措施,攻击者需要使用远程代码执行漏洞配合内核提权漏洞进行组合攻击。今年上半年俄罗斯相关APT组织Turla、APT28使用了该模式的0day漏洞组合攻击,被曝光的是EPS脚本远程代码执行漏洞(CVE-2017-0261、CVE-2017-0262)和windows内核提权漏洞(CVE-2017-0001 、CVE-2017-0263)四个漏洞的组合,而摩诃草组织则在今年下半年跟进使用了相关漏洞。
首先,在我们的沙箱中监控到了摩诃草样本的提权攻击,经过分析发现摩诃草样本通过EPS "restore"操作UAF漏洞(cve-2017-0261)和 Win32k.sys本地权限提升漏洞(cve-2016-7255)进行组合攻击。
当打开Office文档时,EPS脚本过滤器fltldr.exe就会渲染其中的恶意EPS脚本,通过EPS脚本漏洞(cve-2017-0261)执行任意代码,漏洞关键伪代码如下:
漏洞执行的Shellcode会落地释放PE荷载,并在内存中进行提权操作,提权过程是在内存中加载执行一个带提权函数的DLL荷载,其提权流程使用的是CVE-2016-7255漏洞。
2. Vmware白利用执行Dll荷载
接下来,落地释放的PE荷载开始创建白进程攻击链,用于逃避安全软件的查杀监控。恶意荷载通过Vmware签名白文件,加载执行同目录下释放的vmtools.dll文件,来执行下一阶段的后门安装任务。
vmtools.dll是后门安装程序,其对应的导出函数是后门安装代码
3. 使用COM对象创建计划任务
该处功能比较新颖,使用ITaskService对象以无进程的方式添加计划任务,并实现最终的后门驻留。代码逻辑与MSDN提供的例程代码(https://msdn.microsoft.com/en-us/library/windows/desktop/aa446817(v=vs.85).aspx)相近,如程序中的COM对象和关键参数伪代码:
CLSID_TaskScheduler {0F87369F-A4E5-4CFC-BD3E-73E6154572DD}
IID_ITaskService {2FABA4C7-4DA9-4013-9697-20CC3FD40F85}
攻击利用计划任务实现后门程序的驻留,程序将 C:\ProgramData\Microsoft\DeviceSync\MSBuild.exe 设置为计划任务开机启动
设置程序开机1分钟后执行
计划任务名为BaiduUpdateTask1
之后会尝试将%AppData%\\Microsoft Updates\\MsUpdte.exe设置为计划任务启动
其计划任务名为BaiduUpdateTaskServer
时间同样为开机1分钟后执行
后门主要功能分析
该后门程序与2016年所曝光的摩诃草组织的FakeJLI后门在部分代码逻辑上完全一致。
FakeJLI 在2016年版本中使用的临时文件名称
新版MSBuild中使用的临时文件名称与老版完全相同
1.建立互斥体
后门程序在启动时隐藏了自身窗口,创建了名为 com_mycompany_apps_appname_new 的互斥体,如果存在该互斥体,则退出程序,防止重复运行。
2.遍历导出表方式调用API函数
后门程序没有使用系统函数GetProcAddress获取API地址,在获取了对应DLL基址后,会采用了自己遍历导出表的方式寻找导出函数地址,比如收集本机信息功能:
3.键盘记录功能
后门程序拥有键盘记录功能,通过调用GetAsyncKeyState函数实现,所有记录存放在Temp目录的TPX498.dat文件中
4.窃取机密文档
后门程序会截取电脑中的机密文档,通过递归遍历本地磁盘,将其中符合下述后缀的文件名
记录在Temp目录下的edg499.dat中。
5.其他控制指令
进一步的我们还发现了其他控制指令,主要指令如下:
C&C地址解密分析
该后门程序在C&C获取上均使用了第三方可信网站中转的方式, 老版本FakeJLI在论坛网页中放入C&C地址的异或加密字符串进行C&C更新。
而此次攻击使用的格式为RSS XML格式
在解密算法上,异或算法两个版本是一致的
但是新版比老版多了一层Blowfish 算法加密
而关键的攻击C&C地址更新及控制是使用Github,从Git的提交记录我们发现攻击者从10月和11月起就分别开始筹备了两次攻击,最后通过关联反溯我们还发现了其他的大量C&C地址。
总结
APT组织的攻击不会因为一次攻击行动的暴露或失败,而导致该组织停止活动或放弃目标,由于相关恶意代码、C&C等暴露的确会给相关组织带来一定影响。但该组织在重新配备资源,调整好相关战术和技术后,又会发动新的攻击。此次分析的样本是摩诃草组织近期针对网络武器进行升级后,发起的一轮新攻击。针对摩诃草等APT组织的持续攻击威胁,我们会一直与之抗衡。
*本文作者:360安全卫士;转载请注明来自 FreeBuf.com