下载到的安装包
执行安装包会连接到:http://cd001.www.duba.net/duba/install/packag ... ll_sem_20251110.dat下载kdb_semrjgj.dll。经检测该文件并非单独运行的普通DLL,而是出现在金山毒霸/ kantivirus / KIS推广安装链中的packet DLL/ 安装执行组件。结合样本行为、公开情报和本地安装包配置来看,kdb_semrjgj.dll通常由不同下载站外壳、伪装安装器或推广安装器释放到临时目录,并通过命令行参数或安装配置进入后续金山安装流程。
流程图
一、下载站“安全下载”安装包行为:1.下载金山捆绑组件
通过3DM等下载站点击“安全下载”后,下载到的安装包运行时会连接到以下地址:
随后下载 kdb_semrjgj.dll
2.下载到的kdb_semrjgj.dll
通过下载得到文件是UPX加壳的金山毒霸签名白文件。
3.加载金山捆绑下载组件
加载Kdb_semrjgj.dll调用对应导出函数InstallEx参数为-tid1:10 -tid2:206 -rs:60003603 -tod1:20 -tod2:402046 -bdvid:auqARj
其中 g_cli_rs / -rs 推广来源、资源包或渠道配置标识。不同外壳安装器携带不同参数后,可驱动同一套金山安装框架下载、释放或安装不同组件,形成“一个安装框架+多种推广入口+不同渠道参数”的捆绑安装模式。
执行完成后删除kdb_semrjgj.dll下载组件。
二、捆绑下载组件kdb_semrjgj.dll分析:1. kdb_semrjgj.dll 内部解包逻辑
自身文件完整映射到内存后面在内存读取overlay。
从当前文件读取对应的数据:
通过 PE->TimeDateStamp做为偏移得到overlay包结构:
定位到包:
包结构:
- struct ZzdPacketTable {
- char magic[4]; // "zzd."
- uint16_t count; // 包数量 = 2
- struct ZzdEntry {
- uint32_t size; // payload 大小
- uint32_t crc32; // CRC32 校验值
- uint8_t payload[]; // 7z 压缩数据
- } entries[];
- };
[color=rgb(51, 102, 153) !important]复制代码
读取代码:
从PE头的TimeDateStamp字段取出一个自定义偏移,用它定位EXE Overlay中的zzd. 数据包头;找到后把偏移推进到zzd. 后面的包表位置。
Packet 提取与校验:
GetPacketDataByIndex负责从EXE Overlay的zzd. 包表中按索引定位数据块。函数首先读取WORD packet_count校验索引范围,然后从第一个entry开始遍历。每个entry由payload_size、crc32和payload三部分组成,遍历时通过payload_size + 8跳到下一个entry。找到目标packet后,函数取出payload指针和大小,并计算payload的CRC32与表中保存值比对。校验通过则返回payload指针和payload_size。
ExtractPacketByIndex先通过GetPacketDataByIndex从EXE Overlay的zzd. 包表中取出并校验指定索引的payload,然后创建7z解压器,将该payload解压到目标目录;
释放了两7z压缩包到对应目录:
"c:\program files (x86)\kingsoft\kingsoft antivirus\" 下的产品包
" C:\Users\19378\AppData\Local\Temp\kantivirus\~e040b1"下安装资源包
2. 产品包释放内容:
由于释放文件较多,这里仅列出主要.exe程序。产品包中包含大量金山毒霸、软件管家、日志、服务、托盘、驱动管理和辅助组件,说明该链路落地的并非单个软件,而是一整套金山组件集合。
对应软件图:
三、驱动辅助更新高权限目录文件在对样本的分析流程中,火绒发现金山捆绑软件在更新安全软件目录里的文件时,使用到了驱动,在高权限目录进行更新。
仔细分析驱动后,发现它可以被普通用户直接调用,向高权限目录进行文件复制,破坏性比较大。
1. 金山组件使用其更新高权限目录
在对kdb_semrjgj.dll捆绑下载组件分析时发现, 相关安装流程中存在使用驱动文件辅助更新高权限目录文件的行为。例如,将 .bak 临时文件更新为正式组件:
源文件(临时备份)
C:\Program Files (x86)\Kingsoft\Kingsoft Antivirus\k2wsprotect64.exe.bak
目标文件(正式组件)
C:\Program Files (x86)\Kingsoft\Kingsoft Antivirus\kwsprotect64.exe
复制源文件: L"c:\program files (x86)\kingsoft\kingsoft antivirus\k2wsprotect64.exe.bak"
复制到:L"c:\program files (x86)\kingsoft\kingsoft antivirus\kwsprotect64.exe "
连接驱动
完成复制:
这意味着该类驱动的正常用途可能是在安装或升级过程中辅助写入高权限目录;但如果设备访问控制不严,也可能被普通权限进程滥用,用于向本不具备写权限的位置复制文件。
2. 金山内核驱动绕过安全软件测试
2.1测试背景
在分析3DM等下载站“安全下载”渠道推广的金山全家桶安装链时,火绒发现其中包含一个具有金山合法数字签名的内核驱动 neorkbsep.sys。该驱动本应用于安装或升级过程中辅助向高权限目录写入文件,但由于未对调用者做有效的权限检查,可被普通权限进程滥用,实现内核态文件复制操作,从而绕过用户态安全软件的自我保护机制。
为进一步评估该驱动的实际威胁范围,火绒安全工程师选取了六款主流安全软件进行写入绕过测试。
2.2 测试方法
测试样本:neorkbsep.sys
测试工具:调用驱动通信接口的 Test.exe(即捆绑软件安装包中的模块)
测试动作:尝试向各安全软件安装目录写入/替换任意文件(如替换软件管家可执行文件)
测试环境:Windows 10/11 64位系统,各安全软件均为默认安装配置,开启全部自保护功能
2.3、测试结果
2.4、安全软件测试流程
火绒写入失败:
360安全:常规情况下,向360等安全软件的目录写入或替换文件会被其自保护机制拒绝。但使用该金山内核驱动,由于它本身带有合法签名且未对调用者做权限检查,能够直接在内核态执行文件复制,绕过用户态的安全防护和自保护。
常规情况下被拒绝
这里我们直接用Test.exe(前面的捆绑软件安装包)替换腾讯软件管家。
成功替换:
执行桌面快捷方式执行的是替换后的程序
这意味着,该驱动一旦被调用,不仅实现了高权限目录写入,还具备了破坏或劫持其他安全产品的能力,显著扩大了潜在危害。这已经超出了“捆绑推广”的范畴,构成了对系统完整性和安全软件可信性的直接威胁。
3.复制驱动分析流程:
经过分析,这个驱动文件可以让普通权限用户向任意位置复制文件。
User通过驱动通信传入复制文件路径和写入文件路径。
函数在内核模式下通过NT原生API实现同步文件复制:先将源路径补全为 \??\ 格式,以只读方式打开源文件并查询其大小和基本属性,接着用这些属性创建或覆盖目标文件,然后通过16 KB分块循环读写完成复制:
CopyDataLoop使用ZwWriteFile进行复制
编写程序使用驱动
复制文件到系统目录 “C:\Windows\System32\
成功复制:
四、鼠标右键菜单注册金山组件1. 加载Kavmenu.dll菜单
KInstaller_Install安装金山组件时调用WriteAntivirusDefaultRegistryFlags加载 Kavmenu.dll鼠标右键菜单模块执行导出DllRegisterServer函数。
2. DllRegisterServer函数分析
2.1 Shell扩展注册与kavmenu64.dll关联
该自注册流程通过获取模块路径、写入CLSID注册表项并配置线程模型,将kavmenu64.dll安装为系统Shell扩展以绑定右键菜单:先通过GetCurrentModuleDirectoryPath获取自身所在目录并拼接成完整路径,接着打开CLSID\{DDEA5705-1BB0-4C03-AC1E-8FF9716A0D51}\InprocServer32键并将该路径写入默认值,同时设置ThreadingModel为Apartment。对应注册表CLSID\{DDEA5705-1BB0-4C03-AC1E-8FF9716A0D51}\InprocServer32下写入kavmenu64.dll的完整路径,完成COM组件注册。
对应注册表CLSID\{DDEA5705-1BB0-4C03-AC1E-8FF9716A0D51}\InprocServer32下写入对应的执行kavmenu64.dll。
2.2通过注册表将kavmenu64.dll注入所有文件类型右键菜单
该右键菜单注册流程通过操作注册表将组件关联至所有文件类型的Shell扩展:先打开HKEY_LOCAL_MACHINE下的Shell Extensions\Approved键并写入值duba_64bit对应的CLSID以通过系统审批,接着在HKCR下的*\ShellEx\ContextMenuHandlers创建子键并写入同一CLSID作为默认值,从而完成对所有文件类型右键菜单的绑定,实现右键触发时自动加载kavmenu64.dll。
右键打开图:
对应注册表:
2.3全场景右键菜单劫持:覆盖桌面、文件夹、驱动器及回收站
该流程进一步将Shell扩展注册至Directory\Background(桌面空白处)、Directory(文件夹)、Drive(驱动器)及回收站CLSID下的ContextMenuHandlers子键,均写入{DDEA5705-1BB0-4C03-AC1E-8FF9716A0D51},实现右键菜单全场景加载。
驱动磁盘右键菜单写入CLSID图:
对应右键功能图:
2.4 提权注册“此电脑”右键菜单
先通过EnableTokenPrivilege获取SeRestorePrivilege和SeBackupPrivilege以绕过系统保护,然后在CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shellex\ContextMenuHandlers下创建子键并写入{DDEA5705-...},将右键菜单扩展注入“此电脑”。
五、App_run静默安装流程分析进入静默安装流程
App_run会执行静默安装与解包后的金山组件安装逻辑。
执行静默安装
1. 解析install.xml安装配置文件
1.1使用到的XML配置
注册表项,组件注册列表,注册服务开始菜单安装文件:
RunSilentInstallWorkflow调用KInstaller_Install执行安装
1.2解析install.xml构建安装上下文
KInstaller_Install 首先调用 LoadInstallerXmlContext 解析 install.xml 生成 KInstallerContext 结构,再由 ParseInstallSection 提取其中的注册表项、服务列表和开始菜单配置,为后续批量静默安装提供完整的任务描述:
LoadInstallerXmlContext解析install.xml文件返回KInstallerContext *ctx
ParseInstallSection解析安装配置文件install.xml
解析XML注册表项,服务列表, 开始菜单加入KInstallerContext *ctx
2. KInstaller_Install开始安装:
2.1 StartInstallServiceThreads启动服务
kxescore 服务注册
从 install.xml 解析 <service> 配置,将 kxescore.exe 注册为系统服务:服务名 kxescore,显示名“Kingsoft Core Service”,启动参数 /service kxescore,服务组 ShellSvcGroup,描述“金山毒霸核心服务”
对应XML服务列表
遍历XML服务列表安装服务
2.2金山组件注册表写入
XML配置
读取reg配置调用虚表函数KExecReg_Run写入
写入注册表:
2.3 通过COM接口生成金山毒霸与卸载程序快捷方式
通过CoCreateInstance创建IShellLinkW COM对象,依次调用SetPath设置目标程序路径(如kismain.exe或uni0nst.exe)、SetIconLocation指定图标、SetArguments写入命令行参数,最终通过IPersistFile::Save将.lnk文件保存至开始菜单目录,完成“金山毒霸”和“卸载金山毒霸”快捷方式的创建。
开始菜单图:
2.4执行日志上报与软件管家预加载
读取XML配置执行
预加载软件管家:
3.KInstaller_RunSoftMgr启动软件官家安装对应软件
KInstaller_Install完成静默安装金山捆绑软件执行KInstaller_RunSoftMgr使用金山软件管家安装对应程序
3.1解析输入命令行:
-tid1:10 -tid2:206 -rs:60003603 -tod1:20 -tod2:402046 -bdvid:auqARj
KInstaller_RunSoftMg函数解析对应的com命令执行软件安装:
BuildSoftMgrCommandLine函数解g_cli_r值使用金山软件管家安装对应软件达到闭环:
3.2 解析参数执行软件管家下载对应的软件:
3.3 通过命令行启动后软件管家下载g_cli_rs对应软件
综上所述,kdb_semrjgj.dll 是金山/毒霸推广安装链中的核心安装组件。该DLL通常由不同的伪装安装器或推广安装器释放到对应目录,并通过安装配置项等参与后续安装流程。安装器通过命令行参数携带不同的渠道标识,从而驱动同一套金山安装框架下载、释放或安装不同组件,形成 “一个安装框架 + 多种推广软件入口 + 不同渠道参数” 的捆绑安装模式。
从 install.xml 的配置来看,金山完整安装链包含以下行为:写入注册表、注册COM组件、注册 kxescore 核心服务、安装 kavlog2.exe 日志组件、预加载 ksoftmgr.exe 软件管家,以及执行 kxetray.exe / kdrvmgr.exe 驱动管理等动作。尤为严重的是,安装链中会调用带有合法签名的内核驱动,该驱动可在内核态直接执行文件复制,绕过安全软件的自保护机制,向系统高权限目录甚至其他安全软件安装目录写入文件,显著扩大了潜在危害。这表明 kdb_semrjgj.dll 所在链条最终落地的并非单个 DLL,而是一套完整的金山全家桶式组件集合。
此次,火绒安全发现的金山系推广框架已越过了正常软件捆绑的底线。其利用合法数字签名的内核驱动获取系统最高权限,绕过所有安全软件防护的行为,本质上已经具备了恶意软件的核心特征。这不仅严重侵犯了用户的知情权、选择权和系统控制权,更留下了致命的安全漏洞:一旦该驱动被恶意攻击者利用,用户的整个系统将彻底失控,个人数据、账号密码乃至财产安全都将面临不可估量的风险。
在此火绒安全提醒广大用户:
1. 仔细识别下载站的 "高速下载"、"安全下载"、"普通下载" 通道标识;
2. 尽量从软件官方网站以及正规应用商店下载安装包;
3. 建议使用具备主动防御能力的安全软件,实时拦截此类静默安装和驱动加载行为;
4. 若发现电脑已被强制安装金山系软件,建议通过控制面板完整卸载,并使用安全软件进行全盘扫描,清除残留的驱动和服务组件。
IOC
C&C:
SHA256:
Tips
多个下载站捆绑渠道
经对 kdb_semrjgj.dll 溯源,发现其已通过多家下载站及金山官网下载渠道,以捆绑组件的方式进行传播安装
这里列出下列几个:
参考内容