如何利用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 <command> <arg...>
然而,進一步的研究表明,這種技術沒有繞過任何保護,隨後的測試工作。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/
如若轉載,請註明原文地址: http://www.4hou.com/system/10274.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※從上手到「直播」,一次智能震動棒Hacking之旅
※從404到默認頁面,通過.cshtml拿到webshel??l
※網安法適用時
※如何比較不同瀏覽器的頁面載入時間
TAG:信息安全 |