VAC 内核模式旁路:完全工作的内核模式 VAC 旁路

admin 2024年11月23日00:15:21评论10 views字数 2119阅读7分3秒阅读模式

VAC 内核模式旁路:完全工作的内核模式 VAC 旁路

VAC 内核模式绕过

完全有效的 VAC 内核模式旁路,它利用 SSDT 钩子或 Infinityhook 拦截 VAC 系统调用并最终伪造结果以绕过内存完整性检查。使用此旁路,您可以将未签名的 DLL 加载到游戏内存空间中并根据需要对游戏模块执行修补,它还可以确保 DLL 永远不会被其签名/启发式检查扫描。

工作原理

VAC 在SteamService.exe进程中加载(如果以管理员身份运行,则Steam.exe将是加载它的进程)。

基本上,反作弊是完全外部的,这意味着它利用NtReadVirtualMemory之类的系统调用来读取游戏内存并执行一些检查。因为它是这样设计的,所以我们可以在更高级别(ring-0)拦截这些系统调用并欺骗正在检查/扫描的内容。

Steam.exe、SteamService.exe和cs2.exe被放入一个线程安全列表中,该列表用于钩子中的引用,以便我们知道哪个进程正在调用系统调用以及请求从哪个进程进行查询。

手动映射完成的任何分配也存储在线程安全列表中,该列表在钩子中用作引用,以欺骗来自NtReadVirtualMemory或NtQueryVirtualMemory的任何查询,从而破坏任何可能的签名/启发式检查。

我在NtMapViewOfSection中放置了一个钩子 ,这样我就可以尽快拦截任何正在加载的模块,这意味着我可以创建该模块的副本,重新定位它,然后我可以使用该副本欺骗任何 VAC 查询。

static wchar_t *g_BackupModulesList[] = {L"\bin\win64\client.dll", L"\bin\win64\engine.dll",
                      L"\bin\win64\materialsystem2.dll", L"\bin\win64\inputsystem.dll",
                      L"\bin\win64\rendersystemdx11.dll", L"\bin\win64\rendersystemvulkan.dll",
                      L"\bin\win64\inputsystem.dll", L"\bin\win64\scenesystem.dll"};

该列表目前是硬编码的,不需要从游戏中复制每个加载的模块,只需复制要修补的模块。

因为 Steam 和 VAC 也会进行一些系统查询,例如检查系统是否处于测试模式或调试模式,所以我们也会拦截NtQuerySystemInformation,最终击败任何可能降低信任因素系统的因素。

在调试模式下,使用 CRC32 检查来确保欺骗的结果一致,这基本上意味着我们确保 VAC 确实得到了它“预期”的结果。

用法

Usage: test-driver.exe <operation> <...>
Operations:
    
    test        - Run bypass test
    bypass - Control bypass status
    inject-dll - Inject DLL in game


Options:

    inject-dll <dll-path>

        No additional params.

    bypass
        
        /disable  Disable bypass
        /enable   Enable bypass

描述很简单,我提供这个简单的可执行文件,它可用于控制旁路或在游戏中注入 DLL(使用手动地图)。

加载内核驱动

编译项目并安装内核驱动程序,我建议将 Windows 设置为测试模式,这样就可以加载驱动程序而无需对其进行签名,但如果您愿意,也可以使用您的证书自行对其进行签名。

值得一提的是,SSDT 挂钩方法与 PG 不兼容,因此鼓励使用EfiGuard之类的方法,因为它可以完全禁用 PG,还允许您通过禁用 DSE 来加载任何驱动程序。

对于 Infinityhook 方法,PG 无需做任何事情,只需加载驱动程序即可开始使用。

WPP 追踪

该项目利用 WPP 跟踪进行调试跟踪,如果您希望查看调试输出,则必须在您的机器上设置一个跟踪会话。

tracelog.exe -addautologger VAC -sessionguid #{SESSION_GUID} -flag 0xFF -level 6 -guid #{BBB7063B-B267-4728-A95D-304A8E4E6A89} -kd

最后的问候

这个项目不适合新手使用,我假设你至少对反作弊和恶意软件有一定的了解,才能理解它的工作原理,它更像是一个概念验证和一个展示我技能的个人项目。非常欢迎你查看源代码并为这个项目做出贡献!

致谢

https://github.com/Oxygen1a1/InfinityHookClass https://github.com/everdox/InfinityHook

项目地址

https://github.com/crvvdev/vac-bypass-kernel

原文始发于微信公众号(Ots安全):VAC 内核模式旁路:完全工作的内核模式 VAC 旁路

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月23日00:15:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   VAC 内核模式旁路:完全工作的内核模式 VAC 旁路https://cn-sec.com/archives/3426678.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息