提权技术-Bypass UAC
本文最后更新于:2021-08-09 晚上
Bypass UAC
UAC(UserAccount Control,用户账户控制)是微软在VISTA之后的版本中引入的一种安全机制,通过UAC,应用程序和任务可以始终在非管理员账户的安全上下文中运行,除非特别授予管理员级别的系统访问权限。UAC可以阻止未经授权的应用程序自动进行安装,并防止无意地更改系统设置。
正常UAC是有一个弹窗提示,而病毒木马为了隐藏自己,就需要不通知用户的情况下“偷偷“将自己提升为管理员权限。
在Windows中,一些高权限的程序在运行时,是不需要弹出UAC的。这些白名单程序,默认就是以管理员权限运行。可以通过DLL劫持、注入或者是修改注册表执行命令的方式启动目标程序,实现Bypass UAC提权操作。
下面拿白名单程序CompMgmtLauncher来进行一下分析。
分析CompMgmtLauncher启动过程
打开procmon工具来监控CompMgmtLauncher启动。可以看到,它会读取HKCU\Software\Classes\mscfile\shell\open\command中的值。
可以看一下,此路径中存在什么,可以看到其中没有值
如果该路径没有值,然后就会查询HKCR\mscfile\shell\open\command,查看其中的值,存储这mmc.exe进程的路径信息。
现在可以知道,当它启动时,会先查看HKCU\Software\Classes\mscfile\shell\open\command,那么如果在这里添加路径信息,CompMgmtLauncher就会启动它。
现在就修改注册表信息,在HKCU\Software\Classes\mscfile\shell\open\command添加需要提权的程序路径,再运行CompMgmtLauncher就可以完成Bypass UAC提权。
实现
1 |
|
这里需要提权的程序为桌面上的TestApc.exe,运行后查看效果。运行程序可以看到,testapc.exe直接运行。
使用procmon工具查看权限可以看到权限是高
正常启动查看权限可以看到是中。
参考
参考《Windows黑客编程技术详解》一书
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!