Эксплуатационный сервер для out-of-band находок. Направьте цель на домен, которым вы владеете. Каждый HTTP-запрос и каждое письмо, которые он отправляет обратно, попадают в панель управления, которую вы контролируете, и в ответ он получает тот ответ, который вы выберете.
BEAR-C2 — это фреймворк для симуляции и эмуляции противника, построенный вокруг реальных TTPs, вдохновлённых российскими, китайскими, северокорейскими и иранскими APT-группами. Он предоставляет гибкую среду для разнообразных сценариев взаимодействия и обеспечивает реалистичную основу для red team операций и эмуляции противника, опираясь на соответствующие исследования по симуляции в . Он поддерживает техники уклонения от защиты и множество вариантов шифрования для точного представления реальных сценариев вторжения.

[!CAUTION] Важно отметить, что этот проект предназначен только для образовательных и исследовательских целей, и любое несанкционированное использование может привести к юридическим последствиям.
git clone https://github.com/S3N4T0R-0X0/BEAR-C2.git && cd BEAR-C2
chmod +x requirements.sh && ./requirements.sh
./BEAR-C2
## 🧠 Проблема с симуляцией противника:
Точное воспроизведение **техник APT** требует `гибкой среды, способной имитировать протоколы соединения, методы шифрования, техники эксфильтрации и C2-каналы/профили`, используемые в современных вторжениях. Однако достижение такого уровня точности всегда было сложной задачей.
<img width="1366" height="732" alt="main " src="https://assets.kitploit.com/production/public/readmes/54775/8af4474bf61f52114745ec8403b4ea6d01d26a57f85913f1f01b4bba559a1eb7/59654a7b465df184554d5c31ee49293c1f5d9da71a1e6ef81aa0a2fa5b88b8ea-display-v1.webp" />
Каждый раз, когда оператору нужно протестировать конкретную **схему шифрования** с определённым **профилем эксфильтрации**, приходится создавать отдельный **C2-скрипт** `в соответствии со сценарием атаки.` Например, одна симуляция может требовать **шифрование AES** с **эксфильтрацией через OneDrive**, тогда как другой может понадобиться **другой метод шифрования** в сочетании с **эксфильтрацией через Dropbox**, чтобы отразить техники, наблюдаемые в реальных атаках. Такая нехватка гибкости делает процесс неэффективным и трудоёмким.
<img width="1359" height="680" alt="Screenshot From 2026-09-01 05-54-48" src="https://assets.kitploit.com/production/public/readmes/54775/c106129e53832b08e6575610090337721e4e5892eade10bee395fae638326cc2/299229b4ffae9286d368a6e9243c4528d469f5395f166d9b67fa0020beaf5d8a-display-v1.webp" />
Именно поэтому был разработан **BEAR C2**, обеспечивающий **симуляцию противника** с полной настройкой через новый listener, позволяя без труда конфигурировать `протоколы соединения, шифрование, эксфильтрацию` и автоматизированные техники загрузки. Это гарантирует, что симуляции смогут точно отражать реальные **вторжения APT** без необходимости создавать кастомные скрипты для каждого сценария.
## Образцы полезной нагрузки Reaper Node
Reaper Node предоставляет образцы полезной нагрузки на C++ `/Stagers-Loaders/Reaper Node Samples/`, которые можно использовать в качестве настраиваемых шаблонов для сред, где предварительно сгенерированная полезная нагрузка не требуется. Образцы содержат основные поля конфигурации, необходимые для установления связи с соответствующим экземпляром Reaper Node.
Перед компиляцией полезной нагрузки необходимо настроить требуемые параметры соединения и транспорта в соответствии с конфигурацией Reaper Node.
### Конфигурация полезной нагрузки
Конфигурация полезной нагрузки должна предоставлять поля ввода для следующих параметров:
* **Authentication ID**
Идентификатор, используемый для связи полезной нагрузки с настроенным экземпляром Reaper Node.
* **Server Host**
IP-адрес или имя хоста конечной точки Reaper Node.
* **Server Port**
Сетевой порт, открытый Reaper Node для выбранного протокола связи.
* **Encryption Key**
Требуется, когда выбранный транспорт использует шифрование. Значение должно совпадать с конфигурацией шифрования, используемой Reaper Node. Если шифрование отключено, это поле не требуется.
* **User-Agent**
Значение идентификации HTTP-клиента, используемое при установлении начального HTTP/HTTPS-соединения. Полезная нагрузка должна использовать User-Agent, поддерживаемый соответствующей конфигурацией Reaper Node.
User-Agent не обязательно должен быть одинаковым для разных конфигураций Reaper Node. Полезная нагрузка может использовать любой User-Agent, определённый как поддерживаемый выбранным профилем Reaper Node, при условии, что итоговая конфигурация совместима с настройками транспорта на стороне сервера.
### Пример конфигурации
В следующем примере показана конфигурация транспорта HTTPS с параметрами аутентификации, адресации сервера, шифрования и User-Agent:```cpp
const string AUTH_ID = "YOUR_AUTH_ID";
const string SERVER_HOST = "YOUR_SERVER_HOST";
const int SERVER_PORT = YOUR_SERVER_PORT;
const string KEY = "YOUR_ENCRYPTION_KEY";
const string DEFAULT_USER_AGENT = "YOUR_USER_AGENT";
bool VERIFY_SSL = true;
Эта конфигурация представляет собой транспорт HTTPS с включённым шифрованием. Приведённые выше значения являются заполнителями и должны быть заменены параметрами, определёнными в соответствующей конфигурации Reaper Node.
Пример на C++ предназначен для предоставления отправной точки для настройки. Пользователи могут изменять конфигурацию и параметры, связанные с транспортом, в соответствии с профилем Reaper Node, который они тестируют, а затем компилировать настроенную полезную нагрузку для своей авторизованной среды моделирования.
Таблица Listeners предоставляет централизованный обзор всех активных и настроенных C2-листенеров. Она отображает основные сведения, такие как имя листенера, адрес, сетевой протокол, метод шифрования, профиль эксфильтрации, а также текущий статус (Active или Stopped/Disconnected). Из этого интерфейса операторы могут легко запускать, останавливать, переименовывать или удалять листенеры. Он также предоставляет быстрый доступ к ключам шифрования и идентификаторам аутентификации для управления связью с beacon'ами. Эта таблица служит командным центром для организации и мониторинга вашей C2-инфраструктуры.

Эта версия включает полноценный графический интерфейс, который оптимизирует операции моделирования действий противника за счёт централизованного управления листенерами, отслеживания сессий в реальном времени, настраиваемых профилей связи, интегрированных рабочих процессов эксфильтрации и гибких средств управления для операторов, обеспечивающих эффективное управление операциями.
⚠️ ПРИМЕЧАНИЕ: Этот проект находится в активной разработке. Функции постоянно добавляются и улучшаются.
| Функция | Описание |
|---|---|
| Мультипротокольные листенеры | DoH, HTTPS, HTTP, QUIC, Reverse TCP |
| Шифрование для каждого листенера | AES, XOR, RC4, DES, ChaCha20, RSA |
| Профили эксфильтрации | Google Drive, OneDrive, Dropbox |
| Интегрированные C2-каналы | Интегрированный канал C2-связи Telegram, Discord |
| Поддержка прокси | Поддержка прокси и редиректоров SOCKS4, SOCKS4a и SOCKS5 |
| Динамический алгоритм генерации доменов | Поддержка DGA для моделирования отказоустойчивой инфраструктуры |
| Отпечатки JA3S | Настраиваемые отпечатки JA3S для моделирования трафика и тонкой настройки сетевого профиля |
| Профили Malleable C2 | Поддержка сообществом Malleable C2 profiles для гибкого моделирования сетевого трафика |
| Стеджеры и загрузчики | Автоматизированные техники стеджеров и загрузчиков, разработанные для моделирования действий APT |
| Интегрированные инструменты | Встроенный обфускатор скриптов, фишинговый набор инструментов и хостинг файлов |
| Генерация TLS-сертификатов | Самоподписанные TLS-сертификаты, имитирующие доверенных поставщиков |
| Настройка HTTP | Base64 URL-кодирование и пользовательские HTTP-заголовки для связи как клиента, так и сервера |
| Менеджер сессий в реальном времени | Отслеживание статуса в реальном времени, мониторинг сессий и возможности обновления в реальном времени |
| Пользовательские имена и URI-пути |
Настройте параметры эксфильтрации для каждой сессии для поддерживаемых облачных хранилищ, таких как Google Drive, OneDrive, and Dropbox. Интерфейс Exfiltration Profile позволяет определять токены доступа к API и пути к папкам назначения, что даёт возможность настраивать рабочие процессы сбора данных для каждой сессии. Каждая сессия может использовать собственный профиль эксфильтрации, что упрощает маршрутизацию собранных данных к различным облачным хранилищам или местам назначения в зависимости от операции.

Уровень связи Telegram использует Telegram-бота в качестве посредника между C2-сервером и полезной нагрузкой. C2-сервер аутентифицируется в учётной записи Telegram с использованием настроенных API ID, API Hash и номера телефона, а затем подключается к ранее созданному Telegram-боту через эту учётную запись

Bot Token бота встраивается в полезную нагрузку, что позволяет полезной нагрузке взаимодействовать с ботом через Telegram API. Команды отправляются с C2-сервера боту, а бот пересылает их полезной нагрузке, которая выполняет полученное задание и возвращает результаты по тому же пути связи. Это создаёт двунаправленный канал управления и связи, использующий Telegram в качестве уровня связи.

Откройте @BotFather в Telegram и создайте нового бота с помощью /newbot.
/newbotbot
Bot Token требуется Telegram-агенту для аутентификации в Telegram Bot API.
Откройте официальный портал разработки Telegram API и создайте новое приложение.
Сгенерируйте следующие учётные данные: https://my.telegram.org/apps
API IDAPI Hash
Эти учётные данные используются BEAR-C2 для аутентификации учётной записи Telegram, используемой для управления связью с ботом.
Откройте Telegram Agent.cpp и настройте параметры связи Telegram.
Bot Token, сгенерированный BotFather, должен быть помещён в /Stagers-Loaders/C2 Channel Agent Samples/Telegram Agent.cpp перед компиляцией полезной нагрузки.

Поток настройки следующий:
BotFather → Bot Token → payload.cpp → Compile
API ID и API Hash используются интеграцией Telegram в BEAR-C2, тогда как Bot Token настраивается в полезной нагрузке Telegram, чтобы она могла взаимодействовать с настроенным Telegram-ботом.
Этот этап заменяет традиционный канал управления и связи на уровень связи на основе Discord, использующий Discord Gateway API. Вместо того чтобы полагаться на выделенные серверы, фиксированные IP-адреса или пользовательские домены, операторы взаимодействуют с моделируемым имплантом через приватный канал Discord.

Уровень связи Discord использует двух Discord-ботов, подключённых через один и тот же канал Discord. Один бот подключён к C2-серверу, а второй бот назначен полезной нагрузке. Два бота взаимодействуют через общий канал Discord, что позволяет передавать задания и осуществлять связь между C2-сервером и полезной нагрузкой через Discord.
Поскольку Discord не позволяет ботам напрямую взаимодействовать с другими ботами, использование общего канала обеспечивает путь связи между двумя сторонами.

Discord-агент использует Discord Gateway и API в качестве уровня связи между полезной нагрузкой и BEAR-C2. Настройка требует приложений Discord Bot, выделенного текстового канала, необходимых разрешений бота и соответствующих значений, настроенных в примере агента на C++.
Откройте официальный "Discord Developer Portal" (https://discord.com/developers/applications) и создайте приложения Discord Bot, необходимые для моделирования.
Канал Discord C2 использует две идентичности ботов:
Для каждого приложения откройте настройки Bot и сгенерируйте необходимый Bot Token.

Откройте Bot configuration in the Discord Developer Portal и включите Message Content Intent.
Бот также должен иметь необходимые разрешения для текстового канала Discord, используемого в моделировании, включая:
Эти разрешения позволяют боту получать доступ к сообщениям из настроенного канала и отправлять сообщения по тому же пути связи. Discord требует Message Content Intent для приложений, которым необходимо получать содержимое сообщений через API.

Создайте выделенный приватный текстовый канал для Discord-агента и добавьте в канал оба приложения Bot.
Убедитесь, что the same permissions configured in the Discord Developer Portal также включены для приложений Bot в канале.
Скопируйте Channel ID при включённом режиме разработчика Discord. Discord предоставляет Channel ID через опцию Copy Channel ID when Developer Mode is enabled.

same Channel ID is used by the C2 configuration and the Discord Agent, поэтому обе стороны взаимодействуют через один и тот же канал Discord.
Откройте пример Discord-агента, расположенный по пути:
"Stagers-Loaders/C2 Channel Agent Samples/Discord Agent.cpp"
Пример предоставляет поля конфигурации для Discord Bot Token, Channel ID и Bot User ID:

Замените заполнители значениями, принадлежащими Payload Bot и выделенному каналу Discord.
"BOT_USER_ID" идентифицирует учётную запись бота, используемую полезной нагрузкой. Discord User IDs можно скопировать после включения режима разработчика.
В конфигурации Discord Channel внутри BEAR-C2 укажите соответствующие C2 Bot Token, Channel ID, and Listener Name.

C2 Bot и Payload Bot используют один и тот же канал Discord в качестве пути связи, при этом каждая сторона аутентифицируется с помощью собственного Bot Token.
После завершения настройки Discord и примера полезной нагрузки скомпилируйте C++-агента для использования в авторизованной среде моделирования действий противника.
⚠️ ПРИМЕЧАНИЕ: Ограничения C2-каналов
C2-каналы вводят ограничения, связанные с передачей данных и идентификацией Beacon'ов, при использовании сторонних платформ обмена сообщениями в качестве уровня связи между C2-сервером и Beacon'ами
● Ограничения передачи данных
Telegram и Discord устанавливают максимальный лимит символов для отдельных сообщений, обмениваемых через их bot API. В BEAR C2 C2-канал действует как транспортный уровень между C2-сервером и Beacon'ом, поэтому это ограничение применяется к данным, передаваемым через канал, а не к размеру самой полезной нагрузки Beacon. Данные, отправляемые с C2-сервера на Beacon, и данные, возвращаемые с Beacon на C2-сервер, могут быть закодированы в Base64 перед передачей. Поскольку Base64 увеличивает размер передаваемого представления, объём исходных данных, которые можно передать в одном сообщении, ниже лимита символов платформы.
[ Telegram ] максимум 4096 символов на сообщение, 4000 символов настроено для передачи данных C2

[ Discord ] максимум 2000 символов на сообщение, 1400 символов настроено для передачи данных C2

Настроенные лимиты намеренно установлены ниже лимитов платформы, чтобы обеспечить достаточный запас для структуры сообщений C2 и накладных расходов на кодирование. Когда данные превышают настроенный лимит, закодированные данные необходимо разделить на несколько сообщений и восстановить на принимающей стороне.
● Идентификация Beacon'ов и атрибуция ответов
C2-каналы также вводят ограничение, когда несколько Beacon'ов используют одного и того же Telegram-бота или канал Discord. Все Beacon'ы, взаимодействующие через одного и того же бота или канал, используют один и тот же путь связи, поэтому C2-сервер по своей природе не может представить каждый Beacon как независимую сессию связи. Например, если пять Beacon'ов взаимодействуют через одного и того же Telegram-бота или канал Discord, они будут отображаться как единый путь связи C2, а не как пять независимо идентифицируемых Beacon'ов.
То же ограничение влияет на ответы на команды. Когда команда распределяется нескольким Beacon'ам через одного и того же бота или канал, полученные ответы возвращаются по тому же пути связи. Без дополнительного механизма идентификации Beacon'ов C2-сервер не может надёжно определить, какой Beacon сгенерировал конкретный ответ.
Прямое решение — назначить выделенного бота каждому Beacon в Telegram или изолированный канал либо конфигурацию бота каждому Beacon в Discord. Это создаёт взаимно однозначное соответствие между Beacon'ом и его путём связи, позволяя различать отдельные Beacon'ы и их ответы. Компромиссом является увеличение инфраструктуры и накладных расходов на управление по мере роста числа Beacon'ов.
Эти ограничения специфичны для использования платформ обмена сообщениями в качестве транспортных каналов C2 и не зависят от самой полезной нагрузки Beacon.
● Практическое влияние
Ограничение размера сообщения уменьшает объём данных, которые можно передать за один раз, что может увеличить время, необходимое для отправки команд и получения их вывода
Использование общего Telegram-бота или канала Discord приводит к тому, что несколько Beacon'ов отображаются как один Beacon в таблице C2, при этом команды доставляются всем Beacon'ам, использующим этого бота или канал, а ответы не могут быть надёжно приписаны конкретному Beacon'у.
Моделируйте кампании целевого фишинга через выделенный интерфейс для настройки и управления фишинговыми сценариями во время авторизованных учений по моделированию действий противника. Модуль предоставляет средства управления кампанией, такие как лимиты отправки жертвами, настраиваемые параметры фишинга и управление сессиями, позволяя операторам контролировать поведение кампании и оценивать взаимодействие пользователей с моделируемыми фишинговыми сценариями. Он разработан для поддержки контролируемых фишинговых оценок, предоставляя операторам большую видимость и контроль над выполнением кампании.

Размещайте и распространяйте файлы через выделенный интерфейс Host File с настраиваемыми параметрами сервера и автоматической доставкой файлов. Размещённые файлы автоматически загружаются при обращении к ним, без необходимости взаимодействия с пользователем или запроса на ручную загрузку. Интерфейс обеспечивает централизованное управление хостингом и доставкой файлов для контролируемого моделирования действий противника и авторизованных рабочих процессов тестирования безопасности.
Script Obfuscator предоставляет комплексный движок обфускации, поддерживающий полезные нагрузки PS1, BAT, HTML, VBS, JS и PY с несколькими настраиваемыми слоями обфускации. Он включает variable and function renaming, string encryption, junk code insertion, multi-layer obfuscation, anti-debugging techniques, and XOR-based payload encryption. Эти функции повышают сложность анализа, снижают читаемость скриптов и значительно усложняют обратную разработку, помогая полезным нагрузкам лучше противостоять статическому анализу.
The complete list of APT groups simulated by BEAR-C2 throughout its development
| Country of Origin | Russia 🇷🇺 | China 🇨🇳 | North Korea 🇰🇵 | Iran 🇮🇷 |
|---|---|---|---|---|
| APT Groups |
Cozy Bear ✅ |
Mustang Panda ✅ |
| Определяемые пользователем имена кампаний и настраиваемые URI-пути для операционной гибкости |
| Управление переподключением и тайм-аутами | Настраиваемые задержки переподключения и регулируемые пороги тайм-аутов для каждой сессии |
| Идентификаторы аутентификации | Уникальные токены аутентификации со встроенным управлением сроком действия для повышения безопасности |
| Утилиты усиления безопасности сессий | Очистка истории, ограничение сессий и управление тайм-аутом аутентификации для активных сессий |
| [**Labyrinth Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Labyrinth%20Chollima) [**Velvet Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Velvet%20Chollima) [**Famous Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Famous%20Chollima) [**Stardust Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Stardust%20Chollima) [**Ricochet Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Ricochet%20Chollima) [**Silent Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Silent%20Chollima) |
|
Helix Kitten |