导语:Microsoft已经在.NET框架中发布了许多可以编译和执行代码的二进制文件。最初引入了MSBuild,以便开发人员在不安装Visual Studio的环境中构建产品。

Microsoft已经在.NET框架中发布了许多可以编译和执行代码的二进制文件。最初引入了MSBuild,以便开发人员在不安装Visual Studio的环境中构建产品。具体来说,这个二进制文件可以编译XML C#项目文件,因为它有一个名为Tasks的方法,可以执行一个写入托管代码的任务。但是,由于此方法可以操作代码而且MSBuild是受信任的Microsoft二进制文件并且可以执行代码,因此,攻击者可能会滥用它,用来绕过AppLocker和其他应用程序白名单解决方案(如Device Guard)。

Casey Smith最初发现了这种绕过方法,他已经发布了几个存储库,可以作为概念验证来执行代码并绕过AppLocker限制。

ShellCode

可以使用Metasploit MSFVenom来生成C#shellcode,它将在目标系统上执行,以获得Meterpreter会话。

generation-of-c-shellcode.png

生成C#Shellcode

上面的shellcode可以包含在XML文件中,该文件包含了MSBuild编译和运行的代码。该文件需要保存为.csproj并通过MSBuild执行,以返回Meterpreter会话:

executing-shellcode-via-msbuild.png

通过MSBuild执行ShellCode

meterpreter-via-msbuild.png

通过MSBuild获得Meterpreter会话

PowerShell

使用和上述相同的方法,也可以在cmd被禁用的情况下,参照Casey SmithCneelis的方法来执行PowerShell 。

Pshell :

msbuild-powershell.png

通过MSBuild 执行 PowerShell

MSBuildShell – Cn33liz和Casey Smith

msbuild-msbuildshell.png

MSBuild – MSBuildShell

msbuildshell.png

MSBuildShell

作为这个绕过方式的扩展,Nick Tyler发布了一个修改版本的PSAttack工具,该工具是便携式的PowerShell渗透测试框架,可用于对受限制的系统执行进一步的攻击。

msbuild-executing-psattack.png

MSBuild – 执行PSAttack

msbuild-psattack.png

MSBuild – PSAttack

Mimikatz

除了PowerShell之外,还可以执行Mimikatz,直接从内存获取明文密码。

msbuild-executing-mimikatz.png

MSBuild – 执行Mimikatz

msbuild-mimikatz.png

MSBuild – Mimikatz

通过执行以下命令,Mimikatz将检索任何登录凭据:

mimikatz # sekurlsa::logonpasswords

msbuild-dumping-credentials-via-mimikatz.png

MSBuild – 通过Mimikatz导出证书

资源

1. https://github.com/Cn33liz/MSBuildShell

2. https://github.com/3gstudent/msbuild-inline-task

3. https://github.com/Cn33liz/MS17-012

4. http://subt0x10.blogspot.co.uk/2017/04/bypassing-application-whitelisting.html 

源链接

Hacking more

...