如何利用sdclt.exe繞過UAC?
0x00 前言
Matt Nelson? @enigma0x3在最近的文章中公開了一個繞過Win10 UAC的技巧,通過修改HKCU下的註冊表鍵值實現對UAC的繞過,文章地址如下:
Bypassing UAC using App Paths
「Fileless」 UAC Bypass using sdclt.exe
0x01 簡介
本文將對其進行測試,分享測試心得,整理該方法的攻防技巧
0x02 原理
Sigcheck
可用來查看exe文件的清單(manifest)
下載地址:
Sigcheck
在Win10環境下,cmd下運行:
sigcheck.exe -m c:windowssystem32sdclt.exen
如圖
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.exen
如果手動修改該註冊表鍵值,填入參數,那麼就能夠實現UAC的繞過
繞過方法如下:
新建註冊表鍵值:
HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exen
並將默認值設置為cmd.exe
如圖
再次啟動sdclt.exe,發現轉而去執行cmd.exe,並且實現了對UAC的繞過,如圖
註:啟動的exe不能加參數,否則失敗
例如填入C:WindowsSystem32cmd.exe /c calc.exe,無法實現利用
如圖
在實際利用的過程中,如果需要加參數,可通過先將參數寫入腳本,再載入腳本的方式進行利用
為了更好的隱蔽,實現「無文件」利用,可以嘗試尋找sdclt.exe是否存在支持傳入參數的命令
Matt Nelson? @enigma0x3的第二篇文章就是解決了這個問題,文章地址如下:
「Fileless」 UAC Bypass using sdclt.exe
修改註冊表,劫持/kickoffelev傳入的參數,實現「無文件」利用
具體方法如下:
新建註冊表鍵值:
HKCU:SoftwareClassesexefileshellrunascommandn
新建項isolatedCommand,類型REG_SZ,內容作為啟動參數,可設置為notepad.exe
如圖
接著在cmd下輸入:
sdclt.exe /KickOffElevn
成功執行參數,啟動notetad.exe,如圖
參數換成regedit.exe,啟動過程並未被UAC攔截,成功繞過
如圖
但是通過創建註冊表鍵值exefileshellrunascommand會影響其他正常exe程序的啟動,所以在利用上需要先創建鍵值,執行sdclt.exe,之後再刪除該鍵值
整個過程通過powershell實現,完整POC可參考:
enigma0x3/Misc-PowerShell-Stuff
0x04 防禦和檢測
防禦:UAC許可權設置為「Always Notify」,那麼該方法將會失效
檢測:
監控註冊表鍵值:
HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exenHKCU:SoftwareClassesexefileshellrunascommandn
本文為 3gstudent 原創稿件,嘶吼獨家發布,未經許可禁止轉載,如若轉載,請聯繫嘶吼編輯:t如何利用sdclt.exe繞過UAC? 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※趨勢科技技術分析:詳解無文件勒索病毒Sorebrect
※如何利用 DLL hijack 輕鬆繞過AMSI?
※如何使用SilentCleanup繞過UAC?
※Windows惡意軟體API調用特徵分析
TAG:技术分析 |