NullGate:实现间接系统调用与内存扫描绕过的新方式

NullGate:实现间接系统调用与内存扫描绕过的新方式

NullGate Library that eases the use of indirect syscalls. Quite interesting AV/EDR bypass as PoC. NullGate 项目地址: https://gitcode.com/gh_mirrors/nu/NullGate

项目介绍

NullGate 是一个开源项目,旨在为使用 Windows 内核 API 提供一种舒适且现代的方法。它采用了间接系统调用(indirect syscalls)的方式,结合了 FreshyCalls 方法的一个变体,以动态获取系统调用号。此外,该项目还引入了一种尚未公开提及的技术,可以绕过 Windows Defender 的内存扫描机制。NullGate 还实现了一个经典的 PoC 进程注入器。

项目技术分析

NullGate 的核心是利用 NTAPI 函数进行间接系统调用。它通过 FreshyCalls 方法动态获取系统调用号,同时引入了一种新的技术来绕过 Windows Defender 的内存扫描。这种方法的核心在于使用 NtAllocateVirtualMemory 函数时,不是直接分配可执行内存,而是先将其设置为 PAGE_NOACCESS,然后在创建挂起的线程后,再写入有效载荷并修改权限,从而绕过内存扫描。

项目的主要功能示例如下:

nullgate::syscalls syscalls;
typedef NTSTATUS NTAPI NtAllocateVirtualMemory(
    _In_ HANDLE ProcessHandle,
    _Inout_ _At_(*BaseAddress, _Readable_bytes_(*RegionSize) _Writable_bytes_(*RegionSize)
                 _Post_readable_byte_size_(*RegionSize)) PVOID *BaseAddress,
    _In_ ULONG_PTR ZeroBits, _Inout_ PSIZE_T RegionSize,
    _In_ ULONG AllocationType, _In_ ULONG PageProtection);

auto status = syscalls.SCall<NtAllocateVirtualMemory>(
      ng::obfuscation::fnv1Const("NtAllocateVirtualMemory"), processHandle,
      &buf, 0, &regionSize, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);

项目技术应用场景

NullGate 的应用场景主要针对需要绕过传统内存扫描技术的高级安全需求,比如在渗透测试、安全研究以及开发需要绕过 Windows Defender 的恶意软件时。它提供了一个更加安全且高效的方式来执行系统调用,避免了直接调用可能引发的检测和拦截。

项目特点

  1. 间接系统调用:通过间接调用 NTAPI 函数,减少了直接调用可能引起的检测。
  2. 动态获取系统调用号:利用 FreshyCalls 方法的一个变体,动态获取系统调用号,增加了调用的灵活性。
  3. 内存扫描绕过:引入了一种新的技术,通过修改内存页面属性和时间上的操作,有效绕过 Windows Defender 的内存扫描。
  4. 内置类型安全:提供了类型安全的接口,用户只需要提供 NT 函数的定义即可调用。
  5. 代码混淆和加密:通过 FNV-1a 哈希算法对函数名称进行混淆,并提供了 XOR 加密和解密功能,以及 Base64 编码和解码功能。
  6. 易于集成:支持 CMake FetchContent,方便集成到其他项目中。

结论

NullGate 提供了一种新的方法和视角来看待系统调用和内存扫描绕过的问题。它的设计和实现不仅展示了高级编程技巧,而且为安全领域的研究和实践提供了一个强大的工具。无论你是安全研究员、渗透测试人员还是恶意软件分析师,NullGate 都可能成为你工具箱中的一个宝贵工具。

NullGate Library that eases the use of indirect syscalls. Quite interesting AV/EDR bypass as PoC. NullGate 项目地址: https://gitcode.com/gh_mirrors/nu/NullGate

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仲羿禹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值