當前位置:
首頁 > 新聞 > 如何利用PowerShell診斷腳本執行命令並繞過AppLocker

如何利用PowerShell診斷腳本執行命令並繞過AppLocker

介紹

上周,我在Windows操作系統上尋找有趣的腳本和二進位文件,這些文件可能對未來的滲透測試和紅色團隊的工作有用。隨著企業安全意識越來越高,使用各種防護設備(例如AppLocker, Device Guard, AMSI, Powershell ScriptBlock Logging, PowerShell Constraint Language Mode, User Mode Code Integrity, HIDS/anti-virus,SOC等)的增加,我們需要規避/繞過這些防護方案已成為滲透測試時必不可少的部分。

在狩獵時,我遇到了一個有趣的目錄結構,其中包含位於以下路徑的診斷腳本:

%systemroot%diagnosticssystem

特別是,AERO、Audio這兩個子目錄包含兩個簽名的PowerShell腳本:

CL_Invocation.ps1CL_LoadAssembly.ps1CL_Invocation.ps1提供了一個通過System.Diagnostics.Process執行二進位文件的函數(SyncInvoke)。而CL_LoadAssembly.ps1提供了兩個用於載入.NET / C#程序集(DLL / EXE)的函數(LoadAssemblyFromNS和LoadAssemblyFromPath)。

分析CL_Invocation.ps1

在調查這個腳本時,很明顯執行命令會非常簡單,如下面的截圖所示:

導入模塊並使用SyncInvoke非常簡單,命令執行通過以下方式成功實現:

CL_Invocation.ps1 (or import-module CL_Invocation.ps1)SyncInvoke

然而,進一步的研究表明,這種技術沒有繞過任何保護,隨後的測試工作。PowerShell有約束語言模式(在PSv5中)阻止某些PowerShell代碼/腳本的執行,並且默認AppLocker策略阻止在未授權帳戶的上下文中執行未簽名的二進位文件。儘管如此,CL_Invocation.ps1在可信賴的執行鏈中可能具有優點,並且在與其他技術結合時可以逃避防禦者分析。

分析CL_LoadAssembly.ps1

當調查CL_LoadAssembly,我發現了由@netbiosX寫的(AppLocker Bypass – Assembly Load)使用的技術是@subTee在SchmooCon 2015年會議發表的技術。另外,@subTee在幾年前發布的Tweet中提到了CL_LoadAssembly的旁路技術。

為了測試這個方法,我在C#(Target Framework:.NET 2.0)中編譯了一個非常基本的程序(程序集),我調用funrun.exe,如果(成功)執行,它通過proc.start()運行calc.exe:

在非特權用戶環境下,使用具有默認AppLocker規則的Windows 2016計算機,用戶試圖直接執行funrun.exe。在cmd行和PowerShell(v5)上調用時,策略阻止了這一點,如以下屏幕截圖所示:

在PowerShell版本2下運行時,Funrun.exe也被策略阻止:

使用CL_LoadAssembly,用戶通過對funrun.exe的路徑遍歷調用成功載入程序集。但是,約束語言模式阻止用戶在PowerShell(v5)中調用方法,如以下屏幕截圖所示:

要跳過約束語言模式,用戶調用PowerShell v2並成功載入程序集,並將路徑遍歷調用到funrun.exe:

用戶調用funrun程序集方法並生成calc.exe:

成功!作為一個非特權用戶,我們證明了我們可以通過調用的PowerShell版本2繞過約束語言模式(注意:這必須啟用),並繞過AppLocker的通過CL_LoadAssembly.ps1載入的程序集

powershell -v 2 -ep bypass cd C:windowsdiagnosticssystemAERO import-module .CL_LoadAssembly.ps1 LoadAssemblyFromPath ........ empfunrun.exe [funrun.hashtag]::winning()

AppLocker繞過資源

有關AppLocker繞過技術的更多信息,我強烈建議查看由Oddvar Moe(@Oddvarmoe)創建和維護的Ultimate AppLocker繞過列表。而且,這些資源在這篇文章時非常有幫助:

· AppLocker旁路程序集載入 – https://pentestlab.blog/tag/assembly-load/

· C#到Windows Meterpreter 10分鐘 – https://holdmybeersecurity.com/2016/09/11/c-to-windows-meterpreter-in-10mins/


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

借殼攻擊:殭屍網路利用Chrome擴展程序傳播
真實案例:當間諜軟體變成「男友追蹤器」……

TAG:嘶吼RoarTalk |