导语:迈克菲实验室发现CactusTorch无文件威胁使用了DotNetToJScript技术,在2018年其使用迅速增长。

迈克菲实验室注意到,部分攻击者在攻击系统方面发生了重大转变,更多的使用受信任的Windows可执行文件而非外部恶意软件。最流行的技术之一是“无文件”攻击(“fileless” attack.)。因为这些攻击是通过信誉良好的可执行文件发起的,所以很难检测到。消费者和企业用户都可能成为此威胁的受害者。在企业环境中,攻击者使用此攻击向量在网络中横向移动。

CactusTorch无文件威胁使用DotNetToJScript技术,该技术直接从内存加载和执行恶意.NET程序集。这些程序集是应用程序部署的最小单元,例如.dll或.exe。与其他无文件攻击技术一样,DotNetToJScript不会在计算机硬盘上写入任何恶意.NET程序集的;因此传统的文件扫描程序无法检测到这些攻击。

2018年,CactusTorch的使用迅速增长,CactusTorch可以在Windows系统上执行自定义shellcode。下图显示了CactusTorch变种在野外的兴起。

Source: McAfee Labs.

DotNetToJScript工具集

编译DotNetToJScript工具可以得到.NET可执行文件DotNetToJScript.exe,它接受.NET程序集的路径并输出JavaScript文件。

图1:使用DotNetToJScript.exe创建恶意JavaScript文件

DotNetToJScript工具包并没有附带恶意软件。创建的唯一组件是输出JavaScript文件,该文件由wscript.exe在目标系统上执行。在分析中,我们运行了一些基本的反混淆,并找到了一些在线工具隐藏的CactusTorch

图2:CactusTorch代码

在深入研究此代码之前,我们需要了解.NET及其COM exposure。在系统上安装.NET框架时,通过Microsoft的组件对象模型(COM)公开了几个.NET库。

图3:COM公开.NET库System.Security.Cryptography.FromBase64Transform的COM

查看公开的接口,可以看到IDispatch,它允许从script host或浏览器访问COM对象。

图4:.NET库中的公开接口。

要使用DotNetToJScript向量执行恶意代码,攻击使用以下COM对象:

· Text.ASCIIEncoding

· Security.Cryptography.FromBase64Transform

· IO.MemoryStream

· Runtime.Serialization.Formatters.Binary.BinaryFormatter

· Collections.ArrayList

现在,让我们回到图2中看到的JavaScript代码。函数base64ToStream()将Base64编码的序列化对象转换为stream。在我们完全理解JavaScript代码背后的逻辑之前,我们需要检查Base64编码的序列化对象的功能。因此,下一步是对嵌入的序列化对象进行逆向工程并重新创建类定义。完成后,类定义看起来像下面的代码,它负责执行恶意shellcode。(特别感谢Casey Smith,@ subTee,关于这一步的重要指示)。

图5:嵌入式序列化对象的类定义

现在我们有了CactusTorch的开源组件,图2中的JavaScript代码是有意义的。可以看到恶意shellcode如何在目标系统上执行。在图2的第29行中,代码使用两个参数调用flame(x,x) 函数:要启动的可执行文件和shellcode。

嵌入在CactusTorch脚本中的.NET程序集运行以下步骤来执行恶意shellcode:

· 使用CreateProcessA(托管shellcode)启动新的挂起进程

· 使用具有EXECUTE_READWRITE权限的VirtualAllocEx分配一些内存

· 使用WriteProcessMemory在目标进程内存中写入shellcode

· 使用CreateRemoteThread创建一个新线程来执行shellcode

结论

无文件恶意软件利用了安全软件与正版签名Windows应用程序之间的信任关系。由于此类攻击是通过信誉良好的可信任可执行文件启动的,因此很难检测到这些攻击。McAfee Endpoint Security(ENS)和Host Intrusion Prevention System(HIPS)客户可通过Signature ID 6118免受此类无文件攻击。

参考

· https://ruxcon.org.au/assets/2017/slides/NET-Interop-Full.pdf

· https://github.com/tyranid/DotNetToJScript

· https://github.com/mdsecactivebreach/cactustorch

Hashes

· 4CF9863C8D60F7A977E9DBE4DB270819

· 5EEFBB10D0169D586640DA8C42DD54BE

· 69A2B582ED453A90CC06345886F03833

· 74172E8B1F9B7F9DB600C57E07368B8F

· 86C47B9E0F43150FEFF5968CF4882EBB

· 89F87F60137E9081F40E7D9AD5FA8DEF

· 8A33BF71E8740BDDE23425BBC6259D8F

· 8DCCC9539A499D375A069131F3E06610

· 924B7FB00E930082CE5B96835FDE69A1

· B60E085150D53FCE271CD481435C6E1E

· BC7923B43D4C83D077153202D84EA603

· C1A7315FB68043277EE57BDBD2950503

· D2095F2C1D8C25AF2C2C7AF7F4DD4908

· D5A07C27A8BBCCD0234C81D7B1843FD4

· E0573E624953A403A2335EEC7FFB1D83

· E1677A25A047097E679676A459C63A42

· F0BC5DFD755B7765537B6A934CA6DBDC

· F6526E6B943A6C17A2CC96DD122B211E

· CDB73CC7D00A2ABB42A76F7DFABA94E1

· D4EB24F9EB1244A5BEAA19CF69434127

源链接

Hacking more

...