导语: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会话。
生成C#Shellcode
上面的shellcode可以包含在XML文件中,该文件包含了MSBuild编译和运行的代码。该文件需要保存为.csproj并通过MSBuild执行,以返回Meterpreter会话:
通过MSBuild执行ShellCode
通过MSBuild获得Meterpreter会话
PowerShell
使用和上述相同的方法,也可以在cmd被禁用的情况下,参照Casey Smith和Cneelis的方法来执行PowerShell 。
通过MSBuild 执行 PowerShell
MSBuildShell – Cn33liz和Casey Smith
MSBuild – MSBuildShell
MSBuildShell
作为这个绕过方式的扩展,Nick Tyler发布了一个修改版本的PSAttack工具,该工具是便携式的PowerShell渗透测试框架,可用于对受限制的系统执行进一步的攻击。
MSBuild – 执行PSAttack
MSBuild – PSAttack
Mimikatz
除了PowerShell之外,还可以执行Mimikatz,直接从内存获取明文密码。
MSBuild – 执行Mimikatz
MSBuild – Mimikatz
通过执行以下命令,Mimikatz将检索任何登录凭据:
mimikatz # sekurlsa::logonpasswords
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