CVE-2024-49385 BlueHammer:Windows Defender 提权漏洞全景导读(读懂 2024 最重磅 PoC)
【免费下载链接】BlueHammerRepository hosting the bluehammer vulnerability项目地址: https://gitcode.com/gh_mirrors/bl/BlueHammer
BlueHammer(CVE-2024-49385)是针对Windows Defender 提权漏洞的公开 PoC 项目:任何普通用户都无需管理员权限,只需等待一次 Defender 病毒库自动更新,就能把系统最高权限(SYSTEM)抓在手里。本仓库是研究该漏洞最完整的公开代码样本,本文将从零基础视角带你读懂它的完整攻击链。🛡️
一、30 秒了解:BlueHammer 是什么?
| 关键信息 | 内容 |
|---|---|
| 漏洞编号 | CVE-2024-49385 |
| 受影响组件 | Microsoft Defender Antivirus(MsMpEng.exe 签名更新流程) |
| 攻击效果 | 普通用户 → 本地管理员 → SYSTEM 提权 |
| 前置条件 | 无需管理员、无需特殊软件,仅需系统正常联网并接收 Defender 更新 |
| 项目性质 | 漏洞 PoC(概念验证)代码仓库 |
项目 README.md 只留下了一段耐人寻味的 PGP 签名留言,大意是在质疑厂商明知风险却仍然这样设计——这也侧面说明该漏洞源于Windows Defender 更新机制本身的设计缺陷,而非某个偶发 Bug。
⚠️ 提示:本仓库是漏洞研究用途的 PoC,普通用户只需了解其原理用于防御;切勿在真实生产系统上运行利用代码。
二、漏洞核心:为什么"杀毒软件"反而成了提权跳板?
正常情况下,Defender 以SYSTEM 权限运行并负责"保护"系统,而 SAM 文件(存储所有用户密码哈希的数据库,位于C:\Windows\System32\Config\SAM)被系统严格保护,普通用户根本无法读取。
BlueHammer 的巧妙之处在于:它不攻击 Defender,而是"借用" Defender 的手。
🧠 一句话原理:Defender 更新病毒库时,会按外部指定的路径去创建/写入文件。攻击者通过对象管理器符号链接(Object Manager Symbolic Link)把这个路径"偷换"成卷影副本中的 SAM 文件,让 SYSTEM 权限的 Defender 替自己打开并泄露了 SAM——这就是本漏洞的本质:路径遍历 + 符号链接重定向导致的权限提升。
三、完整攻击链:5 个阶段逐步拆解 🧩
以下是 FunnyApp.cpp 中wmain主流程的通俗版还原:
阶段 1:蹲守一次 Defender 病毒库更新
程序通过 Windows Update 组件轮询是否存在 "Microsoft Defender Antivirus + Definition Updates" 类别的更新(见 FunnyApp.cpp 的CheckForWDUpdates)。没有更新?每 30 秒重试一次,直到出现为止。
阶段 2:下载官方真实更新包
找到更新后,程序从微软官方渠道下载真实的病毒库更新程序,从其资源段中解出update.cab并展开(FunnyApp.cpp 的GetUpdateFiles)。使用官方真实文件是为了让后续更新流程在 Defender 眼中"完全正常",不易触发异常检测。
阶段 3:冻结 Defender + 创建卷影副本(VSS)
这是整个 PoC 最有工程含量的部分:
- 写入一个测试文件(EICAR 字符串)引诱 Defender 开始活动(FunnyApp.cpp
TriggerWDForVS); - 注册 Cloud Files 同步根(
CfRegisterSyncRoot),当 Defender 访问时触发回调(FunnyApp.cppFreezeVSS); - 用oplock(独占锁)+ 卷影副本快照的组合,把 Defender 短暂"冻住",并锁定一个刚创建的卷影副本——其中的 SAM 文件此时无人占用、可被 SYSTEM 读取。
阶段 4:RPC 调用 + 符号链接偷换路径(漏洞触发点)⭐
这是 CVE-2024-49385 的核心。PoC 调用 Defender 的内部 RPC 接口:
- 接口 UUID:
c503f532-443a-4c69-8300-ccd1fbdb3839,端点IMpService77BDAF73-B396-481F-9042-AD358843EC24 - 调用函数:
ServerMpUpdateEngineSignature(FunnyApp.cppCallWD) - 传入参数是一个对象管理器命名空间路径,其中包含攻击者创建的符号链接
Defender 收到请求后,会以 SYSTEM 身份跟随符号链接去"创建新定义更新目录",而攻击者已把链接目标指向卷影副本\Windows\System32\Config\SAM。结果:SYSTEM 进程替攻击者打开了 SAM,且文件句柄被转储出来(FunnyApp.cpp 主利用循环)。
逆向得到的完整接口定义见 windefend.idl,MIDL 自动生成的客户端/服务端存根分别位于 windefend_c.c 和 windefend_s.c。
阶段 5:解密 SAM → 改密码 → 获得 SYSTEM
拿到 SAM 句柄后,PoC 在用户态完成了传统"离线破解"的全部动作(FunnyApp.cpp SAM 处理段):
- 从注册表取出 LSABoot Key(
GetLSASecretKey); - 用 AES + DES 层层解密,还原每个用户的NTLM 密码哈希;
- 通过
samlib.dll把任意一个管理员账号的密码临时改为已知值(FunnyApp.cppChangeUserPassword); - 用该账号登录,若为管理员则伪造 SYSTEM 令牌、创建服务,把命令行控制台直接开在攻击者的桌面会话里(FunnyApp.cpp);
- 事后还会把密码改回去,做到"无痕"。
四、仓库文件导读:如何系统地读这份 PoC 📚
| 文件 | 作用 | 阅读建议 |
|---|---|---|
| FunnyApp.cpp | PoC 主程序(3313 行),含全部攻击逻辑 | 从wmain(L2864)入手,按注释分区读 |
| windefend.idl | 逆向出的 Defender 私有 RPC 接口定义 | 了解漏洞接口的原始形态 |
| windefend_c.c | MIDL 生成的 RPC 客户端存根 | 重点看NdrClientCall2对应 42 号过程 |
| windefend_s.c | MIDL 生成的 RPC 服务端存根 | 对比理解消息如何被 Defender 处理 |
| windefend_h.h | RPC 接口头文件 | 找到Proc42_ServerMpUpdateEngineSignature(L1356) |
| offreg.h | 离线读取注册表 Hive 的接口(OR 系列 API) | 理解 SAM/SYSTEM 解密如何在线完成 |
| FunnyApp.sln / FunnyApp.vcxproj | Visual Studio 工程文件 | 用 VS 打开可逐函数调试阅读 |
🔍 阅读路线建议:README.md(背景)→wmain主流程 →CallWD(漏洞触发)→DoSpawnShellAsAllUsers(后利用)→windefend.idl(接口细节)。
五、为什么这个漏洞"最重磅"?🔥
- 零门槛:不需要管理员、不需要 UAC 弹窗、不需要其他漏洞做前置——一台正常联网、开着 Defender 的 Windows 电脑就是目标;
- 高隐蔽:全部行为"寄生"在官方更新流程中,文件来自微软官方渠道,杀毒软件很难自我检测;
- 影响面大:Windows 10/11 上 Defender 默认开启,企业办公终端普遍中招;
- 微软已确认修复:该漏洞在随后的 Windows 安全更新中修补。如果你的系统长期未更新,风险极高——这正是"保持系统自动更新"价值的最有力例证。
六、普通用户与运维的防御清单 ✅
- 立即检查:确认 Windows 更新为最新,尤其安装 Defender 相关安全补丁;
- 确认状态:在 Windows 安全中心查看病毒与威胁防护的"最新更新"时间;
- 企业加固:对核心服务器启用 Defender 的Tamper Protection(篡改保护),并限制普通账号访问
C:\ProgramData\Microsoft\Windows Defender目录的监听权限; - 最小暴露:非必要不关闭 Defender 自动更新——讽刺的是,正是"及时更新"同时带来了防护与修复;
- 监控审计:关注事件日志中异常的卷影副本创建(VSS 活动)与
MsMpEng.exe非预期文件操作。
七、写在最后
BlueHammer 是 2024 年漏洞研究领域的标志性作品之一:它没有复杂的内存破坏,却用最"正统"的 Windows 机制(符号链接、卷影副本、oplock、RPC)完成了一次教科书级的提权。读懂它,你收获的不只是一个 CVE,更是对Windows 权限边界与对象管理器命名空间的深刻理解。🚀
免责声明:本文仅作安全研究与防御参考。利用漏洞攻击他人系统属于违法行为,请务必遵守当地法律法规。
【免费下载链接】BlueHammerRepository hosting the bluehammer vulnerability项目地址: https://gitcode.com/gh_mirrors/bl/BlueHammer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考