在当今游戏安全领域,内核级反作弊驱动(Kernel Anti-Cheat)一直是把双刃剑。一方面,它能有效遏制作弊行为;另一方面,一旦这些高权限代码存在设计缺陷,便会成为攻击者梦寐以求的 “提权工具”。近日,安全研究者对热门游戏《幻塔》(Tower of Fantasy)的内核驱动 ksophon_x64.sys 进行了深度逆向分析,发现了一个极具讽刺意味的事实:尽管该驱动功能强大、权限极高,却从未在游戏运行时被加载,反而以一种 “僵尸状态” 残留在用户系统中,形同向攻击者敞开大门的 BYOVD(Bring Your Own Vulnerable Driver,自带漏洞驱动)工具包。
机制剖析:四层 “纸糊” 的防护
该驱动注册了名为 \\.\HtAntiCheatDriver 的设备,意图通过内核回调(ObRegisterCallbacks)来保护游戏进程并干扰调试器。然而,其所谓的 “身份验证” 机制在逆向工程视角下形同虚设。
-
DLL 存在性检查:驱动在
IRP_MJ_CREATE时检查调用进程是否加载了特定 DLL(如QmGUI.dll)。绕过方法极其简单 —— 只需将任意 DLL 重命名为该名称即可骗过检查。 -
进程名白名单:代码中硬编码了对
CrashCapture.e(崩溃捕捉程序)的豁免。由于PsGetProcessImageFileName返回的ImageFileName字段仅有 15 字节,strnicmp使用了前缀匹配,导致任何以字母 "C" 开头的进程名都可能通过白名单校验。 -
PE 校验和验证:虽然动态白名单项包含了 PE 校验和比对,但校验和并非密码学哈希,攻击者仅需用十六进制编辑器修改 4 个字节即可伪造。
-
硬编码 "魔数":最核心的笑话在于 IOCTL 接口的认证。驱动仅要求传入一个硬编码的 32 位值 0xFA123456。由于驱动本身未加混淆,研究者可以直接在 IDA 中读取该魔数,这意味着任何程序只要知道这个数字,就能向驱动发送任意指令。
攻击面映射:为何它是完美的武器
尽管该驱动的防护措施聊胜于无,但其暴露出的 IOCTL(I/O 控制)接口 功能却极其强大,堪称一站式攻击工具包。
-
任意进程终结 (IOCTL 0x222040):该接口允许发送一个 PID,驱动会调用
ZwTerminateProcess直接终止目标。这里使用的Zw*前缀函数会强制将PreviousMode设为KernelMode,从而彻底绕过目标进程的安全描述符检查。这意味着不仅普通应用,连安全软件(EDR)甚至受 PPL(受保护进程轻量级)机制保护的系统组件都可被轻易杀死。 -
任意进程保护 (IOCTL 0x222004):攻击者可以利用此接口将任意恶意进程注册为 "受保护进程"。配合驱动自带的句柄回调(
ObRegisterCallbacks),可以 stripping(剥夺)其他进程对该恶意进程的访问权限(如禁止读取内存)。更甚者,驱动还提供了ExEnumHandleTable相关的接口,可以批量注销安全软件已经持有的句柄,使其彻底失去对目标进程的控制能力。
这种 "先杀后护" 的组合拳,正是勒索软件家族(如 Interlock)梦寐以求的功能。更令人担忧的是,由于该驱动已被分配 CVE 编号 CVE-2025-61155,且在野样本中被观测到利用,说明攻击者早已盯上这块肥肉。
工程化缓解与检测清单
鉴于该驱动即使在游戏卸载后仍可能残留,且具备高危利用价值,安全研究人员建议采取以下工程化手段进行检测与清理:
-
主机异常检测 (EDR 侧):
- 设备暴露检测:监控系统是否加载了
\\Device\\HtAntiCheatDriver或\\DosDevices\\HtAntiCheatDriver。若非游戏进程主动加载此驱动,则高度可疑。 - 注册表键值:检查
HKLM\\SYSTEM\\CurrentControlSet\\Services\\KSophon或相关 ImagePath 键值,确认真实存在性。
- 设备暴露检测:监控系统是否加载了
-
终端用户清理指南:
- 该驱动通常位于
C:\\Windows\\System32\\drivers\\ksophon_x64.sys。用户可通过管理员权限手动删除该文件,并在注册表中搜索KSophon相关项进行清理。 - 重启后,系统应不再加载该驱动。
- 该驱动通常位于
-
纵深防御策略 (Hardening):
- WDAC (Windows Defender Application Control):企业环境可通过 WDAC 策略显式拒绝加载名称为
ksophon_x64.sys或签名者为该游戏厂商的驱动程序,即使用户主动运行游戏也不加载,从而彻底封堵该攻击面。
- WDAC (Windows Defender Application Control):企业环境可通过 WDAC 策略显式拒绝加载名称为
结语:过度授权的代价
《幻塔》反作弊驱动案例深刻揭示了一个安全悖论:当一款旨在保护游戏的工具,其自身的安全设计却低劣到 "裸奔" 程度,且最终未被使用时,它便从 "保护者" 沦为了 "攻击者的军火库"。这种 "过度授权却未启用" 的设计哲学,不仅未能保护玩家,反而将整个系统的控制权拱手让人。对于游戏厂商而言,在追求高权限防护的同时,必须建立起同等严格的安全开发周期(SDL),否则每一个看似坚固的内核驱动,都将成为潜伏在用户机器上的定时炸弹。
参考资料:
- Vespalec, S. (2026). Tower of Flaws: Dismantling Tower of Fantasy's Anti-Cheat Driver While Waiting for The Game to Install. Retrieved from vespalec.com.
- CVE-2025-61155 Entry.