DriverJack 是一款旨在利用鲜为人知的 NTFS 技术加载有漏洞驱动程序的工具。这些方法通过劫持现有服务绕过系统上驱动服务的注册,并且还伪造驱动加载事件中显示的镜像路径。为进一步隐藏有漏洞驱动的存在,该攻击还利用了模拟文件系统只读绕过,在加载前替换已挂载 ISO 上的驱动文件内容。
DriverJack 利用了将挂载在模拟文件系统上的文件重新映射到读写页以覆盖其内容的可能性。此只读绕过在 IoCdfsLib 中实现。
一旦 ISO 被挂载,攻击通过选择可启动或停止的服务驱动程序,或者可触发的驱动程序进行,除非配置错误,否则需要管理员权限。
ISO 挂载与驱动程序选择
劫持驱动程序路径
此技术利用安装程序能够直接访问 C:\Windows\System32\drivers 目录的能力,从而允许在其中放置恶意符号链接。操作系统优先处理该符号链接,导致服务重启时加载恶意驱动程序。
关键步骤:
NtLoadDriver 函数规范化符号链接的 NT 路径。此方法与 Secret Club 黑客组织的 jonasLyk 合作开发,涉及重定向 \Device\BootDevice NT 符号链接(驱动二进制文件加载路径的一部分)。这使得在系统中隐藏 rootkit 成为可能。
步骤:
BootDevice 符号链接目标。BootDevice 符号链接,使其指向已挂载的 ISO。BootDevice 符号链接目标。此方法受到 unDefender 项目中用于禁用 Windows Defender 服务和驱动程序的技术启发。加载驱动事件仍将显示正在加载的驱动镜像的实际路径,指向 ISO 挂载点。
尽管广为人知,但由于可能导致系统不稳定,此技术很少被使用。它涉及临时更改分配给 BootPartition 的驱动器号,欺骗驱动加载进程访问不同的驱动器。
当与之前解释的 NT 符号链接滥用结合时,此技术可以完全伪装正在加载的驱动程序路径,从而绕过 SysMon 和其他监控工具的检测。
DriverJack 展示了另一种非常规的易受攻击驱动程序加载方式,该方式利用了 CDFS 模拟文件系统和鲜为人知的 NTFS 符号链接属性。
本项目采用 MIT 许可证授权 - 详见 LICENSE 文件。