二进制文件中是否包含BYOVD漏洞

Dr.Binary
list_files
open_ghidra_server
list_segments
list_imports
list_methods
decompile_function
decompile_function
decompile_function_by_address
decompile_function_by_address
list_functions
decompile_function
sandbox_execute
list_strings

结论(先给答案)
是。
这是典型的 RTCore64 内核驱动(\Device\RTCore64 / \DosDevices\RTCore64)。该驱动公开了 IOCTL 接口,任意用户进程都能读写任意内核地址,属于已公开的 BYOVD(Bring-Your-Own-Vulnerable-Driver)漏洞家族,曾被分配 CVE-2019-16098 / CVE-2020-15979 等编号,经常被攻击者用于本地提权与关闭 EDR。

为什么这么判定

  1. 文件身份
    • 导入表全是 ZwOpenSection、MmIsAddressValid、ObReferenceObjectByHandle 等常见驱动 API。
    • .rdata 中存在字符串 “\Device\RTCore64”、“\DosDevices\RTCore64”。
    • 入口函数把 IRP_MJ_DEVICE_CONTROL 等分派例程指向 0x11400(未命名函数),且未设置安全描述符 → 任何用户皆可打开设备并发送 IOCTL。

  2. 关键函数行为(FUN_00011250)
    反编译片段摘录:

    *(uint *)(ulonglong)*param_1 = uVar3;                // 写入任意地址
    *(byte *)(ulonglong)param_1[2] = (byte)param_1[4];   // 同样无检查写
    for (i=0; i<param_1[7]; i++)
        *(byte *)(ulonglong)param_1[2] = *(byte *)((ulonglong)param_1[6]+i);
    

    · param_1 完全来自用户缓冲区(DeviceIoControl 的输入)。
    · 驱动直接把这些字段当作内核地址读 / 写,没有地址验证(MmIsAddressValid 之类也未调用)。
    → 任意地址读写(写-what-where)。

  3. 漏洞利用面
    • 用户态打开 “\\.\RTCore64”,构造特定 IOCTL 结构体即可写任意 4/8 字节到内核,或从任意地址读数据。
    • 可覆写 Token->Privileges、HalDispatchTable、Callback 对象等实现 SYSTEM 提权、内核代码执行或关闭安全产品。
    • 由于该驱动由微软 WHQL 签名,攻击者常用“挂靠”方式绕过驱动签名强制(即 BYOVD 场景)。

  4. 已知公开资料
    • RTCore64.sys 随 MSI Afterburner、EVGA Precision、NZXT CAM 等软件分发。
    • 多篇 POC / Metasploit 模块利用相同 IOCTL 0x9C403C0C / 0x9C40240C 等完成任意读写。
    • 2022 年起多家 APT(BlackByte、AvosLocker、Lapsus$ 等)在实战中携带该驱动完成防护绕过。

风险与处置建议

• 任何拥有普通用户权限的攻击者都能瞬间获得 SYSTEM/Kernel 权限。
• 检查系统或映像中是否存在 RTCore64.sys / RTCore32.sys,并立即删除或更新到厂商新版本(2021-07-16 后的补丁版已限制 IOCTL)。
• 若必须使用相关软件,可在需求结束后停用并移除驱动,或采用微软 HVCI/CI 策略阻止加载易受攻击驱动。
• 安检/EDR 可通过设备名、IOCTL 码、哈希值 03e05814…e1e9 进行 IOC 检测。

因此,该二进制文件确实包含可被 BYOVD 利用的高危漏洞。