如何利用sdclt.exe繞過UAC?
0x00 前言
Matt Nelson? @enigma0x3在最近的文章中公開了一個繞過Win10 UAC的技巧,通過修改HKCU下的註冊表鍵值實現對UAC的繞過,文章地址如下:
https://enigma0x3.net/2017/03/14/bypassing-uac-using-app-paths/
https://enigma0x3.net/2017/03/17/fileless-uac-bypass-using-sdclt-exe/
0x01 簡介
本文將對其進行測試,分享測試心得,整理該方法的攻防技巧
0x02 原理
Sigcheck
可用來查看exe文件的清單(manifest)
下載地址:https://technet.microsoft.com/en-us/sysinternals/bb897441.aspx
在Win10環境下,cmd下運行:
sigcheck.exe -m c:windowssystem32sdclt.exe
如圖
level=」requireAdministrator」
true代表可自動提示許可權
在Win7環境下,同樣使用Sigcheck查看sdclt.exe
如圖
level=」asInvoker」表示不會提升許可權,這也就是不支持Win7的原因
接下來,使用ProcessMonitor監控sdclt.exe的啟動過程,查找是否會調用其他程序
0x03 實際測試
測試環境: Win 10 x64
註:該方法只在Win10下測試成功
cmd下輸入:sdclt.exe
正常啟動,如圖
使用ProcessMonitor查看啟動過程
如圖
啟動sdclt.exe的過程中會以High許可權查找註冊表鍵值
HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe
如果手動修改該註冊表鍵值,填入參數,那麼就能夠實現UAC的繞過
繞過方法如下:
新建註冊表鍵值:
HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe
並將默認值設置為cmd.exe
如圖
再次啟動sdclt.exe,發現轉而去執行cmd.exe,並且實現了對UAC的繞過,如圖
註:啟動的exe不能加參數,否則失敗
例如填入C:WindowsSystem32cmd.exe /c calc.exe,無法實現利用
如圖
在實際利用的過程中,如果需要加參數,可通過先將參數寫入腳本,再載入腳本的方式進行利用
為了更好的隱蔽,實現「無文件」利用,可以嘗試尋找sdclt.exe是否存在支持傳入參數的命令
Matt Nelson? @enigma0x3的第二篇文章就是解決了這個問題,文章地址如下:
https://enigma0x3.net/2017/03/17/fileless-uac-bypass-using-sdclt-exe/
修改註冊表,劫持/kickoffelev傳入的參數,實現「無文件」利用
具體方法如下:
新建註冊表鍵值:
HKCU:SoftwareClassesexefileshellrunascommand
新建項isolatedCommand,類型REG_SZ,內容作為啟動參數,可設置為notepad.exe
如圖
接著在cmd下輸入:
sdclt.exe /KickOffElev
成功執行參數,啟動notetad.exe,如圖
參數換成regedit.exe,啟動過程並未被UAC攔截,成功繞過
如圖
但是通過創建註冊表鍵值exefileshellrunascommand會影響其他正常exe程序的啟動,所以在利用上需要先創建鍵值,執行sdclt.exe,之後再刪除該鍵值
整個過程通過powershell實現,完整POC可參考:
https://github.com/enigma0x3/Misc-PowerShell-Stuff/blob/master/Invoke-SDCLTBypass.ps1
0x04 防禦和檢測
防禦:UAC許可權設置為「Always Notify」,那麼該方法將會失效
檢測:
監控註冊表鍵值:
HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exeHKCU:SoftwareClassesexefileshellrunascommand
※黑客如何接管銀行的所有在線業務?
※如何緩解Mimikatz WDigest Cleartext 竊取憑證?
※京東白條爆嚴重BUG!不法分子POS機瘋狂套利
※從上手到「直播」,一次智能震動棒Hacking之旅
TAG:嘶吼RoarTalk |