Sharp4VerifyNative:通过白名单文件执行.NET反序列化代码绕过防护
字数 1626 2025-08-22 12:22:54

Sharp4VerifyNative:利用白名单文件执行.NET反序列化代码绕过防护

0x01 工具概述

Sharp4VerifyNative.exe(原名VisualUiaVerifyNative.exe)是Microsoft UI Automation框架的一部分,属于微软官方工具,具有以下关键特性:

  • 来源:随Microsoft Windows SDK(Windows Kits)包分发
  • 典型路径Windows Kits\10\bin\10.0.22621.0\x64\UIAVerify\VisualUiaVerifyNative.exe
  • 用途:帮助开发人员验证UI自动化状态
  • 安全特性:带有微软数字签名,被多数杀软视为白名单应用

0x02 依赖组件分析

该工具依赖两个核心DLL文件:

  1. UIAComWrapper.dll

    • 封装UI Automation COM接口
    • 简化与UI Automation元素的交互
    • 使.NET代码能与UI Automation API交互
  2. WUIATestLibrary.dll

    • 提供UI自动化测试专用库函数
    • 支持自动化UI控件的查找、状态验证和操作

0x03 漏洞原理分析

反序列化漏洞点

工具主入口调用MainWindow类,其中ApplicationStateDeserialize方法存在漏洞:

private void ApplicationStateDeserialize() {
    this._configFile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\uiverify.config";
    if (File.Exists(this._configFile)) {
        Stream stream = File.Open(this._configFile, FileMode.Open);
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        this._applicationState = (ApplicationState)binaryFormatter.Deserialize(stream);
        stream.Close();
    }
}

关键问题:

  • %APPDATA%\uiverify.config读取配置文件
  • 使用不安全的BinaryFormatter.Deserialize()方法
  • 无任何验证或安全检查

漏洞利用条件

  1. 攻击者能写入目标用户的%APPDATA%目录
  2. 目标系统运行VisualUiaVerifyNative.exe
  3. 目标.NET环境存在可利用的gadget链

0x04 漏洞利用实战

步骤1:生成恶意序列化Payload

使用ysoserial.net工具生成Payload:

ysoserial.exe -f BinaryFormatter -g TextFormattingRunProperties -o raw -c "notepad" > %APPDATA%\uiverify.config

参数说明:

  • -f BinaryFormatter:指定BinaryFormatter格式
  • -g TextFormattingRunProperties:使用TextFormattingRunProperties gadget链
  • -o raw:输出原始格式
  • -c "notepad":要执行的命令

步骤2:部署Payload

将生成的uiverify.config文件放置到目标用户的AppData目录:

  • 路径:C:\Users\[用户名]\AppData\Roaming\uiverify.config

步骤3:触发执行

当受害者运行VisualUiaVerifyNative.exe时:

  1. 程序自动加载uiverify.config
  2. 执行不安全的反序列化操作
  3. 触发Payload执行指定命令(本例中打开记事本)

0x05 防御建议

针对开发人员

  1. 避免使用BinaryFormatter进行反序列化

  2. 如必须使用,实施严格的类型检查:

    binaryFormatter.Binder = new RestrictiveBinder();
    
  3. 使用更安全的替代方案:

    • XmlSerializer
    • DataContractSerializer
    • Newtonsoft.Json

针对系统管理员

  1. 监控可疑的uiverify.config文件创建
  2. 限制Windows SDK工具的权限
  3. 实施应用白名单策略

针对安全产品

  1. 检测异常的序列化数据模式
  2. 监控VisualUiaVerifyNative.exe的异常行为
  3. 即使对签名程序也实施行为分析

0x06 技术总结

  1. 白名单滥用:利用微软签名工具绕过安全检测
  2. 反序列化漏洞:通过不安全的BinaryFormatter实现RCE
  3. 利用链:依赖.NET框架中的危险gadget(如TextFormattingRunProperties)
  4. 持久性:配置文件位于用户目录,可能被长期利用

此漏洞展示了即使是有签名的官方工具也可能成为攻击媒介,强调了深度防御的重要性。

Sharp4VerifyNative:利用白名单文件执行.NET反序列化代码绕过防护 0x01 工具概述 Sharp4VerifyNative.exe(原名VisualUiaVerifyNative.exe)是Microsoft UI Automation框架的一部分,属于微软官方工具,具有以下关键特性: 来源 :随Microsoft Windows SDK(Windows Kits)包分发 典型路径 : Windows Kits\10\bin\10.0.22621.0\x64\UIAVerify\VisualUiaVerifyNative.exe 用途 :帮助开发人员验证UI自动化状态 安全特性 :带有微软数字签名,被多数杀软视为白名单应用 0x02 依赖组件分析 该工具依赖两个核心DLL文件: UIAComWrapper.dll 封装UI Automation COM接口 简化与UI Automation元素的交互 使.NET代码能与UI Automation API交互 WUIATestLibrary.dll 提供UI自动化测试专用库函数 支持自动化UI控件的查找、状态验证和操作 0x03 漏洞原理分析 反序列化漏洞点 工具主入口调用 MainWindow 类,其中 ApplicationStateDeserialize 方法存在漏洞: 关键问题: 从 %APPDATA%\uiverify.config 读取配置文件 使用不安全的 BinaryFormatter.Deserialize() 方法 无任何验证或安全检查 漏洞利用条件 攻击者能写入目标用户的 %APPDATA% 目录 目标系统运行VisualUiaVerifyNative.exe 目标.NET环境存在可利用的gadget链 0x04 漏洞利用实战 步骤1:生成恶意序列化Payload 使用ysoserial.net工具生成Payload: 参数说明: -f BinaryFormatter :指定BinaryFormatter格式 -g TextFormattingRunProperties :使用TextFormattingRunProperties gadget链 -o raw :输出原始格式 -c "notepad" :要执行的命令 步骤2:部署Payload 将生成的 uiverify.config 文件放置到目标用户的AppData目录: 路径: C:\Users\[用户名]\AppData\Roaming\uiverify.config 步骤3:触发执行 当受害者运行VisualUiaVerifyNative.exe时: 程序自动加载 uiverify.config 执行不安全的反序列化操作 触发Payload执行指定命令(本例中打开记事本) 0x05 防御建议 针对开发人员 避免使用 BinaryFormatter 进行反序列化 如必须使用,实施严格的类型检查: 使用更安全的替代方案: XmlSerializer DataContractSerializer Newtonsoft.Json 针对系统管理员 监控可疑的 uiverify.config 文件创建 限制Windows SDK工具的权限 实施应用白名单策略 针对安全产品 检测异常的序列化数据模式 监控VisualUiaVerifyNative.exe的异常行为 即使对签名程序也实施行为分析 0x06 技术总结 白名单滥用 :利用微软签名工具绕过安全检测 反序列化漏洞 :通过不安全的BinaryFormatter实现RCE 利用链 :依赖.NET框架中的危险gadget(如TextFormattingRunProperties) 持久性 :配置文件位于用户目录,可能被长期利用 此漏洞展示了即使是有签名的官方工具也可能成为攻击媒介,强调了深度防御的重要性。