Назад к обновлениям
New releaseSep 5, 2026

emp3r0r v4.15.0

Самовосстанавливающаяся Gossip Mesh C2 с поддержкой обнаружения пиров, кроссплатформенное выполнение BOF и скриптовые агенты.

Поделиться
emp3r0r

emp3r0r

Самовосстанавливающийся C2, работающий только в памяти, для Linux и Windows — агенты, которые выживают при разрыве связей, никогда не касаются диска и программируют свой путь через Win32 API.


Discord GitHub Sponsors

GitHub go.mod Go version Tests GitHub License GitHub release


emp3r0r-readme

Что такое emp3r0r?

emp3r0r — это фреймворк постэксплуатации и C2, созданный для сред Linux и Windows, где скрытность и устойчивость не являются опцией. Вместо того чтобы полагаться на надёжное соединение с одним сервером, агенты образуют самовосстанавливающуюся mesh-сеть, которая продолжает работать при разрыве связей. Вместо того чтобы требовать от цели Python или PowerShell, они выполняют всё в памяти. И вместо того чтобы ограничивать вас приёмами одной платформы, emp3r0r запускает Windows BOF, Linux-объекты и скрипты Starlark — всё без файлов, всё в процессе.


Ключевые особенности и уникальные возможности

🐍 Программируемые агенты (встроенный движок Starlark и прокси Win32 API)

Каждый агент несёт собственный движок сценариев, поэтому вы можете добавлять новую логику постэксплуатации без компиляции и доставки бинарников.

  • Скрипты выполняются полностью в памяти — на цели не требуется Python, Bash или PowerShell, и не порождаются интерпретаторы команд.
  • Полный набор встроенных API покрывает файловый ввод-вывод, HTTP, выполнение команд и многое другое — прямо из кода скрипта.
  • В Windows скрипты могут напрямую вызывать нативные функции Win32 — агент проксирует вызовы прямо в системные DLL.
  • Модули — это обычные файлы Starlark с небольшим JSON-манифестом, поэтому добавлять свои легко и без файлов.

Почему это важно: написание и расширение функциональности агента становится таким же простым, как редактирование скрипта, без каких-либо следов от установки интерпретатора или нового бинарника на цели.


🔐 Криптографическая привязка идентичности TOFU

Агенты привязывают свою идентичность к криптографическому ключу при первом обращении к вам — и эта привязка никогда не меняется.

  • Повторная регистрация с другими учётными данными расценивается как самозванец и отклоняется.
  • Удаление агента — это явное решение оператора, а не то, что украденный ключ может сделать незаметно.

Почему это важно: перехват сессии и клонирование агентов просто не происходят; каждый агент, с которым вы общаетесь, — это тот, которого вы зарегистрировали.


🔒 Совершенная прямая секретность (PFS)

Каждый канал C2 и одноранговый канал использует эфемерные ключи ECDH с сессионно-производными ключами шифрования.

Почему это важно: даже если долгосрочный ключ будет скомпрометирован позже, его нельзя использовать для расшифровки трафика, который уже прошёл.


🕸️ Автономная P2P gossip mesh-сеть

Агенты обнаруживают друг друга и ретранслируют трафик через gossip mesh, поэтому операция не рушится при исчезновении одной связи или одного сервера.

  • Пиры соединяются через камуфляжный mTLS 1.3 или надёжный UDP (KCP), при этом каждый хоп зашифрован.
  • Трафик автоматически обходит мёртвые ретрансляторы — никаких ручных манипуляций с прокси посреди операции.
  • Сегменты без прямого доступа к C2 всё равно остаются достижимыми через своих соседей.

Почему это важно: сеть делает пивотинг за вас. Обрежьте связь, потеряйте машину или заблокируйте C2 — агенты перенаправляются сами.


📂 P2P-файловая система

Файлы перемещаются между агентами напрямую, а не только через C2.

  • Передачи идут по зашифрованным одноранговым туннелям, поэтому внутренние сети не создают узкое место на вашем сервере.
  • Файлы кэшируются в памяти агента в виде зашифрованных блобов и предоставляются пирам по запросу.
  • Если ни у одного пира нет файла, агент автоматически забирает его из C2.

Почему это важно: доставка быстрая и в основном невидима для канала C2 — идеально для сред с ограниченным исходящим трафиком.


📡 Многопротокольные слушатели и подключаемые стейджеры

Обеспечение проникновения агента воспринимается так же серьёзно, как и поддержание его жизни.

  • Слушатели HTTP, TCP и UDP с надёжной кадрированием и настраиваемыми HTTP-профилями.
  • Стейджер размером примерно 2 КБ, построенный на прямых системных вызовах Linux — без libc, без инструментария на цели.
  • Подключаемые транспорты стейджеров и самораспаковывающиеся упаковщики позволяют вписать первоначальный доступ в любой канал, который допускает ваша цель, и попутно обойти сопоставление со статическими сигнатурами.
  • Код стейджера и агента соблюдает дисциплину чтения/записи/выполнения — никогда RWX.

Почему это важно: небольшой, адаптируемый и гигиеничный по памяти первоначальный доступ означает, что вы можете закрепиться на хостах, которые иначе были бы недосягаемы.


🧩 Нативная кроссплатформенная поддержка BOF и PICO (COFF, ELF и PICO)

Запускайте скомпилированные C-модули в процессе на любой из платформ:

  • Бинарники Windows COFF/BOF с типизированной упаковкой аргументов.
  • Перемещаемые объекты Linux ELF, загружаемые прямо в память агента.
  • Модули Crystal-Kit PICO со спуфингом стека вызовов SilentMoonwalk.
  • Kerbeus-BOF, Remote-OPs и набор для ситуационной осведомлённости поставляются готовыми к использованию.

Почему это важно: BOF хороши настолько, насколько хорош их загрузчик — emp3r0r запускает их в процессе без нового процесса и без оставленных следов, как на Linux, так и на Windows.


🔑 Токены Windows, сессии netonly и билеты Kerberos (PTT)

Оказавшись на хосте Windows, emp3r0r позволяет вам стать пользователями на нём — не сбрасывая при этом ни одного инструмента.

  • Украдите токен доступа из любого запущенного процесса и используйте его везде: модули Go, Starlark, BOF.
  • Создавайте одноразовые сессии netonly с флагом --user модуля: они сохраняют собственную идентичность вашего агента и лишь заимствуют идентичность целевого пользователя для исходящего доступа — подойдёт любой пароль, ничего никогда не проверяется.
  • Импортируйте билеты Kerberos с флагом --ticket для полноценного pass-the-ticket: ваша сетевая идентичность становится идентичностью билета (скажем, Domain Admin), тогда как ваша локальная идентичность никогда не меняется.
  • Каждый модуль, учитывающий токены, принимает --token, --user и --ticket, поэтому смена идентичности — на расстоянии одного флага, включая создание сессии и загрузку билета одной командой.
  • Билеты живут в рамках сеанса входа, поэтому материал DA остаётся изолированным в одноразовой сессии, которую можно очистить, а сам процесс агента остаётся чистым.

Почему это важно: боковое перемещение на машины, где вообще нет агента — SMB-ресурсы, управление службами, CIFS — становится обычной частью вашего рабочего процесса, аутентифицированного как заимствованный пользователь, а не как инструмент на диске.


🧦 Пивотинг через SOCKS5 и tun2socks на стороне оператора

Пивотируйте, не сжигая ещё один имплант: C2 запускает прокси SOCKS5, который ретранслирует через выбранного вами агента, а сторона оператора может пойти ещё дальше с прозрачным устройством TUN.

  • socks_start 1080 даёт вам конечную точку SOCKS5 на C2, которая туннелируется через выбранного агента — направьте на неё proxychains или любой инструмент, и вы внутри целевой сети.
  • tun2socks start --route 10.10.0.0/24 создаёт устройство TUN, которое маршрутизирует через этот прокси только указанные вами подсети — всё остальное продолжает использовать ваше обычное соединение.
  • Результат выглядит так, будто исходит от агента, без настройки прокси для каждого инструмента.

Почему это важно: достигайте целых сетей на стороне агента прозрачно — curl к контроллеру домена, любой инструмент — с исходящим трафиком, который выглядит исходящим из целевой сети, а не с вашей машины оператора.


🎭 Подключаемый транспорт C2, обход JA3 через uTLS и протокол CBOR

  • Выбирайте HTTP-опрос в стиле beacon или потоковый HTTP/2 — оба с изменяемыми профилями.
  • Отпечатки TLS рандомизируются с помощью uTLS, поэтому канал не выделяется в сетевой телеметрии.
  • Управляющий трафик идёт по компактному протоколу CBOR — меньше, быстрее и сложнее для разбора, чем JSON.

Почему это важно: канал C2 сделан так, чтобы выглядеть как обычный трафик и оставаться экономным на проводе.


💾 Шифрованное хранилище с приоритетом памяти

  • Файловые операции агента выполняются в виртуальной файловой системе в памяти, зашифрованной AES-GCM; большие данные сбрасываются на диск только в виде зашифрованных блобов без идентифицируемых заголовков.
  • Агенты с поддержкой P2P кэшируют то, что загружают, и делятся этим с пирами, ещё больше сокращая трафик C2.

Почему это важно: даже диск считается враждебным — агент не хранит вокруг никаких артефактов в открытом виде, которые можно найти.


Быстрый старт

1. Установка сервера C2

Для сборки emp3r0r требуется Docker или Podman на хосте — локальный инструментарий Go не нужен.

git clone --depth=1 https://github.com/jm33-m0/emp3r0r.git && cd emp3r0r
./install.py

Установщик собирает всё в одноразовом контейнере и готовит набор оператора. Полезные флаги: --lightweight (только Linux/Windows amd64, самый быстрый), --targets OS/ARCH,..., --debug, --skip-build.

Запуск сервера:

emp3r0r server --c2-hosts 1.2.3.4 --http-port 12345 --operator-port 13377

2. Настройка машины оператора

tar --zstd -xpf emp3r0r-operator-kit.tar.zst
cd ./emp3r0r-operator-kit && ./install.py

Подключитесь, используя учётные данные WireGuard, которые вывел сервер:

emp3r0r client --c2-port 13377 \
  --server-wg-key '<SERVER_WG_KEY>' --server-wg-ip '<SERVER_WG_IP>' \
  --operator-wg-ip '<OPERATOR_WG_IP>' --operator-wg-key '<OPERATOR_WG_KEY>' \
  --c2-host 1.2.3.4

3. Генерация полезных нагрузок агента

Внутри консоли оператора:

# Direct C2 agent
generate --type linux_executable --arch amd64 --cc your.domain.com

# Mesh gateway agent (also reachable from the C2 directly)
generate --type linux_executable --arch amd64 --cc your.domain.com \
  --p2p --direct-c2 --p2p-transport mtls

# Mesh intermediate peer (relays for other agents)
generate --type linux_executable --arch amd64 --cc your.domain.com \
  --p2p --p2p-transport mtls --peers 1.2.3.4

# Windows mesh peer over SMB named pipes (local \\.\pipe, cross-host \\host\pipe),
# AES-GCM framed like the other transports
# (requires the Windows SMB stack / logon session to reach the peer)
generate --type windows_executable --arch amd64 --cc your.domain.com \
  --p2p --p2p-transport smb

Узлы mesh могут работать на разных транспортах. Каждый агент объявляет транспорт и порт, на котором слушает его ретранслятор, а дозвонщики всегда используют объявленный транспорт пира, поэтому смешанный mesh (например, узлы Windows SMB рядом с узлами Linux mTLS) маршрутизируется через пира, разделяющего рабочий транспорт, вместо предположения, что все используют локальный по умолчанию. smb принимается только для полезных нагрузок Windows; kcp/mtls работают везде.


Документация и ресурсы


Поддержка разработки

Если emp3r0r оказался ценным в ваших исследованиях и тестировании безопасности, рассмотрите возможность поддержки его дальнейшей разработки через GitHub Sponsors.

Категории