標籤:

如何利用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:技术分析 |