Демонстрационный red-team пайплайн, показывающий продвинутый обход EDR через спуфинг телеметрии на базе AI и WASM-песочницу.
Комплексный red-team фреймворк с C2 на базе AI, полиморфными имплантами и встроенными инструментами пост-эксплуатации.
Инструмент для извлечения паролей, хешей, PIN-кодов и Kerberos-тикетов из памяти Windows. Поддерживает Pass-the-Hash, Pass-the-Ticket, Golden/Silver Ticket, …
Кросс-платформенный инструмент для извлечения сохранённых паролей из десятков приложений: браузеры, почтовые клиенты, SSH-клиенты, мессенджеры, БД, VPN, …
Современный C2-фреймворк (Command & Control) с поддержкой кастомных имплантов (Demon), reflective loading, sleep obfuscation, OPSEC-режимов и …
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 python build.py fingerprint --show-components cargo build --manifest-path wasm_license_module/Cargo.toml --target wasm32-unknown-unknown --release python build.py build --trigger "<64-char lowercase fingerprint hash>" --secret "<exactly-32-demo-key-chars>" --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 python build.py verify --trigger "<64-char lowercase fingerprint hash>" --model assets/model.onnx python build.py fetch-model python build.py downlink-build --trigger "<64-char lowercase fingerprint hash>" --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 python build.py downlink-verify --trigger "<64-char lowercase fingerprint hash>" --reference-model assets/model.onnx --model assets/downlink_update.onnx cmake -S . -B build -G "Visual Studio 17 2022" -A x64 cmake --build build --config Release

Продвинутое уклонение от EDR с помощью подмены телеметрии ИИ и песочницы WASM. Project Onyx — это PoC-пайплайн для Red Team, разработанный для демонстрации продвинутых методов уклонения от современных систем EDR. Он отходит от традиционной обфускации на основе сигнатур в сторону поведенческой маскировки и строгой привязки к окружению.
Этот проект является исследовательским proof-of-concept для Red Team, изучающим нетрадиционный многослойный пайплайн исполнения. Архитектура объединяет пять различных техник: маскировку телеметрии ИИ, привязку к оборудованию окружения, стеганографию весов ONNX, песочницу WebAssembly в памяти и Dead-Drop C2 через обновления моделей в нисходящем канале — в единую функциональную цепочку доставки.
Project Onyx не претендует на рабочий обход промышленных систем EDR. Это архитектурный набросок: каждый компонент реализован и функционирует как часть цепочки, но для эффективного противодействия реальным средствам защиты каждый слой потребует отдельного исследования. Project Onyx лучше всего рассматривать как структурированную отправную точку для такого рода исследований. Полезная нагрузка во время исполнения намеренно ограничена маячком heartbeat, что позволяет изучить весь пайплайн без доставки деструктивного или постэксплуатационного поведения.
onnxruntime от Microsoft. Это делает артефакт ONNX активной частью пайплайна, а не декоративным файлом, как предыдущая крошечная MLP.MachineGuid, серийного номера тома и SID текущего пользователя.wasm3. Хостовое приложение на C++ выступает лишь в роли загрузчика и моста API, предоставляя безопасные функции хоста песочнице WASM.float32 в ONNX. Хост извлекает это хранилище весов из встроенных байтов модели, аутентифицирует его и только после этого восстанавливает демонстрационный материал ключа.heartbeat_ack и set_status, демонстрируя жизнеспособность канала без включения произвольного исполнения команд.
Смотрите docs/architecture.md для ПОЛНОГО технического описания от начала до конца. (Рекомендую для лучшего понимания).
а также весь процесс: мои ошибки, концепции и идеи, которые я рассматривал по пути, и архитектурные компромиссы, с которыми столкнулся при создании Project Onyx --> Medium
Этот проект создан исключительно в образовательных целях, для исследований в области безопасности и авторизованных операций Red Team.
Методы, продемонстрированные в этом репозитории (Project Onyx), предназначены для помощи специалистам по безопасности в понимании продвинутых методов уклонения и улучшении средств защиты конечных точек (EDR/XDR).
Не используйте это программное обеспечение на какой-либо системе или сети, которой вы не владеете или не имеете явного письменного разрешения на тестирование. Автор этого проекта (X-3306) не несёт ответственности и не отвечает за любое неправомерное использование, ущерб или незаконную деятельность, вызванную применением данного программного обеспечения. Загружая, компилируя или используя этот код, вы соглашаетесь полностью отвечать за свои действия.
DiagnosticsTool.cpp — интеграция C++ хоста Windows и Wasm3/ONNX.DiagnosticsTool.rc / resource.h — привязки ресурсов для сгенерированных ассетов.build.py — вспомогательный скрипт для снятия отпечатков, генерации приманок ONNX, встраивания хранилища весов, совместимости с хранилищем метаданных, Dead-Drop C2 через обновления моделей по нисходящему каналу и шифрования WASM.wasm_license_module/ — исходный код на Rust для модуля WebAssembly heartbeat.wasm3/source/ — минимальный встроенный исходный код Wasm3, необходимый для сборки CMake.assets/README2.md — форматы сгенерированных ассетов.docs/architecture.md — полная цепочка выполнения и архитектурные заметки.Установите на Windows перед сборкой:
Зависимости Python:
py -m pip install onnx numpy cryptography
Целевая платформа Rust:
rustup target add wasm32-unknown-unknown
Файл CMake ожидает дерево исходников/сборки ONNX Runtime в ./onnxruntime и подключает статические библиотеки компонентов из:
onnxruntime/build/Windows/Release/Releaseonnxruntime/build/Windows/Release/vcpkg_installed/x64-windows-static-md/libИз Developer PowerShell для VS 2022 соберите ONNX Runtime следующим образом:
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, и итоговый исполняемый файл не должен содержать onnxruntime.dll в выводе dumpbin /DEPENDENTS.
Получите хеш отпечатка для текущего устройства Windows:
python build.py fingerprint --show-components
Используйте вторую напечатанную строку в качестве значения --trigger.
Соберите модуль Rust WebAssembly:
cargo build --manifest-path wasm_license_module/Cargo.toml --target wasm32-unknown-unknown --release
Сгенерируйте assets/model.onnx и assets/license_module.wasm.aes:
python build.py build `
--trigger "<64-char lowercase fingerprint hash>" `
--secret "<exactly-32-demo-key-chars>" `
--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:
python build.py verify --trigger "<64-char lowercase fingerprint hash>" --model assets/model.onnx
Команда проверки проверяет как устаревшее хранилище метаданных, так и скрытое хранилище весов ONNX. Оба должны разблокировать один и тот же 32-символьный демонстрационный ключевой материал.
По умолчанию используется SqueezeNet 1.0 opset 12:
onnxmodelzoo/squeezenet1.0-12assets/base/squeezenet1.0-12.onnxdata_0, float[1, 3, 224, 224]softmaxout_1, float[1, 1000, 1, 1]Загрузите или проверьте встроенную базовую модель:
python build.py fetch-model
build.py build копирует эту реальную модель, добавляет метаданные Project Onyx, встраивает аутентифицированное хранилище весов ONNX в младшие биты инициализаторов float32 и записывает итоговую эталонную модель в assets/model.onnx.
Дополнительный нисходящий канал — это исследовательское расширение для проверки возможности передачи аутентифицированного крошечного управляющего сигнала через обычное обновление модели ONNX в качестве простого PoC. Он намеренно ограничен двумя безопасными директивами:
heartbeat_ack — изменяет статус heartbeat на heartbeat_ack.set_status — изменяет статус heartbeat на безопасную строку, выбранную оператором, например lab_downlink_ack.Создайте лабораторную модель обновления:
python build.py downlink-build `
--trigger "<64-char lowercase fingerprint hash>" `
--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
Проверьте её перед использованием:
python build.py downlink-verify `
--trigger "<64-char lowercase fingerprint hash>" `
--reference-model assets/model.onnx `
--model assets/downlink_update.onnx
Укажите на сырой HTTPS-артефакт модели, например публичный релизный ассет:
$env:PROJECT_ONYX_DOWNLINK_MODEL_URL = "https://huggingface.co/<profile>/<repo>/resolve/main/downlink_update.onnx"
.\build\Release\ProjectOnyx.exe
Или используйте вебхук Slack/Teams:
Project Onyx не содержит реальный URL вебхука. Для авторизованных лабораторных запусков установите:
Переменная должна быть доступна процессу, запускающему ProjectOnyx.exe. Если вы запускаете исполняемый файл двойным щелчком, сначала установите её как пользовательскую или системную переменную среды, затем откройте новый терминал или перезапустите Проводник и запустите нативный хост с локальной моделью обновления:
$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)
Во время запуска выполняется одна операция выборки/чтения. Она не опрашивает, не сохраняет, не выполняет загруженный код и не обрабатывает произвольные команды. Недействительные, просроченные, нерелевантные или неаутентифицированные обновления моделей игнорируются.
Параметры проверки во время выполнения:
$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 heartbeat в локальный файл для лабораторной проверки без необходимости в вебхуке.
В этом репозитории поставляется реальная эталонная модель SqueezeNet, так как она достаточно мала для GitHub, но при этом является полноценной обученной нейронной сетью. Для создания более надёжного исследовательского артефакта обновите модель с помощью реального дообучения или другого стандартного процесса обслуживания модели. Затем эмбеддер нисходящей связи может ограничить изменения битов весами, которые уже изменились относительно эталонной модели. Это практическая версия идеи «скрыться в шуме дообучения», ссылка на полный побочный проект: https://github.com/X-3306/ONNXStego
Для быстрой лабораторной проверки downlink-build может синтезировать засеянное случайное обновление покрытия, похожее на дообучение, из эталонной модели. Это доказывает работоспособность сквозного механизма и даёт естественные кандидаты весов для записи LSB, НО это НЕ заменяет эмпирическую оценку на реальной задаче, наборе данных и процедуре дообучения.
Настройте и соберите релизный исполняемый файл:
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
Итоговый исполняемый файл:
build\Release\ProjectOnyx.exe
Проверка необязательных зависимостей:
& "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.
Демо не включает в себя сохранение, повышение привилегий, доступ к учётным данным, горизонтальное перемещение, произвольное выполнение команд, деструктивное поведение или встроенные приватные токены вебхуков. Модуль WebAssembly ограничен форматированием и возвратом JSON heartbeat в качестве простого PoC. Дополнительное обновление модели нисходящей связи может изменять статус heartbeat только через белый список heartbeat_ack / set_status. Если у вас есть интересные идеи для этого проекта, не стесняйтесь связаться: X3306.Business@proton.me