繞過AppLocker系列之MSBuild的利用

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 。

Pshell :

通過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::logonpasswordsn

MSBuild – 通過Mimikatz導出證書

資源

1. Cn33liz/MSBuildShell

2. 3gstudent/msbuild-inline-task

3. Cn33liz/MS17-012

4. subt0x10.blogspot.co.uk

本文翻譯自:AppLocker Bypass – MSBuild ,如若轉載,請註明來源於嘶吼: 繞過AppLocker系列之MSBuild的利用 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

APT34攻擊再升級,利用CVE-2017-11882漏洞攻擊中東國家
發現隱藏在偽造的Flash更新中的持續威脅
64位系統下的Office後門利用
Apache爆「OptionsBleed」出血漏洞,設置不當可導致內存信息泄漏

TAG:信息安全 | 网络安全 |