研究背景
平时会从推特上日常搜寻一些有关APT样本的推文,发现有BITTER攻击活动样本出现,于是下载到本地研究分析下。哈希为956ad7e87ee4ea4473408d1f2c6fe7ff,文件名为Round Table Schedule.xls,如果是office格式文件那么攻击手法大概率是钓鱼或者水坑攻击,同时很可能存在office漏洞利用。
https://twitter.com/SethKingHi/status/1583039595524259841
组织背景
蔓灵花是据称有南亚背景的APT组织,具有强烈的政治背景,至少从2013年11月以来就开始活跃。蔓灵花组织主要针对巴基斯坦、中国两国,其攻击目标为政府部门、电力、军工业相关单位,意图窃取敏感资料。蔓灵花又名BITTER、APT-C-08、苦象、T-APT-17等称号,是一个据称有南亚背景的APT组织。该组织至少从2013年11月以来就开始活跃,但一直未被发现,直到2016年才被国外安全厂商Forcepoint首次披露。
VirusTotal提供了恶意文档的相关漏洞利用编号,根据之前研究二进制漏洞的一些经验来看,这个也不会完全正确,根据经验还是要亲自分析后才能确定具体利用的历史漏洞是什么或者可能是0day。
VirusTotal没有企业账号的话可以直接从微步云沙箱下载,地址如下:
https://s.threatbook.com/report/file/07504fcef717e6b74ed381e94eab5a9140171572b5572cda87b275e3873c8a88
沙箱分析结果的进程链中存在EQNEDT32.EXE进程创建了计划任务schtasks.exe子进程表明存在可疑的office类漏洞利用,这种进程行为特征非常明显是可疑的,不过也只能得到一个回连地址,经过人工分析后会发现其实是两个回连地址存在。
整体分析下来还是比较简单的,首先是需要对漏洞进行识别,这个主要靠经验还有相关的流行漏洞利用特征,因此常用的office漏洞利用特征是需要熟悉的。接下来利用开源脚本分析恶意文档,发现存在Equation模块,因此可将其dump到本地分析。
打开恶意文档后,发现两处内嵌了公式编辑器对象,表明很可能存在两次漏洞利用痕迹。
结合之前的公开报告,该组织很喜欢将shellcode进行异或加密,且密钥设定为0xFF,因此可将之前dump至本地的shellcode解密后得到很明显的命令字符串,通过对部分命令字符串的分析表明存在任务计划痕迹以及网络外连下载后阶段恶意文件行为。
第一段shellcode取反也可以得到相关字符串信息
由于之前发现恶意文档内嵌了两个公式编辑器对象,因此第二段shellcode取反也可以得到相关字符串信息,第一段内容与第二段内容比对是不同的,表明存在多个C2地址。
恶意文档执行后,对于受害系统的行为为设置计划任务DWMCORE与DWMCORELIB,定时执行上传计算机名称至C2并下载对应的payload至本地保存为exe文件。
由于Windows7系统中并未存在curl命令,因此该类恶意文档针对的系统至少是Windows10。
本地创建的计划任务如下,对于一些取证场景,可以依据计划任务配置文件创建时间来判断攻击者活动痕迹时间。
漏洞调试过程比较简单,具体的分析过程可参考文末链接。本地经过分析该恶意文档利用漏洞属于CVE-2018-0798,CVE-2018-0798和CVE-2017-11882都是典型的栈溢出漏洞。发生在office软件的EQNEDT32.EXE上。这是一个公式解析程序,在解析Matrix record并未检查长度,从而造成栈缓冲区溢出。具体发生在sub_443F6C函数,没有对输入做限制,导致覆盖了sub_443E34返回地址,从而导致栈溢出漏洞。由于属于客户端漏洞且未有DEP等安全机制保护,因此对特定漏洞函数下断点可对后续将要执行的shellcode进行调试分析,如下。
漏洞触发完成,即将跳转执行预先设置的shellcode代码。
在执行shellcode代码时,将后续的shellcode数据取反进行解密。
回连地址
https://sambatvnewsupdate.com/gt.php/?cs=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
https://qwavemediaservice.net/hkcu/qt.php/?dt=%computername%-QT-2&ct=QT
参考链接
https://www.bifangsec.com/2021/11/10/%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%EF%BC%9Acve-2018-0798/