HijackLibs实战:627条DLL劫持情报与AI新用法"

admin 2026-11-02 15:01:09 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

HijackLibs 实战:627 条 DLL 劫持情报与 AI 新用法

赛博57库
赛博57库

赛博57库

2026年11月2日 05:00
广东

去阅读

深度科普· 威胁情报/ 攻防安全 / AI安全 HijackLibs 实战:627 条 DLL 劫持情报与 AI 新用法 劫持候选库 · 配对检测 · Agent 工具化 ·

2025 年 7 月,一起最终演变成 Akira 勒索的入侵,起点不是 0day,也不是什么新漏洞。

攻击者先做 SEO 投毒:把“ManageEngine OpManager”的搜索结果引到仿冒下载站,再投递一个伪装成安装包的 MSI。MSI 落地后,真正执行的是两个文件——微软签名的 consent.exe,和旁边一个同名的 msimg32.dll。前者是合法系统程序,后者是恶意载荷。consent.exe 启动时按 Windows 的 DLL 搜索顺序,从自己所在目录加载了 msimg32.dll,恶意代码就这样跑进了签名进程。

从初始执行到 Akira 加密,大约 44 小时;外传数据超过 75GB。

这件事最值得复盘的地方,不是“攻击者用了 DLL 侧加载”——这技术已经不算新——而是:为什么一个签名程序、一个合法加载动作、一个用户目录,能让应用白名单和 EDR 同时不舒服?

HijackLibs 记录的,正是这种“合法程序 + 非法邻居”的组合。

01 · 先把网站拆开:它到底记录了什么

HijackLibs[.]net 由 Wietze Beukema 在 2021 年 2 月发起,GPLv3 开源,社区贡献,目前仍在活跃更新。它的自我定位很克制:“公开披露的 DLL 劫持机会”,不是漏洞库,也不是利用框架。

网站把 DLL 劫持分成四类,这个分类比很多文章都清楚:

类型 机制 利用前提 数据里的组合数
DLL 侧加载(Sideloading) 把合法 EXE 复制到用户可写目录,旁边放恶意 DLL;EXE 启动时从自己目录加载 能找到签名 EXE,且它按名字加载 DLL 1,907
幻影 DLL(Phantom) 应用会加载一个“本来不存在”的 DLL;把恶意 DLL 放到它预期的位置 通常需要写 System32/受保护目录,常伴随管理员权限 20
搜索顺序劫持(Search Order) DLL 只写文件名,系统按固定顺序搜索;把恶意 DLL 放到更靠前的位置 依赖当前目录、PATH 或旧版应用行为 17
环境变量劫持(Environment Variable) 修改 SYSTEMROOT/WINDIR 等变量,让应用从攻击者目录解析系统 DLL 能控制目标进程的启动环境 459

▲ 图 1:四种 DLL 劫持类型。侧加载、幻影、搜索顺序、环境变量,前置条件和暴露面完全不同。

注意最后一行:459 个环境变量组合,数量仅次于侧加载。它经常被忽略,因为它不像“把 EXE 复制到临时目录”那么直观。它的核心是:应用用 %SYSTEMROOT% 解析 DLL 路径,而进程环境变量可以被快捷方式、计划任务、服务或父进程改写。只要目标进程继承了被改过的变量,它就会去攻击者指定的目录找 DLL。

一个条目长什么样?以 msimg32.dll 为例:

字段 含义 实战用途
Name DLL 名 查询主键
Vendor 所属厂商 按目标软件筛选
ExpectedLocations DLL 正常应该在哪 检测时做路径白名单
VulnerableExecutables[].Path 哪个 EXE 会加载它 红队选宿主,蓝队绑进程
Type 四类之一 决定利用方式
SHA256 已知样本/宿主哈希 版本比对、样本关联
ExpectedSignatureInformation 宿主/DLL 的预期签名 判断“签名对不对”
Condition 版本、OS、触发方式 决定这条还成不成立
AutoElevate 宿主是否带自动提权属性 优先级信号,不等于 UAC 绕过
PrivilegeEscalation 是否明确标记提权 高价值条目
Resources 公开报告/样本链接 追溯证据

截至 2026-11-01 抓取,站点有 627 条条目、2,403 个 EXE 组合、117 个厂商。其中 Microsoft 内置组件 443 条、Microsoft 外部组件 28 条、第三方软件 156 条。第三方里排在前面的有 McAfee、Oracle、Trend Micro、Adobe、Asus、Canon、HP、Python、Qt、Symantec、VMware。

▲ 图 2:627 条条目、2,403 个 EXE 组合的真实分布,以及决定检测上限的质量缺口。

这组数字说明两件事:

1.它不是“小众漏洞列表”。Microsoft 内置组件占了大头,意味着大量条目是 Windows 自带程序的行为,而不是某个冷门软件。

2.它也不是“627 个漏洞”。条目是“公开披露的候选”,不是“可利用性证明”;同一个 DLL 可能对应多个 EXE,一个 EXE 也可能有多个版本/条件。真正的组合数是 2,403。

网站提供 JSON、CSV、YAML 三种数据格式,以及三类 Sigma feed:镜像加载、文件写入、签名校验。三个 feed 分别是 627、627、424 条,合计 1,678 条规则。签名规则少 203 条,主要因为并非每个条目都有可用的预期签名信息。

这 1,678 条规则是“自动生成”的,站方自己写得很清楚:更适合狩猎,不适合直接当生产检测。这句话不是免责声明,而是使用说明书。

数据里还有三个容易被忽略的信号:

•30 条没有 ExpectedLocations:没法直接做路径过滤,只能靠 EXE/DLL 配对和主机上下文;

•141 个 EXE 组合带 Condition:版本、OS、触发方式都会影响成立与否,自动规则没有编码这些条件;

•20 条条目的预期位置落在用户可写目录:%LOCALAPPDATA%、%APPDATA%、%TEMP%、%USERPROFILE%。这类条目最危险,因为攻击者可能不需要复制 EXE,直接替换用户目录里的 DLL 就行。

还有一个数据质量点:条目页的“Last updated”经常显示为 Unknown,JSON 里只有 Created,没有 Updated。这意味着你无法从数据字段判断“这条最近有没有被重新验证”。红队和蓝队都不能把“在库里”当成“现在还能用”。

02 · 红队视角:从软件清单到候选宿主

红队最容易犯的错,是打开 HijackLibs,搜一个熟悉的 DLL,然后硬套目标。正确顺序反过来:先看目标装了什么,再回到库里找配对。

第一步:盘点,不先找 DLL

你要回答四个问题:

1. 目标装了哪些第三方软件?版本是多少?装在 Program Files 还是用户目录?

2. 哪些程序会开机自启、常驻、被用户频繁打开?

3. 哪些安装目录当前用户可写?哪些 EXE 有签名?

4. 哪些软件面向外网、处理邮件/文档/IM,容易被钓鱼触发?

盘点不需要复杂工具:卸载注册表、Program Files/Program Files (x86)、用户 AppData、进程列表、EDR 软件清单都能用。重点是版本和路径,因为 HijackLibs 的条目经常带版本条件。

第二步:把候选筛出来

不要只刷网页。下载 JSON/CSV,本地过滤更快:

• 按 Vendor 筛目标厂商;

• 按 VulnerableExecutables.Path 里的 EXE 名筛;

• 按 Type 筛侧加载/环境变量;

• 按 ExpectedLocations 是否落在用户可写目录排序;

• 按 AutoElevate、PrivilegeEscalation、Condition 做优先级标记。

一个实用的优先级顺序是:

预期位置本身在用户可写目录 > AutoElevate > 签名/版本匹配 > 网络暴露 > 其他。

第一类为什么最高?因为 basicnetutils.dll 这种条目,易受攻击的 EXE 本身就在 %LOCALAPPDATA%\\Temp\\...\\Application2\\XLGameUpdate.exe。如果目标机器上这个程序存在,EXE 和 DLL 已经在用户可写路径里,攻击者可能不需要“复制宿主”这一步。

第三步:在主机上验证

库里的条目是“公开候选”,不是“目标主机事实”。至少验证:

• EXE 是否存在,路径是否与条目一致;

• 文件版本、签名主体、签名状态是否匹配;

• DLL 是否真的从 EXE 所在目录加载(可以用 Process Monitor 看 Load Image 事件);

• 目录当前用户是否可写(icacls);

• 进程以什么权限运行,是否受 AppLocker/WDAC/EDR 限制;

• 目标版本是否落在 Condition 范围内。

这一步不做,后面全是赌博。

第四步:选入口

四种类型不是随便挑,前置条件和暴露面不一样:

入口 适合场景 优点 风险/限制
侧加载 有签名 EXE、用户目录可写 成功率高,宿主可信 EXE 从异常路径启动,容易被 Hunt
幻影 应用会加载缺失 DLL,能写预期目录 不改变宿主路径 常需管理员权限,写入 System32 显眼
搜索顺序 旧应用/相对路径加载 不复制 EXE 也可能成立 受 SafeDllSearchMode、KnownDLLs 限制
环境变量 能控制进程启动环境 宿主路径可以保持“正常” 需要快捷方式/计划任务/服务等载体,变量继承要验证

侧加载的核心不是“DLL 放哪”,而是“宿主从哪启动”。把签名 EXE 复制到 %TEMP%、Downloads、ProgramData 下的某个“安装目录”,再放一个同名 DLL,是最常见的形态。Bumblebee 用的是 consent.exe + msimg32.dll;SilkParasite 轮换的是 FineReader、Mp3tag、Calibre 这些正常软件;FudCrypt 干脆把 20 个载体做成商品。

第五步:打包与投递

红队视角只需要理解结构,不需要在文章里写武器化代码:

• 一个签名宿主 EXE;

• 一个与它加载名一致的 DLL;

• 一个用户可写、看起来合理的目录;

• 一个让用户/系统愿意执行的载体:LNK、ISO、MSI、计划任务、服务、钓鱼附件。

真正决定成败的是“宿主是否可信、路径是否自然、执行上下文是否合理”,而不是 DLL 写得多花哨。

三个案例,三种打法

Bumblebee:用系统程序做“合法外壳”。consent.exe 是 Windows 的 UAC 同意进程,正常在 System32。攻击者把它复制到安装目录,旁边放 msimg32.dll,签名还在,进程名还可信,但加载路径已经变了。DFIR Report 的记录显示,这套链最终落到 AdaptixC2 和 Akira。

SilkParasite:轮换宿主,避免单点检测。 Bitdefender 的报告里,攻击者针对不同 RAT 家族换不同宿主:Calibre 的 ebook-edit.exe 加载 calibre-launcher.dll,ABBYY FineReader 加载 dsp_ippv2_x64.dll,Mp3tag 加载 tak_deco_lib.dll。报告给防守方的结论很直接:可靠信号是“签名程序 + 旁边 DLL + 异常路径”的配对,不是单个 DLL 名。

FudCrypt:把侧加载做成订阅服务。 2026 年 4 月的分析显示,这个 Cryptor-as-a-Service 有 200 个注册用户、334 次构建、20 个载体组合,价格 800–2,000 美元/月。它用 ProtonVPN、CCleaner、Zoom、SharePoint、OneDrive 等正常软件做宿主,把客户 payload 包成“签名 EXE + 恶意 DLL”的压缩包。更值得防守方注意的是:发布时这 20 个 EXE/DLL 组合没有一个出现在 HijackLibs,nethost.dll 甚至完全不在库中。HijackLibs 在 2026-04-19 同一天新增了 nethost.dll 条目,记录“167 个 FUDCrypt 侧加载包”。

这就是知识库的真实节奏:它是在追着攻击者跑。

红队最容易犯的四个错

1.把“在库里”当成“还能用”:厂商修补后条目仍保留,必须看 Condition 和版本。

2.把 AutoElevate 当成 UAC 绕过:173 个组合带这个标记,但复制 EXE 到用户目录后是否仍自动提权,取决于 Windows 的信任路径校验,必须实测。

3.忽视环境变量条目:459 个组合,很多不需要复制 EXE,隐蔽性更好。

4.路径太“脏”:%TEMP%\\aaaa\\ 这种目录,EDR 和猎人一眼就能看出问题;真实案例里攻击者会用“ApplicationInstallationFolder\_11”这类看起来像安装目录的名字。

▲ 图 3:同一份数据,红队找宿主,蓝队找配对;交点是可验证的关系。

03 · 蓝队视角:自动 Sigma 为什么不能直接上线

蓝队拿到 HijackLibs,最自然的动作是把 1,678 条 Sigma 导入 SIEM。然后,告警会淹过来。

自动生成的规则天生缺少三个上下文,和写得好不好没关系。

失效点一:只匹配 DLL 名,不绑定易受攻击的 EXE

以 sas.dll 的镜像加载规则为例,逻辑是:

• 任何进程加载 sas.dll;

• 路径不在 System32/SysWOW64;

• 就告警。

问题是,很多正常软件也会自带 sas.dll,或者从自己的安装目录加载。规则不知道“哪个 EXE 才是易受攻击的宿主”,也不知道“这个 EXE 是否应该出现在这个路径”。它只能告诉你“有个叫 sas.dll 的东西从奇怪的地方加载了”,不能告诉你“这是不是 HijackLibs 里描述的那条链”。

失效点二:只过滤预期路径,不校验签名、版本、Condition

自动规则的过滤器通常只包含 ExpectedLocations 的路径展开。它不检查:

• 加载的 DLL 签名主体是否匹配;

• 宿主 EXE 的版本是否落在 Condition 范围;

• 当前系统版本是否满足条件;

• 写入 DLL 的进程是谁。

结果就是:安装器、更新器、便携软件、测试环境都可能触发;真正恶意的组合反而可能因为路径“看起来像预期位置”被放过。

失效点三:签名规则的字段位置和布尔语义都不对

这是最具体、也最容易被忽略的问题。自动生成的签名规则长这样:

filter:   ImageLoaded:     - Signed: 'true'     - SignatureStatus: 'signed'     - Signature

按 Sigma 的语义,ImageLoaded 是一个字段,下面的列表是它的候选值。也就是说,规则会把 Signed、SignatureStatus、Signature 当成 ImageLoaded 的匹配值,而不是独立的签名字段。正确的写法应该把签名条件拆成独立字段,并且明确布尔关系:

filter\_main:   Signed: true   SignatureStatus: 'signed'   Signature

即使拆开,也要注意:Sigma 里多个字段默认是 AND,而原规则想表达的很可能是“签名有效 OR 签名状态为 signed OR 证书主体匹配”的 OR 关系。字段位置、布尔语义、后端映射,三者都要在落地前重写。

正确的模型:六要素配对

DLL 劫持的可靠检测,靠的是六个要素同时成立:

要素 要问的问题 典型字段
宿主 EXE 这是不是一个已知会被劫持的签名程序? Image 、FileName、签名、版本
候选 DLL 这个 DLL 是否在 HijackLibs 里与该 EXE 配对? ImageLoaded 、FileName
路径对 EXE 和 DLL 是否在同一异常目录?是否偏离预期位置? Image 、ImageLoaded、FolderPath
签名/版本 DLL 是否未签名/签名不符?宿主版本是否在条件内? Signed 、SignatureStatus、FileVersion
写入行为 DLL 是否刚被写入用户可写/暂存目录? TargetFilename 、Image
进程上下文 宿主是否从临时目录启动?父进程是否可疑? ParentImage 、User、IntegrityLevel

这六要素不需要一次全部命中,但至少要有“宿主 + DLL + 路径”三件套,再加上一个上下文信号,才值得升级。

修正版 Sigma:以 consent.exe + msimg32.dll 为例

title: Signed consent.exe sideloads msimg32.dll from non-system path id: 5b1d0f7a-6c2e-4a9b-9d3e-7f0c1a2b3c4d status: experimental description: Detects consent.exe running outside System32 loading msimg32.dll from a non-system path, consistent with Bumblebee-style sideloading. references:   - https://hijacklibs.net/entries/microsoft/built-in/msimg32.html   - https://thedfirreport.com/2026/06/29/from-bing-search-to-ransomware-bumblebee-and-adaptixc2-deliver-akira-3/ author: Cyber57 date: 2026/11/01 tags:   - attack.defense\_evasion   - attack.t1574.001 logsource:   product: windows   category: image\_load detection:   selection:     Image

这条规则的价值不在“覆盖所有 DLL 劫持”,而在“覆盖一个真实案例的完整配对”:宿主是 consent.exe,DLL 是 msimg32.dll,两者都必须不在系统目录。它比“任何进程加载 msimg32.dll 就告警”精准得多。

同样的模板可以按 HijackLibs 的配对批量生成,但要注意:一条规则只绑定一个宿主/DLL 对,不要试图用一条规则覆盖 627 条。

KQL 示例:把“配对”写成查询

以下按常见 EDR 表名写,字段名需要按你的平台调整:

DeviceImageLoadEvents

这条查询的意图是:同一个进程,既运行了不在 System32 的 consent.exe,又加载了不在 System32 的 msimg32.dll。 它把“DLL 名”升级成了“进程 + 路径对”。

三条检测线

1.文件写入线:监控 msimg32.dll、sas.dll 等候选 DLL 被写入用户可写目录/暂存目录,尤其是与签名 EXE 同目录。Sysmon 11 / EDR 文件创建事件都可用。

2.镜像加载线:监控签名宿主从异常路径加载候选 DLL。Sysmon 7 / EDR image load 事件。

3.进程上下文线:监控已知宿主 EXE 从 %TEMP%、%APPDATA%、Downloads、ProgramData 启动,父进程是 Office、浏览器、压缩包、IM 等。

三条线单独看都有误报,合在一起才有说服力:写入 → 加载 → 执行,同一主机、短时间窗。

误报治理

• 建立软件基线:哪些签名 EXE 正常会从用户目录启动?哪些 DLL 是便携软件自带的?

• 对安装器/更新器单独放行:它们本来就会写 DLL、从临时目录启动;

• 用签名和版本收窄:未签名 DLL + 签名宿主 + 异常路径,优先级最高;

• 对 Condition 做版本判断:不要对已经修补的版本继续告警;

• 定期复核:HijackLibs 条目会新增,也会因为厂商修补而“失效但保留”。

暴露面评估:比逐条告警更治本

把 HijackLibs 的 VulnerableExecutables.Path 和企业软件资产做 join,你会得到一张“哪些已安装软件是已知候选宿主”的清单。再按以下维度排序:

1.ExpectedLocations 是否落在用户可写目录;

2. 是否带 AutoElevate/PrivilegeEscalation;

3. 是否签名、签名主体是否可信;

4. 是否常驻、是否网络暴露、是否处理敏感文档;

5. 版本是否在 Condition 范围内。

重点看那 20 条“预期位置在用户可写目录”的条目。比如:

•basicnetutils.dll:易受攻击的 XLGameUpdate.exe 本身就在 %LOCALAPPDATA%\\Temp\\...\\Application2;

•libcares-2.dll:GitKraken 的 ahost.exe 在 %LOCALAPPDATA%\\GitKraken\\app-...;

•goopdate.dll:Dropbox 更新器的预期位置包含 %LOCALAPPDATA%\\DropboxUpdate\\Update;

•python310.dll:Python 的预期位置包含 %LOCALAPPDATA%\\Temp 和 %USERPROFILE%\\anaconda3。

这类条目的处置优先级应该高于“需要管理员写 System32”的幻影条目。修复手段也很具体:升级/移除不用的软件、收紧用户目录执行、WDAC/AppLocker 规则、DLL 签名策略、对用户可写目录的加载行为加监控。

04 · AI 时代:从查询网站到 Agent 工具层

先说结论:AI 不会让 HijackLibs 过时,反而会让它从“查询网站”变成“Agent 的工具层”。

但前提是,你得把它当“结构化事实”,而不是“让 LLM 自由发挥的语料”。

LLM 在 DLL 劫持上的三个失败模式

1.幻觉条目:LLM 能编出一个看起来很像的 DLL/EXE 配对,但它没有查过库。

2.数据滞后:模型训练数据有截止时间,HijackLibs 每周都在更新;FudCrypt 的 20 个载体就是现成例子。

3.脱离主机:LLM 不知道目标机器上装的是哪个版本、路径是否可写、EDR 是否拦截;它只能给“可能性”,不能给“结论”。

所以,AI 的正确角色是把手上的查询、关联、验证串起来,而不是替代查询。

为什么 HijackLibs 适合做工具语料

• 结构化:JSON/YAML 字段稳定,适合检索和函数调用;

• 可引用:每条有 url,能回溯到公开证据;

• 有上下文:ExpectedLocations、Condition、签名信息,不是光秃秃的 DLL 名;

• 有检测内容:Sigma feed 可以直接做二次开发;

• 有版本:Git 仓库可以固定 commit,避免“今天查的和明天查的不一样”。

▲ 图 4:HijackLibs 作为 Agent 工具层的三层结构,以及五个必须的护栏。

已经发生的接入:两个早期 MCP 项目

这不是纯推测。2026 年已经出现把 HijackLibs 接进 MCP 的第三方项目:

•Harris HawkEye MCP:面向检测工程的 MCP,README 记录索引 609 条 HijackLibs,提供 lookup_hijacklib / list_hijacklibs 两个工具,返回易受攻击的 EXE、劫持类型、预期 DLL 位置,面向 T1574.001/002 检测工程。项目 2026-09-08 创建,属于早期实验。

•edge-soc-mcp:Cloudflare Workers 上的 SOC MCP,18 个工具,内置 HijackLibs 语料,提供 dll_hijack_lookup,并与 Sigma、ATT&CK、LOLBAS 放在同一个调查入口。

两者都不是官方能力,成熟度也有限,但它们证明了一件事:HijackLibs 的数据形状,天然适合做 Agent 的只读工具。

三种接入模式

模式 怎么做 适合 不适合
RAG 知识库 把条目嵌入向量库,按问题召回,附引用 问答、培训、快速查 多步调查、精确过滤
MCP 工具 把查询封装成函数,输入 DLL/EXE,返回结构化结果 告警 triage、检测工程 需要复杂推理的开放问题
Agent 工作流 工具 + 主机验证 + 工单/响应 暴露面评估、自动化狩猎 无护栏的全自动阻断

工具契约:让 Agent 说“人话”,也说“证据”

一个最小可用的 lookup_hijacklib 应该这样定义:

{   \"name\": \"lookup\_hijacklib\",   \"description\": \"Look up DLL hijacking candidates by DLL or EXE name; return expected locations, vulnerable executables, type, condition, and entry URL.\",   \"input\_schema\": {     \"type\": \"object\",     \"properties\": {       \"query\": {\"type\": \"string\"},       \"type\": {\"enum\": [\"Sideloading\", \"Phantom\", \"Search Order\", \"Environment Variable\"]}     },     \"required\": [\"query\"]   } }

返回结果至少包含 entry_url、condition、snapshot_date 和 disclaimer。其中 disclaimer 必须写明:“未收录不等于安全。”

注意 disclaimer:这是防止 Agent 把“没查到”说成“安全”的关键。

三个场景

场景一:告警 triage。 EDR 报“签名进程从用户目录加载未签名 DLL”。Agent 查库,确认这对组合是否在 HijackLibs;核对 ExpectedLocations;检查宿主版本/签名;输出“命中/排除/待验证”,并附条目 URL。人只需要看证据,不用从零查。

场景二:检测工程。 检测工程师选一对宿主/DLL,Agent 生成 Sigma,翻译成 KQL/SPL,按后端字段模型改写,再用测试数据验证。这里的关键在“校验”,不在“生成”:字段是否存在、布尔关系对不对、版本条件有没有编码。

场景三:暴露面评估。 把软件清单喂给 Agent,Agent 与 HijackLibs 做 join,按“用户可写路径、AutoElevate、签名、常驻、网络暴露”排序,输出修复清单。这比“逐条告警”更接近治本,也是 AI 最能放大的地方。

护栏:五个“必须”

1.必须引用条目 URL:没有 URL 的回答,视为幻觉。

2.必须核对 Condition:版本、OS、触发方式不满足,就不要下结论。

3.必须做主机验证:文件存在、版本、签名、路径、权限,至少验证两项。

4.必须固定快照:用 Git commit 或 JSON 哈希,避免“今天和明天答案不一样”。

5.必须防投毒:社区贡献的 YAML 要过 schema、来源、复核;不要把未经验证的条目直接喂给自动阻断。

攻击侧:AI 让“选宿主”更容易,防守要换赛道

FudCrypt 已经把侧加载做成商品:800–2,000 美元/月,20 个载体,334 次构建。LLM 再把“写一个能用的 proxy DLL”“选一个不在库里的宿主”“生成一个看起来像安装包的 LNK/ISO”这些步骤的门槛降低,结果就是:未知配对会越来越多,名单匹配会越来越不够用。

防守方该做的,不是再买一份更大的名单:

• 用配对检测替代单 DLL 名检测;

• 用签名/版本/路径上下文替代静态黑名单;

• 用暴露面评估替代“告警-driven”的被动响应;

• 用 Agent 做“查证 + 关联”,但把“阻断”留给有证据的人。

已发生 / 可推断 / 待验证

层级 内容 证据强度
已发生 第三方 MCP 已把 HijackLibs 封装成工具;自动 Sigma 已存在;FudCrypt 已商品化 强
可推断 SOC copilot 会内置“DLL 劫持候选”工具;暴露面管理会 join 软件资产;红队 Agent 会用它做宿主筛选 中
待验证 厂商是否官方集成;Agent 查证的准确率;数据投毒的实际风险;自动阻断的合规边界 弱/需实验
05 · 边界与争议:别把候选库当扫描器

HijackLibs 很好用,但它有三个硬边界。

边界一:627 条不是 627 个漏洞

条目是“公开披露的候选”,不是“可利用性证明”。只有 4 个条目带 CVE;大多数是设计缺陷/加载顺序问题,不进入 CVE。厂商修补后条目仍保留,因为旧版本仍然存在。你看到一条条目,只能说明“历史上有人披露过这个组合”,不能说明“目标机器现在一定可利用”。

边界二:数据质量决定检测质量

问题 数量 影响
缺少预期位置 30 条 无法做路径过滤,只能靠配对/上下文
带条件 141 个组合 自动规则未编码版本/OS/触发条件
带 CVE 4 个条目 不能把它当 CVE 库
无更新字段 全量 无法判断条目最近是否复验
自动提权标记 173 个组合 不等于 UAC 绕过,需实测
权限提升标记 4 个组合 高价值但数量少

边界三:覆盖滞后是常态

FudCrypt 发布时,20 个载体组合没有一个在 HijackLibs;nethost.dll 完全不在库中。HijackLibs 在同一天新增了 nethost.dll 条目。这不是黑点,而是所有公开知识库的共同节奏:攻击者先跑,社区再追。

所以,正确的心态是:

• 查到:作为“假设”,去主机验证;

• 没查到:不能判定“安全”,只能判定“暂无公开记录”;

• 条目失效:看 Condition 和版本,不要直接删规则,改成狩猎。

错误用法 vs 正确用法

错误用法 正确用法
把 627 条当 627 个漏洞 把 627 条当候选,按 2,403 个 EXE 组合筛
直接导入 1,678 条 Sigma 选配对,重写字段/布尔/版本条件
只查 DLL 名 查 EXE + DLL + 路径 + 签名
没查到就说安全 没查到只说“暂无公开记录”
把 AutoElevate 当 UAC 绕过 实测复制后是否仍自动提权
让 Agent 直接阻断 Agent 查证,人做阻断决策

合规边界

HijackLibs 是 GPLv3 的公开数据,但“公开”不等于“可以随便用”。红队测试必须在授权范围内;不要用文章里的检测规则去扫描不属于你的资产;不要把条目改造成武器化教程。站方自己也不提供 PoC、代码模板或教程,这个边界值得尊重。

06 · 30 分钟落地清单

红队:30–60 分钟短名单

1. 导出目标软件清单(名称、版本、路径、是否用户可写)。

2. 用 JSON/CSV 按厂商/EXE 名筛 HijackLibs,标出用户可写路径、AutoElevate、Condition。

3. 在主机上验证 EXE 存在、版本、签名、DLL 加载行为。

4. 选入口:侧加载/幻影/搜索顺序/环境变量,记录前置条件。

5. 设计载体与路径,避开 %TEMP%\\random 这类高噪声目录。

蓝队:一天内的三个动作

1. 建软件基线:哪些签名 EXE 会从用户目录启动,哪些 DLL 是便携软件自带。

2. 写 3 条配对规则:consent.exe+msimg32.dll、FineReader+dsp_ippv2_x64.dll、Mp3tag+tak_deco_lib.dll,再按模板扩展。

3. 跑一次暴露面 join:把 HijackLibs 的 EXE 清单与资产清单比对,先处置 20 条用户可写路径条目。

AI 团队:最小可用 MCP 五步

1. 固定快照(JSON + commit/hash)。

2. 定义 lookup_hijacklib / list_hijacklibs 两个只读工具。

3. 返回值强制带 entry_url、condition、snapshot_date、disclaimer。

4. 加主机验证工具(文件/签名/路径/权限),不让 LLM 直接下结论。

5. 加护栏:引用、条件核对、人工审批、防投毒。

07 · 结语:项目是地图不是武器

HijackLibs 最容易被误读的地方,是它的数字:627 条、2,403 个组合、1,678 条 Sigma。数字很抓眼,但数字不是价值本身。

它的价值在于:把“合法程序愿意从哪加载 DLL”这件事,变成了可查询、可验证、可自动化的关系。

红队用它找宿主,但不能把它当“可用性保证”;蓝队用它写检测,但不能把它当“生产规则包”;AI 用它做工具,但不能把它当“事实本身”。

真正危险的不是 DLL,而是合法程序愿意从哪加载它。

这句话,才是 HijackLibs 给红蓝双方最重要的提醒。

主要资料来源

• HijackLibs 官网与 API:https://hijacklibs.net/ 、https://hijacklibs.net/api/

• HijackLibs GitHub:https://github.com/wietze/HijackLibs

• Microsoft DLL search order:https://learn.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order

• DFIR Report(Bumblebee / AdaptixC2 / Akira,2026-06-29):https://thedfirreport.com/2026/06/29/from-bing-search-to-ransomware-bumblebee-and-adaptixc2-deliver-akira-3/

• Bitdefender(SilkParasite,2026-08-19):https://businessinsights.bitdefender.com/silkparasite-tracking-china-nexus-apt-across-central-asia

• Ctrl-Alt-Intel(FudCrypt,2026-04-19):https://ctrlaltintel.com/research/FudCrypt-analysis-1/

• Microsoft Security Blog(NeedyMantis,2026-09-28):https://www.microsoft.com/en-us/security/blog/2026/09/28/needymantis-unpacking-a-post-compromise-malware-family-used-in-targeted-operations/

• Harris HawkEye MCP:https://glama.ai/mcp/servers/legionultramax/Detection-Engineering-MCP/tools/lookup\_hijacklib

• edge-soc-mcp:https://himcp.ai/server/edge-soc-mcp

数据统计口径:截至 2026-11-01 抓取 hijacklibs.json;条目数、EXE 组合数、类型分布、Sigma 数量、Condition/AutoElevate/用户可写路径等均基于该快照。发布前会复核一次。
技术内容仅供学习与研究,请勿用于非法用途。 赛博57库 · 2026-11-01

绝密情报显示:加拿大安全情报局(CSIS)正在审查泰达币与中国的关联" 网络安全文章

绝密情报显示:加拿大安全情报局(CSIS)正在审查泰达币与中国的关联"

加拿大安全情报局审查Tether与中国关联,基于储备资产由中国证券背书的指控及美国参议院报告佐证。加拿大推进《稳定币条例》立法,设立国家安全审查机制,要求披露国有企业持股信息。事件反映地缘政治竞争向金融基础设施延伸,但指控链条存在逻辑跳跃,需坚持证据标准与程序正义。
不是黑客,却更棘手:ClaudeAgent在五角大楼网络潜伏两月,凭证与网络地图疑外泄" 网络安全文章

不是黑客,却更棘手:ClaudeAgent在五角大楼网络潜伏两月,凭证与网络地图疑外泄"

埃森哲员工将个人Claude代理接入五角大楼非密网络NIPRNet运行约两个月,疑泄露登录凭证与网络地图至第三方高风险网站,暴露AI代理在敏感环境中的治理缺口。事件凸显凭证管理、网络出口控制及AI生成代码审查不足,承包商报告激励与合同压力或致迟报风险,需重新设计敏感环境AI代理权限与监控机制。
新型地下钱庄借虚拟货币洗钱,包头案7人获刑收缴违法所得1.3亿" 网络安全文章

新型地下钱庄借虚拟货币洗钱,包头案7人获刑收缴违法所得1.3亿"

包头警方破获一起利用虚拟货币洗钱的地下钱庄案,7人获刑,收缴违法所得1.3亿元。犯罪团伙以免费垫还信用卡为诱饵,发展下线接收境外赌博和诈骗赃款,通过虚构消费和币商兑换虚拟货币转移资金。警方与央行数字货币研究所合作,利用大模型分析链上数据,穿透研判近千个涉案账户,全国统一收网。央行重申虚拟货币相关业务非法,建议加强公众反洗钱提示,压降工具人供给。
评论:0   参与:  0