Study Notes of using sdclt.exe to bypass 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:\windows\system32\sdclt.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:\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe
如果手动修改该注册表键值,填入参数,那么就能够实现 UAC 的绕过
绕过方法如下:
新建注册表键值:
HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe
并将默认值设置为 cmd.exe
如图
再次启动 sdclt.exe,发现转而去执行 cmd.exe,并且实现了对 UAC 的绕过,如图
注:
启动的 exe 不能加参数,否则失败
例如填入 C:\Windows\System32\cmd.exe /c calc.exe,无法实现利用
如图
在实际利用的过程中,如果需要加参数,可通过先将参数写入脚本,再加载脚本的方式进行利用
为了更好的隐蔽,实现“无文件”利用,可以尝试寻找 sdclt.exe 是否存在支持传入参数的命令
Matt Nelson @enigma0x3 的第二篇文章就是解决了这个问题,文章地址如下:https://enigma0x3.net/2017/03/17/fileless-uac-bypass-using-sdclt-exe/
修改注册表,劫持 /kickoffelev
传入的参数,实现“无文件”利用
具体方法如下:
新建注册表键值:
HKCU:\Software\Classes\exefile\shell\runas\command\
新建项 isolatedCommand
,类型 REG_SZ
,内容作为启动参数,可设置为 notepad.exe
如图
接着在 cmd 下输入:
sdclt.exe /KickOffElev
成功执行参数,启动 notetad.exe,如图
参数换成 regedit.exe,启动过程并未被 UAC 拦截,成功绕过
如图
但是通过创建注册表键值 exefile\shell\runas\command\会影响其他正常 exe 程序的启动,所以在利用上需要先创建键值,执行 sdclt.exe,之后再删除该键值
整个过程通过 powershell 实现,完整 POC 可参考:https://github.com/enigma0x3/Misc-PowerShell-Stuff/blob/master/Invoke-SDCLTBypass.ps1
0x04 防御和检测
防御:
UAC 权限设置为“Always Notify”,那么该方法将会失效
检测:
监控注册表键值:
HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe
HKCU:\Software\Classes\exefile\shell\runas\command\
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论