TDL(Turla驱动加载器)[color=var(--theme-link)]用于绕过Windows x64驱动程序签名强制执行的驱动加载器 更多详情见: [color=var(--theme-link)]系统要求与限制- x64架构的Windows 7/8/8.1/10。
- TDL仅设计用于x64 Windows,不支持Vista是因为其已过时。
- 需要管理员权限。
- 加载的驱动必须特别设计以“无驱动”方式运行。
- 不支持目标驱动的SEH(结构化异常处理)。
- 不支持卸载驱动。
- 只解决ntoskrnl进口,其他一切由用户自行负责。
- 提供了示例假驱动。
使用风险自负。某些懒惰的杀毒软件可能会将此加载器标记为恶意软件。 [color=var(--theme-link)]DSEFix和TDL之间的区别尽管DSEFix和TDL都利用了驱动漏洞,但它们在使用方法上完全不同。 - DSEFix通过修改名为g_CiEnabled(Vista/7,ntoskrnl.exe)和/或g_CiOptions(8+,CI.DLL)的内核变量来工作。DSEFix的主要优点是简单——关闭DSE,加载你的驱动(或修补过的),不需要其他操作。主要缺点是,在现代版本的Windows(8+)中,g_CiOptions变量受到PatchGuard(KPP)保护,这意味着DSEFix可能导致蓝屏。
- TDL不会篡改任何内核变量,使其对PatchGuard友好。它使用小型shellcode映射你的特定设计驱动到内核模式,而不涉及Windows加载器(因此不会触发DSE的任何部分)并执行它。这是TDL的主要优势——非侵入性的DSE绕过。然而,也存在许多缺点——首要的是,你的驱动必须特别创建以“无驱动”方式运行,这意味着你不能加载任意驱动,只能加载特别设计的。你的驱动将以可执行代码缓冲区的形式存在于内核模式,不会链接到PsLoadedModuleList,并会有其他限制。不过,这个代码可以在内核模式下运行,用户模式的应用程序可以与其通信。当然,如果它们彼此不冲突,你可以加载多个驱动。
[color=var(--theme-link)]工作原理TDL采用WinNT/Turla的VirtualBox内核模式exploit技术,在内核内存中写入代码并执行该代码。TDL使用自定义引导shellcode映射你的特殊设计驱动并调用其入口点(DriverEntry),请注意,DriverEntry参数将是无效的,不应使用。特制驱动的示例包括DummyDrv和DummyDrv2。你的DriverEntry将在Windows 10 RS1及之前版本的IRQL PASSIVE_LEVEL级别运行。从Windows 10 RS2开始,你的DriverEntry代码将在IRQL DISPATCH_LEVEL级别运行。 [color=var(--theme-link)]编译TDL提供完整源码。 为了从源代码构建,你需要Microsoft Visual Studio 2015 U1及更高版本。对于驱动构建,需要Microsoft Windows Driver Kit 8.1及其以上版本。 [color=var(--theme-link)]指南- 首先为要构建的项目选择Platform ToolSet(项目->属性->常规):
- 对于Visual Studio 2013,选择v120;
- 对于Visual Studio 2015,选择v140;
- 对于Visual Studio 2017,选择v141。
- 对于v140及以上版本,设置目标平台版本(项目->属性->常规):
- 如果是v140,则选择8.1(注意需安装Windows 8.1 SDK);
- 如果是v141,则选择10.0.17763.0(注意需安装Windows 10.0.17763 SDK)。
删除不受支持/不可用的链接器选项/NOCOFFGRPINFO。 [color=var(--theme-link)]废弃说明TDL基于2008年创建的老版Oracle VirtualBox驱动,该驱动并未设计为与最新Windows操作系统版本兼容,可能无法正常工作。由于TDL完全基于这一特定版本的VirtualBox驱动LPE,不建议在最新的Windows版本上使用。请视此存储库为废弃/遗弃项目。唯一的可能更新只针对TDL加载器本身。 [color=var(--theme-link)]作者(c) 2016 - 2019 TDL项目 [color=var(--theme-link)]致谢
|