Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Project-Onyx — Advanced EDR Evasion via AI Telemetry Spoofing & WASM Sandboxing. Project Onyx is a PoC Red Team pipeline designed to demonstrate advanced evasion techniques against modern EDR systems. It shifts away from traditional signature-based obfuscation towards behavioral camouflage and strict environmental keying. | Kitploit
工具/GitHubGitHub/x-3306/project-onyx
Reverse EngineeringShellcodeSteganographyCryptographyCommand and ControlLearning & EducationRed TeamingPayload DevelopmentAI Security
GitHubx-3306/project-onyx

Project-Onyx

查看仓库
115161个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →

关于

Advanced EDR Evasion via AI Telemetry Spoofing & WASM Sandboxing. Project Onyx is a PoC Red Team pipeline designed to demonstrate advanced evasion techniques against modern EDR systems. It shifts away from traditional signature-based obfuscation towards behavioral camouflage and strict environmental keying.

分享

Banner

Project Onyx

通过AI遥测欺骗与WASM沙箱实现的先进EDR绕过。Project Onyx 是一个概念验证红队流程,旨在展示针对现代EDR系统的高级规避技术。它从传统的基于签名的混淆转向行为伪装和严格的环境绑定。

本项目是概念验证红队研究,探索一种非常规的多层执行流程。该架构串联了五种不同的技术:AI遥测伪装、硬件绑定环境密钥、ONNX权重隐写、内存WebAssembly沙箱以及通过下行模型更新的死信C2——形成一条完整的功能性投递链。

Project Onyx 并不声称能够绕过生产环境中的EDR系统。它是一个架构草图:每个组件都已实现并在链中功能完整,但每一层都需要专门的研究才能在现实防御中产生意义。Project Onyx 最好被理解为一个结构化的探索起点。 运行时载荷被有意限制为心跳信标,以便在不引入破坏性或后利用行为的情况下检查整个流程。

核心概念 / 更新 = Project Onyx v2

  1. AI诱饵(行为伪装): 现在,Project Onyx 嵌入了来自 Hugging Face ONNX 模型库镜像的合法 SqueezeNet 1.0 ONNX 图像分类模型。在执行 WebAssembly 心跳模块之前,主机使用 Microsoft 的 onnxruntime 重复执行真实的张量推理工作负载。这使得 ONNX 工件成为管道中的活跃部分,而像以前的微型 MLP 那样仅作为装饰性文件。
  2. 环境密钥绑定: 它显著提高了沙箱分析和逆向工程的难度,因为解密密钥是动态派生的,来源于目标机器的 MachineGuid、Volume Serial Number 和当前用户的 SID 的 SHA-256 哈希值。
  3. WASM沙箱: 实际载荷被编译为 WebAssembly(WASM)并使用 wasm3 解释器完全在内存中执行。宿主 C++ 应用程序仅充当加载器和 API 桥梁,向 WASM 沙箱暴露安全的主机函数。
  4. ONNX权重保险库: 解密 WebAssembly 心跳模块所需的 AES-256 密钥材料被嵌入到 float32 ONNX 权重的最低有效尾数位中。宿主从嵌入的模型字节中提取该权重保险库,进行认证,然后才恢复演示密钥材料。
  5. 元数据保险库回退: 原始认证元数据保险库保留用于兼容性和构建时验证。新资产优先使用权重保险库,而元数据保险库以更可检查的形式记录相同的受保护材料。
  6. 通过下行模型更新的死信C2: 该管道演示了一种使用 ONNX 模型更新的隐蔽通信通道。操作员可以将经过认证的指令嵌入到微调过程中自然发生变化的权重最低有效位中。这些变化通过更新模型与参考(基础)模型之间的增量分析来识别。为了保持 PoC 的安全范围,运行时严格只接受 heartbeat_ack 和 set_status 指令,以证明通道的可行性,而不启用任意命令执行。

Project Onyx 链

强烈推荐

查看 docs/architecture.md 获取完整端到端技术草图(为了更好地理解,我推荐)。

以及整个过程:我的错误、一路上考虑的构思和想法,以及在构建 Project Onyx 时面临的架构权衡 --> Medium

法律免责声明

本项目仅用于教育目的、安全研究和授权的红队行动。

本仓库(Project Onyx)中演示的技术旨在帮助安全专业人士了解高级规避方法并改进端点防御(EDR/XDR)。

请勿在你未拥有或未获得明确书面测试许可的任何系统或网络上使用此软件。

本项目作者(X-3306)不承担任何责任,并且对因使用本软件而引起的任何滥用、损害或非法活动不负责。通过下载、编译或使用此代码,您同意对自己的行为承担全部责任。

仓库布局

  • DiagnosticsTool.cpp - C++ Windows 主机及 Wasm3/ONNX 集成。
  • DiagnosticsTool.rc / resource.h - 生成资产的资源绑定。
  • build.py - 用于指纹收集、ONNX 诱饵生成、权重保险库嵌入、元数据保险库兼容性、通过下行模型更新的死信 C2 以及 WASM 加密的辅助脚本。
  • wasm_license_module/ - WebAssembly 心跳模块的 Rust 源代码。
  • wasm3/source/ - CMake 构建所需的最小化 vendored Wasm3 源代码。
  • assets/README2.md - 生成的资产格式。
  • docs/architecture.md - 完整运行时链和架构说明。

先决条件

在构建之前,在 Windows 上安装以下内容:

  • 安装了“使用 C++ 的桌面开发”工作负载的 Visual Studio 2022。
  • CMake 3.25 或更新版本。
  • Python 3.10 或更新版本。
  • Rustup 和 Cargo。
  • Git。

Python 依赖项:

root@kitploit:~
py -m pip install onnx numpy cryptography

Rust 目标:

root@kitploit:~
rustup target add wasm32-unknown-unknown

ONNX Runtime 静态构建

CMake 文件期望在 ./onnxruntime 处有一个 ONNX Runtime 源代码/构建树,并从以下位置链接静态组件库:

  • onnxruntime/build/Windows/Release/Release
  • onnxruntime/build/Windows/Release/vcpkg_installed/x64-windows-static-md/lib

在 VS 2022 的开发者 PowerShell 中,像这样构建 ONNX Runtime:

root@kitploit:~
git clone --recursive https://github.com/microsoft/onnxruntime.git onnxruntime
.\onnxruntime\build.bat --config Release --parallel --compile_no_warning_as_error --skip_tests --build_shared_lib --use_vcpkg --cmake_extra_defines VCPKG_TARGET_TRIPLET=x64-windows-static-md onnxruntime_BUILD_UNIT_TESTS=OFF

生成的 onnxruntime.dll 不会随 Project Onyx 一起分发。Project Onyx 链接静态组件 .lib 文件,最终可执行文件不应在 dumpbin /DEPENDENTS 中列出 onnxruntime.dll。

生成资产

获取当前 Windows 设备的指纹哈希:

root@kitploit:~
python build.py fingerprint --show-components

使用打印的第二行作为 --trigger 值。

构建 Rust WebAssembly 模块:

root@kitploit:~
cargo build --manifest-path wasm_license_module/Cargo.toml --target wasm32-unknown-unknown --release

生成 assets/model.onnx 和 assets/license_module.wasm.aes:

root@kitploit:~
python build.py build `
  --trigger "<64个字符的小写指纹哈希>" `
  --secret "<恰好32个演示密钥字符>" `
  --model-output assets/model.onnx `
  --wasm-input wasm_license_module/target/wasm32-unknown-unknown/release/wasm_license_module.wasm `
  --wasm-output assets/license_module.wasm.aes

验证 ONNX 保险库:

root@kitploit:~
python build.py verify --trigger "<64个字符的小写指纹哈希>" --model assets/model.onnx

验证命令会检查旧版元数据保险库和隐藏的 ONNX 权重保险库。两者必须解锁相同的 32 字符演示密钥材料。

真实 ONNX 模型

默认载波是 SqueezeNet 1.0 opset 12:

  • 来源:onnxmodelzoo/squeezenet1.0-12
  • 文件:assets/base/squeezenet1.0-12.onnx
  • 许可证:Hugging Face 模型卡上的 Apache-2.0
  • 输入:data_0,float[1, 3, 224, 224]
  • 输出:softmaxout_1,float[1, 1000, 1, 1]
  • 大小:约 4.95 MB
  • float32 权重:约 123 万个

获取或验证捆绑的基础模型:

root@kitploit:~
python build.py fetch-model

build.py build 复制这个真实模型,添加 Project Onyx 元数据,将经过认证的 ONNX 权重保险库嵌入其 float32 初始化器的 LSB 中,并将最终参考模型写入 assets/model.onnx。

仅心跳的死信C2(通过模型更新下行)

附加下行链路是一个研究扩展,用于测试正常的 ONNX 模型更新是否可以作为简单的 PoC 携带经过认证的、微小的控制信号。它被故意限制为两个安全指令:

  • heartbeat_ack - 将运行时心跳状态更改为 heartbeat_ack。
  • set_status - 将运行时心跳状态更改为操作员选择的安全字符串,例如 lab_downlink_ack。

创建实验室更新模型:

root@kitploit:~
python build.py downlink-build `
  --trigger "<64个字符的小写指纹哈希>" `
  --reference-model assets/model.onnx `
  --output assets/downlink_update.onnx `
  --command set_status `
  --status lab_C2_test `
  --expires-unix 4102444800 `
  --cover-seed 2026 `
  --cover-fraction 0.08 `
  --cover-noise-scale 0.00004

使用前验证:

root@kitploit:~
python build.py downlink-verify `
  --trigger "<64个字符的小写指纹哈希>" `
  --reference-model assets/model.onnx `
  --model assets/downlink_update.onnx

Webhook 和模型配置

指向一个原始的 HTTPS 模型工件,例如公共发布资产:

root@kitploit:~
$env:PROJECT_ONYX_DOWNLINK_MODEL_URL = "https://huggingface.co/<profile>/<repo>/resolve/main/downlink_update.onnx"
.\build\Release\ProjectOnyx.exe

或使用 webhook Slack/Teams:

Project Onyx 不嵌入真实的 webhook URL。对于授权的实验室运行,请设置:

该变量必须对启动 ProjectOnyx.exe 的进程可见。如果你双击可执行文件,请先将其设置为用户或系统环境变量,然后打开新终端或重启资源管理器,并使用本地更新模型运行本机主机:

root@kitploit:~
$env:PROJECT_ONYX_DOWNLINK_MODEL_PATH = "$($PWD.Path)\assets\downlink_update.onnx"; $env:PROJECT_ONYX_SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/..."; .\build\Release\ProjectOnyx.exe

(你也可以使用 Teams)

运行时在启动时执行一次获取/读取。它不会轮询、持久化、执行下载的代码或处理任意命令。无效、过期、无关或未经认证的模型更新将被忽略。

运行时验证旋钮:

root@kitploit:~
$env:PROJECT_ONYX_ONNX_TELEMETRY_PASSES = "24"
$env:PROJECT_ONYX_REQUIRE_ONNX_TELEMETRY = "1"
$env:PROJECT_ONYX_LAB_OUTPUT_PATH = "$($PWD.Path)\assets\lab_heartbeat.json"

重要提示,请阅读:参考模型、微调和自然增量

PROJECT_ONYX_ONNX_TELEMETRY_PASSES 控制保险库解锁路径继续之前运行多少次真实的 ONNX Runtime 推理。PROJECT_ONYX_REQUIRE_ONNX_TELEMETRY=1 将遥测失败转化为硬失败,这在验证 ONNX 阶段未被跳过时很有用。PROJECT_ONYX_LAB_OUTPUT_PATH 将最终心跳 JSON 写入本地文件,用于实验室验证而无需 webhook。

此仓库附带了一个真实的 SqueezeNet 参考模型,因为它足够小适合 GitHub,同时又是一个合法的经过训练的神经网络。为了获得更强的研究工件,通过真实的微调或其他正常的模型维护过程创建一个更新后的模型。下行嵌入器可以将其位更改限制在相对于参考模型已经变化的权重上。这就是“隐藏在微调噪声中”想法的实际版本,链接到完整副项目:https://github.com/X-3306/ONNXStego

为了快速实验室验证,downlink-build 可以从参考模型合成一个基于种子随机微调状的掩护更新。这证明了端到端机制,并为 LSB 记录提供了自然候选权重,但它并不能替代在真实任务、数据集和微调过程中的经验性评估。

最终构建

配置并构建发布版可执行文件:

root@kitploit:~
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

最终可执行文件位于:

root@kitploit:~
build\Release\ProjectOnyx.exe

可选的依赖检查:

root@kitploit:~
& "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64\dumpbin.exe" /DEPENDENTS build\Release\ProjectOnyx.exe

预期结果:没有 onnxruntime.dll 依赖。

范围

此演示不包括持久化、提权、凭据访问、横向移动、任意命令执行、破坏性行为或捆绑的私有 webhook 令牌。WebAssembly 模块被限制为格式化和返回心跳 JSON 作为简单 PoC。额外的模型更新下行只能通过白名单指令 heartbeat_ack / set_status 更改该心跳状态。如果你对这个项目有一些有趣的想法,欢迎联系:[email protected]

Project Onyx Daily Trend Project Onyx Weekly Trend

下载工具