导语:CACTUSTORCH是一个生成payload的框架,可用于基于James Forshaw的DotNetToJScript工具的攻防对抗。

CACTUSTORCH是一个生成payload的框架,可用于基于James Forshaw的DotNetToJScript工具的攻防对抗。这个工具允许C#二进制文件在payload内引导,提供可靠的手段绕过许多常见的防御。目前CACTUSTORCH支持以下payload类型:

VBS
VBA
JS
JSE
WSF
HTA
VBE

在此之前,我们是不能直接从不包括VBA宏多种格式中调用shellcode注入。CACTUSTORCH有一个独立的C#二进制,它能够接受一个二进制名称和base64编码的shellcode注入。另外,它借用了@armitagehacker / CobaltStrike的VBA宏注入的概念,可以注入32位的可执行文件。

当前有效负载状态

当前其实有在几个框架中已经存在支持多种格式的payload生成,包括Metasploit和Cobalt Strike。然而,他们在生成payload时总是有一些缺点。

在Metasploit框架中,这些payload格式工作的情况如下:

VBS:文件删除和执行,Touches disk
HTA-PSH:使用WScript.Shell对象运行powershell.exe 
VBA-EXE:文件丢弃并执行 ,Touches disk
VBA:通过Kernel32 API的声明进行Shellcode注入 - Maldoc扫描的已知指标
VBA-PSH:使用Shell对象运行powershell.exe

在CobaltStrike中,以下payload格式的工作原理如下:

VBS:虚拟目标,创建COM对象到Excel,创建工作表,注入VBA宏代码并执行。主要依赖于正在安装的Office和注入的VBA中的Kernel32 API声明
VBA:通过Kernel32 API的声明进行Shellcode注入 - Maldoc扫描的已知指标
HTA-EXE:文件丢弃并执行,Touches disk
HTA-PSH:使用WScript.Shell对象运行powershell.exe
HTA-VBA:绕着一个VBS做的弱化,对COM反对Excel,宏注入Kernel32 API声明中的VBA代码

CACTUSTORCH的好处

CACTUSTORCH为当前payload生成提供了一些改进,已经超出了目前公共框架的能力:

在payload中不使用Kernel32 API声明
在C#二进制内混淆
允许任意指定目标二进制生成
允许指定任意shellcode
不产生PowerShell.exe
不需要Powershell
不需要office
不调用WScript.Shell
不需要分段,因为完整的无阶段shellcode可以包含在传送的payload内
没有静态父对子进行生成,用户可以更改wscript.exe生成的内容

exe产生Powershell.exe是可疑的,产生rundll32.exe可以说是有较少的危害的。你可以将其更改为calc.exe,ping.exe / t或类似的可疑二进制文件。

使用CACTUSTORCH

使用CACTUSTORCH是相对简单的,以下概述了生成自定义payload所需的步骤:

克隆目录中选择要使用的payload格式
选择要注入的二进制容器,必须存在于SYSWOW64和SYSTEM32中
为您的监听器生成原始的shellcode
$> cat payload.bin | base64 -w 0> out.txt
将out.txt base64原始payload复制到模板的“代码”变量中
如果为VBA执行,请通过vbasplit.py out.txt split.txt运行out.txt
然后将split.txt复制到VBA模板中突出显示的代码段中
payload准备就绪
如果你想要混淆的话

演示这些步骤的视频如下:

与 Cobalt 的整合

作为简化对手模拟活动的过程的一部分,我们创建了一个CACTUSTORCH攻击者脚本来促成这一点。

加载攻击者脚本之后,在“攻击”选项卡下,将显示以下菜单作为选项。您现在可以选择要使用的payload和选项,它将生成payload并为您托管。在VBA代码方面,它将被呈现在一个文本框中,它可以被复制并粘贴到Word VBA宏中。

1.png

在以下视频中将为您演示攻击者脚本:

源链接

Hacking more

...