Windows Service Tracing服务漏洞学习
字数 1869 2025-08-10 08:28:47

Windows Service Tracing服务漏洞分析与利用

1. Windows Service Tracing概述

Windows Service Tracing是Windows操作系统中与事件跟踪和日志记录相关的功能模块,最早可追溯到Windows XP系统。该功能允许管理员和开发人员对系统和应用程序的运行进行跟踪和日志记录,用于故障排除、性能监视和分析。

1.1 关键注册表项

任何本地用户都可以通过编辑以下注册表项来配置Service Tracing功能:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing

1.2 关键注册表值

需要重点关注的三个注册表值:

  • EnableFileTracing:启用/禁用跟踪功能
  • FileDirectory:设置输出日志文件的位置
  • MaxFileSize:设置日志文件的最大文件大小

2. CVE-2020-0668漏洞分析

2.1 漏洞原理

该漏洞存在于Service Tracing功能中,通过符号链接的组合,可以将攻击者的文件移动到文件系统上的任意位置。例如,可以将特制的DLL移动到System32文件夹中,从而以SYSTEM权限执行任意代码。

2.2 漏洞复现步骤

  1. 修改注册表项

    • 以RASTAPI为例,修改以下值:
      • EnableFileTracing: 0 → 1
      • FileDirectory: 设置为自定义目录(如C:\LOGS)
      • MaxFileSize: 设置为0x4000
  2. 触发日志记录

    • 使用命令:rasdial VPNTEST test test /PHONEBOOK:C:\Users\user\Desktop\test.pbk
    • 或通过VPN拨号设置触发
  3. 观察日志行为

    • 系统会在指定目录创建RASTAPI.LOG文件
    • 当文件大小超过MaxFileSize时,会:
      • 将.log文件重命名为.old
      • 创建新的.log文件
    • 所有操作都以SYSTEM权限执行

2.3 漏洞利用

  1. 设置符号链接

    \RPC Control\RASTAPI.LOG -> \??\C:\EXPLOIT\FakeDll.dll (owner = current user)
    \RPC Control\RASTAPI.OLD -> \??\C:\Windows\System32\WindowsCoreDeviceInfo.dll
    
  2. 配置注册表

    • FileDirectory = C:\EXPLOIT\mountpoint
    • MaxFileSize = 0x8000 (32,768 bytes)
    • EnableFileTracing = 1
  3. 触发漏洞

    • 通过Windows API中的RasDial函数触发Rasapi
    • 导致DLL被SYSTEM加载

3. CVE-2020-0863漏洞分析

3.1 漏洞原理

该漏洞位于Diagtrack服务的UtcApi_DownloadLatestSettings接口中,利用服务对文件操作的不当处理,可实现任意文件读取。

3.2 关键发现

  1. RPC接口分析

    • 使用Rpcview工具发现Diagtrack暴露的接口
    • 接口UUID: 4c9dbf19-d39e-4bb9-90ee-8f7179b20283
    • 函数原型:
      long DownloadLatestSettings(
        [in] handle_t IDL_handle,
        [in] long arg_1,
        [in] long arg_2
      )
      
  2. 文件操作流程

    • 从目录读取.xml文件:
      C:\Users\user\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_xxxx\LocalState\Tips
      
    • 复制到:
      C:\ProgramData\Microsoft\Diagnosis\SoftLandingStage
      
    • 最后删除所有复制的文件

3.3 漏洞利用

  1. 设置挂载点和符号链接

    C:\Users\user\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_xxxx\LocalState\Tips -> C:\workspace
    \RPC Control\file2.xml -> \??\C:\users\user\desktop\secret.txt
    
  2. 利用Oplock和竞争条件

    • 在目录下放置两个.xml文件
    • 对文件设置Oplock
    • 触发Oplock时切换挂载点到对象目录
    • 利用服务删除文件的时间差完成任意文件读取

4. 相关漏洞CVE-2020-1029

该漏洞与CVE-2020-0863原理相似,涉及函数为UtcApi_StartCustomTrace:

  1. 关键点

    • 处理.wprp(Windows性能记录器配置文件)文件
    • 输出报告后删除文件
    • 同样以SYSTEM权限运行
  2. 利用方式

    • 通过符号链接操作实现任意文件删除

5. 防御建议

  1. 及时安装微软发布的安全更新
  2. 限制普通用户对Service Tracing相关注册表项的修改权限
  3. 监控可疑的文件操作行为,特别是涉及符号链接的操作
  4. 对关键系统目录设置适当的ACL权限

6. 工具推荐

  1. 分析工具

    • RpcView:分析RPC接口
    • Process Monitor:监控系统行为
    • James Forshaw symbolic link testing tools:符号链接测试工具
  2. 调试工具

    • WinDbg
    • IDA Pro

7. 总结

Windows Service Tracing相关漏洞主要利用以下技术点:

  1. 任意本地用户可配置的跟踪功能
  2. SYSTEM权限执行的文件操作
  3. 符号链接滥用
  4. 竞争条件利用
  5. Oplock技术

这些漏洞属于逻辑漏洞,通过精心构造的文件操作链,可以实现权限提升或敏感信息泄露。防御此类漏洞需要从权限控制和行为监控两方面入手。

Windows Service Tracing服务漏洞分析与利用 1. Windows Service Tracing概述 Windows Service Tracing是Windows操作系统中与事件跟踪和日志记录相关的功能模块,最早可追溯到Windows XP系统。该功能允许管理员和开发人员对系统和应用程序的运行进行跟踪和日志记录,用于故障排除、性能监视和分析。 1.1 关键注册表项 任何本地用户都可以通过编辑以下注册表项来配置Service Tracing功能: 1.2 关键注册表值 需要重点关注的三个注册表值: EnableFileTracing :启用/禁用跟踪功能 FileDirectory :设置输出日志文件的位置 MaxFileSize :设置日志文件的最大文件大小 2. CVE-2020-0668漏洞分析 2.1 漏洞原理 该漏洞存在于Service Tracing功能中,通过符号链接的组合,可以将攻击者的文件移动到文件系统上的任意位置。例如,可以将特制的DLL移动到System32文件夹中,从而以SYSTEM权限执行任意代码。 2.2 漏洞复现步骤 修改注册表项 : 以RASTAPI为例,修改以下值: EnableFileTracing: 0 → 1 FileDirectory: 设置为自定义目录(如C:\LOGS) MaxFileSize: 设置为0x4000 触发日志记录 : 使用命令: rasdial VPNTEST test test /PHONEBOOK:C:\Users\user\Desktop\test.pbk 或通过VPN拨号设置触发 观察日志行为 : 系统会在指定目录创建RASTAPI.LOG文件 当文件大小超过MaxFileSize时,会: 将.log文件重命名为.old 创建新的.log文件 所有操作都以SYSTEM权限执行 2.3 漏洞利用 设置符号链接 : 配置注册表 : FileDirectory = C:\EXPLOIT\mountpoint MaxFileSize = 0x8000 (32,768 bytes) EnableFileTracing = 1 触发漏洞 : 通过Windows API中的RasDial函数触发Rasapi 导致DLL被SYSTEM加载 3. CVE-2020-0863漏洞分析 3.1 漏洞原理 该漏洞位于Diagtrack服务的UtcApi_ DownloadLatestSettings接口中,利用服务对文件操作的不当处理,可实现任意文件读取。 3.2 关键发现 RPC接口分析 : 使用Rpcview工具发现Diagtrack暴露的接口 接口UUID: 4c9dbf19-d39e-4bb9-90ee-8f7179b20283 函数原型: 文件操作流程 : 从目录读取.xml文件: 复制到: 最后删除所有复制的文件 3.3 漏洞利用 设置挂载点和符号链接 : 利用Oplock和竞争条件 : 在目录下放置两个.xml文件 对文件设置Oplock 触发Oplock时切换挂载点到对象目录 利用服务删除文件的时间差完成任意文件读取 4. 相关漏洞CVE-2020-1029 该漏洞与CVE-2020-0863原理相似,涉及函数为UtcApi_ StartCustomTrace: 关键点 : 处理.wprp(Windows性能记录器配置文件)文件 输出报告后删除文件 同样以SYSTEM权限运行 利用方式 : 通过符号链接操作实现任意文件删除 5. 防御建议 及时安装微软发布的安全更新 限制普通用户对Service Tracing相关注册表项的修改权限 监控可疑的文件操作行为,特别是涉及符号链接的操作 对关键系统目录设置适当的ACL权限 6. 工具推荐 分析工具 : RpcView:分析RPC接口 Process Monitor:监控系统行为 James Forshaw symbolic link testing tools:符号链接测试工具 调试工具 : WinDbg IDA Pro 7. 总结 Windows Service Tracing相关漏洞主要利用以下技术点: 任意本地用户可配置的跟踪功能 SYSTEM权限执行的文件操作 符号链接滥用 竞争条件利用 Oplock技术 这些漏洞属于逻辑漏洞,通过精心构造的文件操作链,可以实现权限提升或敏感信息泄露。防御此类漏洞需要从权限控制和行为监控两方面入手。