内容简介:本文中,Joe sandbox 在线沙盒分析网站对该文档的详细感染行为给出了很好的描述:
近日,法国安全研究者兼BotConf和FastIR公司创始人Sebastien Larinier, 针对RTF文档相关的CVE-2017–11882漏洞利用专门制作了一条YARA规则,来捕获攻击线索。 经过海量数据比对,他发现了一个用来执行APT攻击的恶意RTF文档样本,其中的内容和越南岘港市海洲郡的建设项目相关,文档标题为《Chương trình hoạt động cnit 2018》。据Sebastien Larinier声称,按照该恶意文档表现出来的各项行为指标和特征值,他怀疑该APT攻击文档的幕后使用者为中国的黑客组织1937CN。
本文中, Sebastien Larinier 着重描述了该恶意文档的感染攻击机制、网络攻击架构以及攻击者采用的相关TTPs技术。
感染攻击链
Joe sandbox 在线沙盒分析网站对该文档的详细感染行为给出了很好的描述:
该恶意RTF文档利用漏洞会向目标操作系统中写入以下两个文件:
一个名为 RasTls.dll 的dll文件
一个名为dascgosrky.exe的可执行文件
RTF文档分析
在 Python 的RTF分析工具rtfobj帮助下,可以发现恶意RTF文档中的三个ole对象:一个类名为package的ole对象,以及另两个不良结构的ole对象。
在名为package的ole对象中,存在一个8.t文件的加载路径:
这种技术看似是用来执行 .sct 格式文件,以向网络下载一个可执行程序,植入到目标操作系统中。 McAfee安全实验室曾用 .sct文件为样本对这种技术进行过分析。 这种技术由于简单有效,并且支持Office相关文档,屡次被很多攻击者进行了在野利用。这以上路径中,可以看到,RTF文档会从系统%TMP% 目录中加载一个 8.t 文件。经分析,8.t 文件为一个加密文件:
经检查,另两个不良结构的ole对象为涉及“Equation Native”流的ole公式对象,其中可以看到CVE-2017–11882漏洞利用的影子:
ole对象末尾,能看到很多API接口的runPE技术调用,这样恶意程序会挂起一个系统进程,并在其中注入恶意执行代码。另外,还发现了对象开始处的有意思的字符串: 7e079a2524fa63a55fbcfe:
该字符串曾在“响尾蛇”APT攻击的ole公式对象中出现过,可能攻击者都使用了同一套恶意程序组装工具。现在有了加载文件8.t ,以及runPE技术的确定。接下来,需要来做更深入的shellcode分析。
逆向ShellCode
在分析伊始, Sebastien 认为 Winword.exe 会调用 CreateProcess 函数来创建EQNEDT32.exe进程,所以他决定在CreateProcess 函数的调用处设置一个断点。
但是,后来发现,EQNEDT32.exe 进程是由Winword.exe利用COM Object对象调用的,并不是由 CreateProcess 函数来创建的,而且Winword.exe也不是EQNEDT32.exe的父进程。所以,只好在EQNEDT32.exe启动时附加上调试器。为此,可以采用 映像劫持(Image File Execution Options,IFEO)方法 来进行分析。
所谓的映像劫持(IFEO)就是Image File Execution Options,位于注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options 由于这个项主要是用来调试程序用的,对一般用户意义不大。默认是只有管理员和local system有权读写修改。通俗来说,就是比如我想运行a.exe,结果运行的却是b.exe,也就是说在这种情况下,a程序被b给劫持了,即你想运行的程序被另外一个程序代替了。
先在Image File Execution Options的注册表荐中创建了一个名为EQNEDT32.exe的键值:
然后,为它设置一个EQNEDT32.exe执行是启动调试器的变量串值,以此把调试器附加到EQNEDT32.exe进程中去。
当打开恶意RTF文档后,Winword.exe和EQNEDT32.exe两个进程同时启动。
在EQNEDT32.exe进程的入口点处,调试器被附加进入:
现在,检查文件8.t是否在 %TMP% 目录中创建生成,果然8.t被drop到了 %TMP% 目录中:
然后,在函数CreateFile处设置断点,查看漏洞利用的shellcode是否会读取文件8.t。在call eqnedt32.41E5EE处,函数CreateFile被调用。文件路径的参数在堆栈执行push dword ptr ss:[ebp-4]操作被压入堆栈,也即把内存ss:[ebp-4]处存放的双字压入堆栈。
Shellcode使用函数CreateFile把文件8.t创建生成到%TMP% 目录下,现在,可以在调用函数处返回用户代码。
深入分析之后,进入shellcode区域,其地址空间已经发生改变。以下即为漏洞利用代码的shellcode段:
在函数CreateFile调用之后, 函数GetFileSize被调用以获取文件大小:
之后就是一个VirtualAlloc函数。VirtualAlloc是一个Windows API函数,该函数的功能是在调用进程的虚地址空间,预定或者提交一部分页,也可理解为申请内存空间。这里的VirtualAlloc函数在1FD0000 (eax value)处申请创建了一个内存页面,用它来加载文件8.t:
VirtualAlloc函数之后,创建的内存页面由EAX操作指向:
分配的内存页面:
然后,用函数ReadFile去读取文件8.t:
接着,文件8.t被读取加载到了分配的内存页面 1FD0000 处,以下为文件8.t在内存页面中的样式:
在0066C82A内存处,shellcode会对文件8.t进行编码解密,解密循环是围绕解密密钥进行的一系列异或(XOR)操作,解密开始,解密密钥被设置到了7BF48E63中。以下为解密循环:
之后,执行异或(XOR)操作,解密密钥被设置到了EAX寄存器中:
如果检查异或(XOR)操作的目的地ds:[edx+ebx],可以发现,在01FD0000处发生了文件8.t加载行为,两步执行解密之后,终于可以在内存区开头看到神奇的字符串“MZ”了,MZ为window的PE文件标志。
解密循环结束之后,我们会在内存01FD0000处得到一个PE程序,到此,文件8.t被解密了:
接下来,shellcode使用VirtualAlloc函数在02070000处创建了一个内存页面:
之前,在内存01FD0000处解密得到的PE程序被拷贝到了这个地址处:
在EQNEDT32.exe运行过程中,shellcode调用GetModuleFileNameA函数来获取自身文件的完整路径。之后,shellcode将正常的EQNEDT32.exe进程进行分支,创建出另一个独立的EQNEDT32.exe进程,并把它执行挂起状态:
然后在地址02070000处把该进程进行覆盖:
以下为NTWriteVirtualMemory写入内存时涉及的堆栈:
之后,shellcode会把挂起状态的进程重启,以此执行新注入的PE程序。所以,可以发现在OLE对象开头处存在所有的API调用,并且存在runPE方法来启动新注入的 EQNEDT32.exe 程序。
EQNEDT32.exe独立进程的分支创建分析
前面提过,被注入覆盖的新进程EQNEDT32.exe会在目标操作系统中写入以下两个文件:
一个名为 RasTls.dll 的dll文件
一个名为dascgosrky.exe的可执行文件
如果把EQNEDT32.exe进程剥离出来,把它放到IDA中分析,可以发现该进程在sub_00401150处释放文件的方法函数,把它命名为dropFiles。
在该方法开始,存在一个xor循环:
之后,会调用压缩方法函数zlib:
在sub_4012D0处,文件释放函数dropFiles会被两次调用。
检查整个流程,可以发现,函数dropFiles只会被sub_4012D0进行调用,如下:
由于EQNEDT32.exe每次的执行,都会由函数CreateFile的onstaticcache.dat文件启动,所以,在函数CreateFile处设置了一个断点:
然后,回到用户代码中,在函数dropFiles初次被调用的0040159A处再设置一个断点,以便进行静态分析:
这样,就能分析第二遍解密循环了,先要来初始化解密函数:
接着,可以发现xor异或和把结果储存在esi+eax中操作:
解密循环第一步中,结果被写入EQNEDT32.exe进程地址空间的411BC0:
循环完成之后,可以得到zlib压缩对象的头信息:
在内存页面021E0000中,会被分配存储dll文件:
同时,在其中一个PE进程dascgosrky.exe会被解压缩:
之后,RasTls.dll文件由以下路径被创建,并被储存在ebx寄存器中:
L”C:\\Users\\IEUser\\AppData\\Roaming\\Microsoft\\Windows\\Network Shortcuts\\RasTls.dll”
在此过程中,函数dropFiles被两次调用进行解密和PE文件的解压缩操作。EQNEDT32.exe进程的文件存储偏移位于00434EF8 ,而其PE解压缩程序dascgosrky.exe存储在025D0020处。如下图所示:
之后,dascgosrky.exe释放到以下系统路径中,其基地址ebx为005DA228
L”C:\\Users\\IEUser\\AppData\\Roaming\\Microsoft\\Windows\\Network Shortcuts\\dascgosrky.exe”
由此,可以在网络行为中监测到以下两个文件释放到操作系统中:
dll劫持
表面来看,dascgosrky.exe程序是一个赛门铁克公司签发的合法可信文件:
它为了加载RasTls.dll,会调用sub_401940处的 LoadLibrary 和 GetProcaddress 方法,来实现其恶意行为。以下为其加载的恶意行为:
攻击者利用的网络架构
攻击者利用的域名为wouderfulu.impresstravel.ga,解析对应IP地址为192.99.181.14:
在该IP地址中,存在多个越南语相关的对应域名,这些域名还和IP地址176.223.165.122有关联:
其中两个越语域名有点意思:
halong.dulichculao.com 曾在对越某些机构发起的网络攻击中用过, Fortinet曾对这类攻击做过详细分析 ,并把其追溯为中国的黑客组织-1937CN。
把这两次攻击的各项TTP指标进行对比,发现基本相似,攻击者都使用了RTF文档作为前期入侵,而用DLL劫持作为后期payload加载。
此次攻击中的另外一个域名cat.toonganuh.com,是toonganuh.com的子域名,也曾被发现和中国黑客组织-1937CN注册过的邮箱florence1972@scryptmail.com有关联。
总结
基于以上发现,Sebastien Larinier推断,中国黑客组织 1937CN 以同样的TTPs手法和更新过的 工具 组件,针对越南政府部门开展着持续的网络攻击。 Sebastien 认为, 1937CN 创建RTF恶意文档的特性和“响尾蛇”APT组织相似。Sebastien Larinier声称将会在后续的分析中给出更多证据。
IOC
域名:
dn.dulichbiendao.org gateway.vietbaotinmoi.com web.thoitietvietnam.org hn.dulichbiendao.org halong.dulichculao.com cat.toonganuh.com new.sggpnews.com dulichculao.com coco.sodexoa.com. thoitiet.malware-sinkhole.net wouderfulu.impresstravel.ga toonganuh.com coco.sodexoa.com
IP地址:
192.99.181.14 176.223.165.122
RTFs:
42162c495e835cdf28670661a53d47d12255d9c791c1c5653673b25fb587ffed
8.t:
2c60d4312e4416745e56048ee35e694a79e1bc77e7e4d0b5811e64c84a72d2d7
PE:
f9ebf6aeb3f0fb0c29bd8f3d652476cd1fe8bd9a0c11cb15c43de33bbce0bf68 (exe) 9f5da7524817736cd85d87dae93fdbe478385baac1c0aa3102b6ad50d7e5e368 (dll)
Update:
The payload is PlugX. Thanks to Gabor Szappanos https://twitter.com/GaborSzappanos/status/1024622354582908928
Update IOCs:
597c0c6f397eefb06155abdf5aa9a7476c977c44ef8bd9575b01359e96273486 59.rtf 11f38b6a69978dad95c9b1479db9a8729ca57329855998bd41befc364657d654 RasTls.dll f9ebf6aeb3f0fb0c29bd8f3d652476cd1fe8bd9a0c11cb15c43de33bbce0bf68 RasTls.exe b70069e1c8e829bfd7090ba3dfbf0e256fc7dfcefc6acafb3b53abcf2caa2253 b7.rtf 77361b1ca09d6857d68cea052a0bb857e03d776d3e1943897315a80a19f20fc2 spoolsver.exe 9fba998ab2c1b7fec39da9817b27768ba7892c0613c4be7c525989161981d2e2 vsodscpl.dll 9d239ddd4c925d14e00b5a95827e9191bfda7d59858f141f6f5dcc52329838f0 9d.rtf 087d8bee1db61273a7cd533d52b63265d3a8a8b897526d7849c48bcdba4b22ec RasTls.dll f9ebf6aeb3f0fb0c29bd8f3d652476cd1fe8bd9a0c11cb15c43de33bbce0bf68 RasTls.exe 332aa26d719a20f3a26b2b00a9ca5d2e090b33f5070b057f4950d4f088201ab9 rtf 93aa353320a8e27923880401a4a0f3760374b4d17dcd709d351e612d589b969d vsodscpl.dll 77361b1ca09d6857d68cea052a0bb857e03d776d3e1943897315a80a19f20fc2 ScnCfg.exe
*参考来源: medium ,clouds 编译,转载请注明来自 FreeBuf.COM
以上所述就是小编给大家介绍的《国外安全研究者爆料中国黑客组织针对越南政府的APT攻击样本》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 安全研究者的自我修养(续)
- 8个常见的研究者认知偏误陷阱
- 从研究者的视角看 Fuzzing 技术发展 30 年
- 【安全帮】谷歌研究者:软件技术无法解决“幽灵”芯片漏洞
- NIPS 更名风波再起,众多研究者联合抗议NIPS不改名的决定
- 254 页 PPT!这是一份写给 NLP 研究者的编程指南
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
虚拟现实:最后的传播
聂有兵 / 中国发展出版社 / 2017-4-1 / 39.00
本书对“虚拟现实”这一诞生自70年代却在今天成为热门话题的概念进行了历史发展式的分析和回顾,认为虚拟现实是当今最重大的社会变革的技术因素之一,对虚拟现实在未来百年可能给人类社会的各个层面带来的影响进行说明,结合多个大众媒介的发展趋势,合理地推演未来虚拟现实在政治、经济、文化等领域的态势,并基于传播学理论框架提出了几个新的观点。对于普通读者,本书可以普及一般的虚拟现实知识;对于传媒行业,本书可以引导......一起来看看 《虚拟现实:最后的传播》 这本书的介绍吧!