红队本地权限提升-“可写SYSTEM路径权限提升,第一部分
字数 1653 2025-08-24 10:10:13

Windows本地权限提升:可写SYSTEM路径权限利用指南

概述

本技术文档详细介绍了Windows系统中由于可写SYSTEM路径配置错误导致的本地权限提升漏洞。这种漏洞在具有成熟安全程序的组织中普遍存在,且利用过程不易被常见的端点和网络监控产品检测到。

漏洞原理

可写路径问题的根源

  • 系统路径环境变量:当系统管理员或应用程序安装程序修改系统路径环境变量,使其包含非特权用户可写入的目录时,会产生此漏洞
  • 典型场景:应用程序安装程序在"Program Files"等适当目录之外安装应用程序,并修改系统路径指向该目录
  • 权限继承:创建的目录从父目录继承危险权限

权限差异示例

  • C:\根目录
    • "Authenticated Users"组具有创建文件和文件夹的权限
    • 权限是可继承的
  • C:\Program Files目录
    • 默认不包含上述权限
    • 新建文件夹默认防止非特权用户写入

漏洞利用方法

基本利用条件

  1. 识别以NT AUTHORITY\SYSTEM运行的服务
  2. 该服务尝试加载不存在的DLL或可执行文件
  3. 非特权用户可以触发此操作而无需系统重启

具体利用技术

1. NetMan服务利用

  • 发现者:Clément Labro
  • 特点
    • 通过公开的COM接口与非特权用户交互
    • 尝试加载"wlanapi.dll"(Windows Server)或"wlanhlp.dll"(Windows Server 2012 R2)
  • 利用步骤
    1. 将恶意DLL放置到可写路径目录
    2. 使用COM接口枚举网络适配器触发DLL加载

2. Windows任务计划程序利用

  • 发现者:Gregory Draperi
  • 特点
    • 服务启动时尝试加载WptsExtensions.dll
    • 需要系统重启才能触发
  • 利用步骤
    1. 将恶意DLL放置到可写路径目录
    2. 等待或触发系统重启

3. IKEEXT服务利用

  • 特点
    • 尝试加载"wlbsctrl.dll"
    • 微软已部分修复(使用LOAD_LIBRARY_SEARCH_SYSTEM32标志)
    • 仍可用于横向移动和持久性

4. 替代利用技术(通过SeImpersonatePrivilege)

  • 适用服务:以NT AUTHORITY\NETWORK SERVICE或LOCAL SERVICE运行的服务
  • 技术要点
    1. 创建命名管道
    2. 诱导高特权服务访问管道以模拟客户端
    3. 利用模拟令牌获取SYSTEM权限
  • 相关工具
    • PrintSpoofer(Clément Labro开发)

操作安全考虑

  1. 避免直接修改管理员组

    • 传统PoC会添加用户到管理员组,但会生成日志
    • 更隐蔽的方法是在特权服务上下文中加载远程管理工具(如Cobalt Strike beacon)
  2. DLL加载注意事项

    • 避免在DllMain中直接调用反射式加载器(会导致死锁)
    • 应等待服务调用DLL的导出函数后再执行操作
  3. 目标系统选择

    • 多用户系统(如Citrix)是理想目标
    • 可通过SOCKS代理Citrix接收器桌面应用程序绕过MFA

防御与修复

整改措施

  1. 权限修正

    • 修改可写目录的权限,移除非特权用户的写入权限
  2. 应用程序修复

    • 向应用程序供应商报告路径修改问题
    • 示例:CVE-2020-15264(Boxstarter应用程序的路径修改问题)
  3. 架构建议

    • 避免单系统多用户设计模式
    • 在虚拟机级别而非操作系统级别实施安全边界

监控建议

  1. 监控系统路径环境变量的修改
  2. 监控非标准目录中的DLL加载行为
  3. 特别关注"Program Files"外的应用程序安装

参考资源

  1. NetMan服务DLL劫持研究
  2. Windows传真服务研究
  3. PrintSpoofer工具
  4. CVE-2020-15264详情

总结

可写SYSTEM路径权限提升是一种在成熟环境中常见且可靠的本地提权方法。红队操作人员应重点关注多用户系统(如Citrix),并注意操作安全性。防御方应定期审核系统路径配置和目录权限,特别是第三方应用程序安装后的系统状态。

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"外的应用程序安装 参考资源 NetMan服务DLL劫持研究 Windows传真服务研究 PrintSpoofer工具 CVE-2020-15264详情 总结 可写SYSTEM路径权限提升是一种在成熟环境中常见且可靠的本地提权方法。红队操作人员应重点关注多用户系统(如Citrix),并注意操作安全性。防御方应定期审核系统路径配置和目录权限,特别是第三方应用程序安装后的系统状态。