免责声明:请勿使用本文中提到的技术进行非法测试或行为。使用本文中提供的信息或工具所造成的任何后果和损失由使用者自行承担,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。
一、UAC原理
用户帐户控制(User Account Control,简写作UAC)Windows Vista(及更高版本操作系统)中一组新的基础结构技术,可以帮助阻止恶意程序损坏系统,同时也可以帮助组织部署更易于管理的平台。UAC会阻止未经授权应用程序的自动安装,防止无意中对系统设置进行更改。如图所示:
然而在一些特殊系统程序中,会直接获取管理员权限同时不弹出UAC弹窗,这类程序被称为白名单程序。这些程序拥有autoElevate属性的值为True,会在启动时就静默提升权限。本质上是劫持注册表,这种方法主要是通过寻找autoElevated属性为true的程序,修改其注册表command的值,改成我们想要执行的paylaod,在该值中指明的字段会在这类程序运行时自动执行,类似于默认程序打开,当你以后运行该程序时,这个command命令都会自动执行。
是一个命令行实用程序,可显示文件版本号、时间戳信息和数字签名详细信息(包括证书链)。它还包括一个选项,用于检查文件在[VirusTotal](https://www.virustotal.com/)上的状态(VirusTotal 是一个针对 40 多个防病毒引擎执行自动文件扫描的网站),以及一个选项,用于上传文件进行扫描。命令行参数参考:
Process Explorer显示由两个子窗口组成。顶部窗口始终显示当前活动进程的列表,包括其所属帐户的名称,而底部窗口中显示的信息取决于Process Explorer所处的模式:如果处于句柄模式,可以看到顶部窗口中所选进程已打开的句柄;如果处于 DLL 模式,可查看进程已加载的 DLL 和内存映射文件,并且可以快速显示哪些进程打开了特定句柄或加载了 DLL。
Process Monitor是一款适用于 Windows 的高级监控工具,可显示实时文件系统、注册表和进程/线程活动。包括丰富且无损的过滤、全面的事件属性(如会话 ID 和用户名)、可靠的进程信息、完整的线程堆栈(每个操作都带有集成符号支持)、同时记录到文件等。其独特而强大的功能将使 Process Monitor 成为系统故障排除和恶意软件搜索工具包中的核心实用程序。
回到主题,挖掘UAC白名单还需要满足以下三个条件:
1. 程序的manifest标识的配置属性 autoElevate 为 true
3. 从注册表里查询ShellOpencommand键值对
然后就可以开始挖掘了,从哪挖呢?(ps:为了一劳永逸,当然是从System32下手了)
先筛选满足第一个条件的exe文件,输入命令挨个测试吧(有经验的大佬可以开发脚本程序自动化挖掘):
sigcheck64.exe -m C:WindowsSystem32bthudtask.exe
c:windowssystem32bthudtask.exe
c:windowssystem32changepk.exe
c:windowssystem32ComputerDefaults.exe
c:windowssystem32dccw.exe
c:windowssystem32dcomcnfg.exe
c:windowssystem32DeviceEject.exe
c:windowssystem32DeviceProperties.exe
c:windowssystem32djoin.exe
c:windowssystem32easinvoker.exe
c:windowssystem32EASPolicyManagerBrokerHost.exe
c:windowssystem32eudcedit.exe
c:windowssystem32eventvwr.exe
c:windowssystem32fodhelper.exe
c:windowssystem32fsquirt.exe
c:windowssystem32FXSUNATD.exe
c:windowssystem32immersivetpmvscmgrsvr.exe
c:windowssystem32iscsicli.exe
c:windowssystem32iscsicpl.exe
c:windowssystem32lpksetup.exe
c:windowssystem32MSchedExe.exe
c:windowssystem32msconfig.exe
c:windowssystem32msra.exe
c:windowssystem32MultiDigiMon.exe
c:windowssystem32newdev.exe
c:windowssystem32odbcad32.exe
c:windowssystem32PasswordOnWakeSettingFlyout.exe
c:windowssystem32pwcreator.exe
c:windowssystem32rdpshell.exe
c:windowssystem32recdisc.exe
c:windowssystem32rrinstaller.exe
c:windowssystem32shrpubw.exe
c:windowssystem32slui.exe
c:windowssystem32Sysprepsysprep.exe
c:windowssystem32SystemPropertiesAdvanced.exe
c:windowssystem32SystemPropertiesComputerName.exe
c:windowssystem32SystemPropertiesDataExecutionPrevention.exe
c:windowssystem32SystemPropertiesHardware.exe
c:windowssystem32SystemPropertiesPerformance.exe
c:windowssystem32SystemPropertiesProtection.exe
c:windowssystem32SystemPropertiesRemote.exe
c:windowssystem32SystemSettingsAdminFlows.exe
c:windowssystem32SystemSettingsRemoveDevice.exe
c:windowssystem32Taskmgr.exe
c:windowssystem32tcmsetup.exe
c:windowssystem32TpmInit.exe
c:windowssystem32WindowsUpdateElevatedInstaller.exe
c:windowssystem32WSReset.exe
c:windowssystem32wusa.exe
从以上筛选出满足二、三条件的exe,这里首先以 ComputerDefaults.exe为例,它是计算机默认程序应用程序,用于设置Windows系统的默认程序。利用方法跟下面第3点类似,更鉴于太多师傅都研究透了,这里就不多赘述了。
WSReset.exe 是一个故障排除工具,用于重置或清除 Windows 应用商店,而无需更改帐户设置或删除已安装的应用程序,功能为打开 Windows 商店应用并清除Windows商店缓存。
它能BypassUAC,在启动过程中,wsreset.exe 会检查注册表值 :HKCUSoftwareClassesAppX82a6gwre4fdg3bt635tn5ctqjf8msdd2Shellopencommand 以查找要运行的命令。二进制文件将作为高完整性进程执行,而不会向用户显示 UAC 提示。
a.直接在其注册表地址目录shellopencommand默认字符串值中写入代码;
b.删除原其注册表地址目录再新建项,观察在进程中是否回去DelegateExecute ,同时也修改其默认字符串值。
但是发现无法执行代码,还引发Defender的警告:
为此,不得不转变思路,开始思考文件属性,经过查阅微软官方资料可知用户特定的设置优先于默认设置,而当前用户可以写入这个值,则可以使用powershell来实现poc。也有大佬开发好的自动化工具,有兴趣的师傅们请参考项目:
Fodhelper.exe 是 Windows 默认可执行文件之一,负责管理 Windows 可选功能,包括其他语言、默认未安装的应用程序或其他操作系统特性。在Windows 操作系统是中受信任的二进制文件,在大多数 UAC 设置下,它允许提升权限而无需 UAC 提示Windows 中只会显示“可选功能”窗口。Fodhelper 没有大量可用信息,但二进制文件会检查特定的注册表项,并出于任何合法原因执行其中的任何指令。
先用Procmon筛选一下,然后发现键值校对ShellOpencommand,如图所示:
在注册表路径添加对应的项:HKCUSoftwareClassesms-settingsShellOpencommand 。回到Process:
通过对比发现程序会去寻找DelegateExecute,由于Result显示的是NAME NOT FOUND,可以认为程序会去查询 HKCUSoftwareClassesms-settingsShellOpencommand 路径下的注册表,然后再去查询 HKCUSoftwareClassesms-settingsShellOpencommandDelegateExecute 是否存在,那么在这里创建一个DelegateExecute的键值对,默认字符串值更改为相应的代码,并执行fodhelper.exe:
以上基于(win32目录下)Bypass挖掘的白名单程序,还有其他系统目录下的UAC程序待发掘,应掌握其原理,可以去创造属于自己的独家BypassUAC方法,其应用场景广泛,可以应用于权限提升、权限维持和免杀对抗等。虽然UAC以提升权限的方式保护系统免受未授权访问,但这也为攻击者提供了可能的利用路径。通过挖掘和利用UAC白名单,攻击者可以绕过安全机制,增强其在目标系统的控制能力。为了防止这些风险,用户和系统管理员应定期审查这些白名单并采取适当的防御措施。
原文始发于微信公众号(白帽攻防):浅谈挖掘UAC白名单以及利用
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
http://cn-sec.com/archives/3196910.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论