导语: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宏中。
在以下视频中将为您演示攻击者脚本: