红队本地权限提升-“可写SYSTEM路径权限提升,第一部分
字数 1653 2025-08-24 10:10:13
Windows本地权限提升:可写SYSTEM路径权限利用指南
概述
本技术文档详细介绍了Windows系统中由于可写SYSTEM路径配置错误导致的本地权限提升漏洞。这种漏洞在具有成熟安全程序的组织中普遍存在,且利用过程不易被常见的端点和网络监控产品检测到。
漏洞原理
可写路径问题的根源
- 系统路径环境变量:当系统管理员或应用程序安装程序修改系统路径环境变量,使其包含非特权用户可写入的目录时,会产生此漏洞
- 典型场景:应用程序安装程序在"Program Files"等适当目录之外安装应用程序,并修改系统路径指向该目录
- 权限继承:创建的目录从父目录继承危险权限
权限差异示例
- C:\根目录:
- "Authenticated Users"组具有创建文件和文件夹的权限
- 权限是可继承的
- C:\Program Files目录:
- 默认不包含上述权限
- 新建文件夹默认防止非特权用户写入
漏洞利用方法
基本利用条件
- 识别以NT AUTHORITY\SYSTEM运行的服务
- 该服务尝试加载不存在的DLL或可执行文件
- 非特权用户可以触发此操作而无需系统重启
具体利用技术
1. NetMan服务利用
- 发现者:Clément Labro
- 特点:
- 通过公开的COM接口与非特权用户交互
- 尝试加载"wlanapi.dll"(Windows Server)或"wlanhlp.dll"(Windows Server 2012 R2)
- 利用步骤:
- 将恶意DLL放置到可写路径目录
- 使用COM接口枚举网络适配器触发DLL加载
2. Windows任务计划程序利用
- 发现者:Gregory Draperi
- 特点:
- 服务启动时尝试加载WptsExtensions.dll
- 需要系统重启才能触发
- 利用步骤:
- 将恶意DLL放置到可写路径目录
- 等待或触发系统重启
3. IKEEXT服务利用
- 特点:
- 尝试加载"wlbsctrl.dll"
- 微软已部分修复(使用LOAD_LIBRARY_SEARCH_SYSTEM32标志)
- 仍可用于横向移动和持久性
4. 替代利用技术(通过SeImpersonatePrivilege)
- 适用服务:以NT AUTHORITY\NETWORK SERVICE或LOCAL SERVICE运行的服务
- 技术要点:
- 创建命名管道
- 诱导高特权服务访问管道以模拟客户端
- 利用模拟令牌获取SYSTEM权限
- 相关工具:
- PrintSpoofer(Clément Labro开发)
操作安全考虑
-
避免直接修改管理员组:
- 传统PoC会添加用户到管理员组,但会生成日志
- 更隐蔽的方法是在特权服务上下文中加载远程管理工具(如Cobalt Strike beacon)
-
DLL加载注意事项:
- 避免在DllMain中直接调用反射式加载器(会导致死锁)
- 应等待服务调用DLL的导出函数后再执行操作
-
目标系统选择:
- 多用户系统(如Citrix)是理想目标
- 可通过SOCKS代理Citrix接收器桌面应用程序绕过MFA
防御与修复
整改措施
-
权限修正:
- 修改可写目录的权限,移除非特权用户的写入权限
-
应用程序修复:
- 向应用程序供应商报告路径修改问题
- 示例:CVE-2020-15264(Boxstarter应用程序的路径修改问题)
-
架构建议:
- 避免单系统多用户设计模式
- 在虚拟机级别而非操作系统级别实施安全边界
监控建议
- 监控系统路径环境变量的修改
- 监控非标准目录中的DLL加载行为
- 特别关注"Program Files"外的应用程序安装
参考资源
总结
可写SYSTEM路径权限提升是一种在成熟环境中常见且可靠的本地提权方法。红队操作人员应重点关注多用户系统(如Citrix),并注意操作安全性。防御方应定期审核系统路径配置和目录权限,特别是第三方应用程序安装后的系统状态。