如何绕过邮件过滤器投递恶意宏代码
警告: 本文中提到的技术和工具可能已过时,不适用于当前环境。但本文仍可作为学习机会,并可能用于更新或集成到现代工具和技术中。
Microsoft Word或Excel文档中的恶意宏是一种有效的黑客技术。这些文档可通过多种方式投递,包括通过电子邮件或作为“简历”上传到招聘网站。因此,反恶意软件解决方案(如入站邮件过滤器)会尝试阻止恶意宏的投递。根据我的经验,以下技术在绕过这些防护措施方面证明是有效的。
首先,Ethan Robish(@ethanrobish)教给我的一个标准小技巧是将启用宏的文档保存为较旧的“Word 97-2003文档”格式。较新版本的MS Office要求启用宏的文档使用“docm”扩展名,但旧格式允许使用不太明显的“doc”扩展名。
将启用宏的文档保存为Word 97“.doc”文件
虽然这不足以绕过许多过滤器,但这是一个良好的第一步。
Brian Fehrman(@fullmetalcache)过去曾发布过一些关于绕过邮件过滤器的技巧,但最近这些技巧对我无效。入站过滤器似乎不喜欢PowerShell Empire、Metasploit甚至TrustedSec的Unicorn载荷生成器从宏调用命令shell的方法。
作为替代方案,我发现以下宏可以成功绕过入站邮件过滤器。该宏从远程webDav服务器读取HTA文件。
|
|
此代码使用“Shell.Application Open”方法,与直接尝试在命令行调用命令相比,入站邮件过滤器对此方法的审查较少。要使用该宏,请将“your.webdavserver.net”文本替换为您托管HTA文件的webDav服务器的域名或IP地址。根据目标环境,使用域名可能有效,而使用IP地址无效,反之亦然。两种都尝试一下。有关设置webDav服务器的信息,请参阅此博客文章。
HTA文件本身可以使用多种工具生成。下面给出了使用PowerShell Empire的示例。将输出保存为带有“hta”扩展名的文件。
使用PowerShell生成HTA载荷
如果目标几乎没有互联网连接来下载HTA文件,您可能必须将HTA文件写入目标磁盘。但是,一些邮件过滤器在沙箱环境中运行宏载荷,并且不喜欢宏同时将文件写入磁盘并随后读取它。您通常可以在宏中执行其中之一,但不能同时执行两者。如果您直接访问目标,请通过在目标系统上手动创建载荷,然后通过电子邮件发送仅执行现有载荷的宏来测试这一点。您的宏很可能会通过入站邮件过滤器。这提出了一些有趣的想法,例如创建一个宏,如果文件已存在于磁盘上则执行它,否则创建它并退出。这将需要受害者运行宏两次。这并非完全不可行。如果宏显示错误并关闭文档,受害者可能会尝试再次打开它。
这引导我们思考更具创意的想法,例如宏检查时间,并仅在特定日期和时间之后执行恶意载荷。时间可以设置为电子邮件发送后十分钟。在这种情况下,宏在沙箱中执行时不会表现出恶意行为,但稍后会表现不同。记录一下,我最近尝试过但失败了,但这是很好的思考材料,可能对其他反恶意软件解决方案有效。
在这种情况下,我的最终有效解决方案是将文件写入存在于我的目标上但不在沙箱环境中的特定位置。例如“c:\Users\croberts\”。由于此位置在沙箱环境中不存在,因此不会写入磁盘,也不会随后执行。然而,在目标系统上,它运行得非常完美。最终的宏如下所示。
|
|
即使在一些最严格的环境中,也证明了通过电子邮件钓鱼实现远程代码执行的可能性。
防御者们,您真的需要允许从外部来源投递启用宏的文档吗?这是有风险的事情。