欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

攻击者如何使用修改后的Empire绕过Windows Defender

来源:本站整理 作者:佚名 时间:2019-03-28 TAG: 我要投稿

长期以来,如何能逃避反病毒软件一直是一个让我着迷的话题。多年前,当我开始研究计算机科学的这个领域时,我就向我的导师提出了一个课题,通过映射二进制文件中的执行流来改进反病毒引擎,从而检测出具有多态性的病毒。随着各项研究课题的不断开展,这一课题最终也被搁置了,我选择了另一个课题进行更加深入的研究。
在渗透测试的过程中,或者作为红蓝对抗中的红队(攻击方),绕过反病毒软件是必要的一个步骤。这也是非常令人沮丧的一个环节,因为尽管“基于签名的”反病毒软件在阻止威胁方面的表现往往不尽如人意,但要逃避这些反病毒软件的检测,过程也是非常痛苦的。
要逃避反病毒软件,有一个非常流行的优秀思路就是“编写自己的自定义工具”。如果我们需要做的只是编写一个简单的逆向Shell,或者我们有大量预算和大量时间来从头开发一个完整的C&C基础架构,那么这将是一个很好的思路。但是,在大多数情况下,我们都要依赖于安全社区中其他研究者开发的大量开源(和商业)工具。是的,我们希望能够运行类似于Mimikatz或者Engagement之类的工具,而不需要付出大量自行开发的努力。
有一个比较好用的工具,就是Empire。首先为不了解该工具的读者做一个简单介绍,Empire是一款后期利用的C&C服务器,其中包含各种攻击性工具。它是一个非常强大的工具,可以成为攻击过程中的一个环节,但前提是它没有被进程中的反病毒程序检测到,并变得无法使用。有一段时间,Empire非常善于逃避像Windows Defender这样的检测产品。然而,好景不长。在如今,如果我们创建一个通用的HTTP监听器代理Payload,并在内存中执行,甚至在这过程中都没有接触到磁盘,可能就会看到如下所示的内容。

Windows Defender抓住了我们的恶意行为。那么,假如我们对其进行加壳呢?结果也是徒劳的。
由于Empire是免费的开源软件,所以通过我们一点点拆解分析Empire,我们发现了其中可以修改的一些关键区域,从而使用修改后的Empire实现绕过客户端反病毒软件Windows
Defender。
在开始任何测试之前,我们首先需要在Windows Defender中关闭“云端保护”(Cloud-delivered Protection),特别是其中的“自动提交样本”(Automatic sample submission),因为我们不希望任何测试过程中使用的文件进入到互联网上,特别是进入到Windows Defender的分布式签名中。当然,我们要保持“实时保护”开启,以便我们可以测试执行情况以及逃避检测的效果。

无论我们做任何的尝试,都一定不要将文件上传到VirusTotal上。如果上传相关的文件,将会完全阻止我们想要达成的目标。在下文中我们将会提到,即使初始Payload通过了反病毒检查,Windows Defender也可以检测到Empire。如果上传到VirusTotal,我们就无法证明该工具是否真的成功逃避了目标主机的检测,并且也会毁掉我们前面的所有努力成果。
现在,我们的测试环境已经准备就绪,是时候开始使用Empire了。
我们进行了绕过Windows Defender的前几次尝试,结果都没有成功。我们在Empire multi/launcher Payload中设置了misc选项,但这些设置都是没有用的,并且也不会实际工作。
Empire的HTTP listener默认选项:

Empire的multi/launcher默认选项:

接下来,我觉得是时候做一些偷偷摸摸的事情了。我决定借助PowerShell混淆工具来对其进行混淆,以此来实现掩人耳目的目的。我尝试了Unicore,但没有效果。随后,我还尝试了Veil Framework和Empire自身的原生Invoke-Obfuscation进行混淆,但上述尝试都没有成功。
在这时,我注意到,通过使用混淆工具,我可以获得写入磁盘的Payload,基本上绕过了反病毒软件的签名库。但是,在执行过程中,却可以被检测到,或者只是简单地发生了执行失败。
像往常一样,我们如果盲目的进行测试,很少能获得成功的结果。现在,是时候了解Empire的真正原理了。
拆解Empire
Empire生成的初始Payload是所谓的“stager”,特别是其中stage0 Payload。这里的stager实际上是一些代码,用于远程下载和执行另一个stager或实际Payload。在我们的示例中,我们会使用multi/launcher PowerShell Stager来运行HTTP listener。
测试stager0 Payload实际上非常简单。它首先会生成Payload,然后将其写入文件中,然后将其传输到Windows计算机上。如果在接触到磁盘时触发了反病毒警告,那么可能就需要事先进行更多的工作。如果在传输过程中一切正常,并且执行也正常,那么我们可能就得到了一个可用的stager。
在这里,有一个非常重要的经验要分享给大家。在反复测试Payload时,可能会一遍又一遍地触发Windows Defender,在这个过程中,Windows Defender可能会被“吓坏”(没有更好的词语能如此贴切地描述此情况了)。在我的实际测试期间,我遇到了一个问题,我发现Windows Defender在被吓坏后,会将所有的PowerShell文件标记为病毒,甚至连空文件都不例外。如果遇到了这种情况,请重新启动虚拟机或计算机。我推测,此时Windows Defender可能知道我正在进行文件传输操作的主机是恶意的,并且会禁止PowerShell执行,无论实际运行的是什么文件。由于事先已经非常机智地关闭了自动恶意软件提交和云端保护功能,那么我们重新启动后,就可以刷新这一功能。
要生成能够绕过Windows Defender的multi/launcher stager,我们所需要做的只是使用Empire中显示的选项。这很令人震惊,我知道。在这里,我并不会告诉大家我正在使用的确切选项,因为要防止有人立即使用这些选项并忽略我关于不能上传到VirusTotal的警告。但是,我会向大家展示我建议修改的选项。

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载