8damon/ActiveBreach-Engine

GitHub: 8damon/ActiveBreach-Engine

ActiveBreach-Engine 是一个 Windows 受保护直接与间接系统调用执行框架,通过自建加密 syscall stub 绕过 ntdll.dll hook,在高度插桩环境中安全执行系统调用。

Stars: 48 | Forks: 4

ACTIVEBREACH-ENGINE

受保护的双系统调用执行框架

阅读技术文章

**ActiveBreach-Engine (ABE)** 是一个 Windows 执行能力平台,旨在高度插桩的环境中执行安全、直接的系统调用,保护您的进程免受外部攻击者和进程 hooking 的影响。 **ABE** 提供了一个受控且完全动态的框架来执行系统调用,无需依赖用户模式 API 调用或常驻的 `ntdll.dll` 代码路径,同时保护这些 syscall stub 免遭外部攻击者的劫持或篡改。 本项目作为历史 syscall 研究工具(例如 SysWhispers 和 Hell’s Gate)的后续进阶能力而开发,旨在解决早期设计中的局限性、静态假设以及可检测性问题。 ## 范围 现代调试和插桩工具依赖于 *API hooking* 和 *breakpoints*,观察进程行为最简单的方法可能就是直接在您感兴趣的代码路径上设置断点。在反调试、控制流混淆、间接寻址、代码提升等方面,一直存在着无休止的猫鼠游戏……Activebreach 的核心重点是防止 hook 本身暴露您的程序。 最常见的 API hook 位于 ``ntdll.dll`` 上,这是用户态中的系统调用边界,每个需要系统调用的 API(例如 ``OpenProcess``)最终都会触及它。这当然是放置 hook 的完美位置,幸运的是,这些 ``ntdll.dll`` stub 也极其通用且易于复制。 **ABE** 在此基础上构建了自己的受保护、加密且优化的 stub ring,用于执行安全的系统调用,而不需要任何对 ``ntdll.dll`` 或其他 DLL 的依赖,**ABE** 在运行时假定环境中的所有事物都是恶意的,它使用自己专用的调度线程和多种反调试及保护机制来防止 *您的* 系统调用被拦截。 ![Hooking 示意图](https://raw.githubusercontent.com/8damon/ActiveBreach-Engine/main/Diagram/AB_DIRECT_SYSCALL.png) ## 用途 为了便于集成,**ABE** 提供了三个版本:C、C++ 和 Rust。Rust 是技术上最先进的实现,而 C++ 提供了一个内置调试器。 ### 为什么有三个版本? 主要是出于集成复杂性的考虑。在 C++ 中链接加密库并使用 Windows 内部结构会引入开发摩擦和不必要的复杂性。**ABE** 的目标是易于集成,这意味着没有外部依赖。因此,C 和 C++ 版本以单文件包含头文件 (`.h`) 的形式提供。 Rust 版本包含独家功能,例如编译时加密的 stub 模板、自定义 stub ring 分配器以及 TLS callback。 ## RUST 集成与 FFI Rust SDK 是模块化且可移植的: - 原生 Rust 集成(路径依赖或 crate 依赖) - 通过 `activebreach.dll` 进行 C ABI 集成(运行时加载或导入库链接) - 通过 `activebreach.lib` 进行静态链接 这种 C ABI 接口有意设计为语言无关的,可以被 C/C++、C#、Zig、Nim、Odin、D、Python (`ctypes`/`cffi`) 以及其他支持 FFI 的运行时调用。 `SDK/Rust/target/{debug,release}` 中的构建输出包括: - `libactivebreach.rlib` (Rust 到 Rust) - `activebreach.dll` (动态链接库, C ABI) - `activebreach.dll.lib` (用于 DLL 的 MSVC 导入库) - `activebreach.lib` (静态库) C ABI 头文件: - `SDK/Rust/include/activebreach.h` 导出符号: - `activebreach_launch` - `ab_call` - `ab_violation_count` - `ab_set_violation_handler` - `ab_clear_violation_handler` Windows 上的集成模型: 1. 仅 DLL(使用 `LoadLibrary`/`GetProcAddress` 进行运行时动态加载) 2. DLL + 导入库(使用 `activebreach.dll.lib` 进行隐式链接) 3. 静态库(`activebreach.lib`,此库没有运行时 DLL 依赖) ## 使用说明 参见 [使用概述](./USAGE.md) ## RUST 特性模式 Rust SDK 附带以下 feature flag: - `secure`(默认):stub 页面在静止状态下通过 `PAGE_NOACCESS` 进行保护,并且在获取/修补/执行/释放期间切换保护属性。这以更多的 `VirtualProtect` 转换为代价,减少了内存中明文 stub 的暴露。这适用于希望最大化进程内安全性,并绝对确保其 syscall 不会被篡改的操作人员。 - `stealth`:表示“不使用 `secure`”的标记特性。要在没有保护切换的情况下实际运行,请使用 `--no-default-features` 构建(可选择添加 `--features stealth` 以明确意图)。在此模式下,stub 页面保持可写/可执行状态,减少了切换噪音,但使 stub 在内存中更容易暴露。这适用于希望最大程度减少页面切换可见性的操作人员。 - `long_sleep`:在调度程序中启用空闲销毁路径。在可配置的空闲间隔(默认为 30_000ms)之后,调度程序会丢弃 stub 池和系统调用表,然后阻塞直到有新任务到达。公共 API `ab_set_long_sleep_idle_ms(ms)` 仅在此特性下可用。这适用于开发 **长期存活** 或 **LOTL** 进程,并希望避开内存扫描器的操作人员。 - `ntdll_backend`:优先跳转到已加载且完整的 `ntdll.dll` 系统调用序言(位于 `ntdll` 的 `.text` 中),而不是从 ActiveBreach stub 发出 `syscall`。如果检测到已加载的导出 stub/序言被 hook 或无效,调度程序将回退到直接系统调用 stub。此 backend 中禁用了堆栈欺骗(不会构造合成的返回链)。这适用于希望最小化 EDR 取证并在高度插桩的环境中运行的操作人员。 构建示例: - 默认(推荐的基准配置): - `cargo build` - 偏向隐蔽(无 `secure` 保护切换): - `cargo build --no-default-features --features stealth` - 支持长时间空闲: - `cargo build --features long_sleep` - 完整时优先使用已加载的 NTDLL 序言: - `cargo build --features ntdll_backend` ## License 版权所有 © 2026 TITAN Softwork Solutions 采用 Apache License, Version 2.0(“本协议”)授权,**并附加 Commons Clause License Condition v1.0**。 - 您不得将本软件用于商业目的(如 Commons Clause 中定义的“出售软件”)。 - 完整文本详见 `LICENSE`。 Apache 2.0: Commons Clause 详情:
标签:C/C++, Chrome扩展, Rust, 事务性I/O, 可视化界面, 私有化部署, 端点可见性, 网络流量审计, 通知系统, 防御规避, 高危端口监控