El servidor de explotación para hallazgos fuera de banda. Apunta un objetivo a un dominio que poseas. Cada solicitud HTTP y cada correo electrónico que envíe de vuelta aterriza en un panel de control que tú controlas, y recibe la respuesta que elijas a cambio.
BEAR-C2 es un framework de simulación y emulación de adversarios construido en torno a TTPs del mundo real inspiradas en grupos APT rusos, chinos, norcoreanos e iraníes. Proporciona un entorno flexible para diversos escenarios de compromiso y ofrece una base realista para operaciones de red team y emulación de adversarios, basándose en investigaciones de simulación relacionadas en el . Soporta técnicas de evasión de defensas y múltiples opciones de cifrado para una representación precisa de escenarios de intrusión del mundo real.

[!CAUTION] Es esencial tener en cuenta que este proyecto es solo para fines educativos y de investigación, y cualquier uso no autorizado del mismo podría conllevar consecuencias legales.
git clone https://github.com/S3N4T0R-0X0/BEAR-C2.git && cd BEAR-C2
chmod +x requirements.sh && ./requirements.sh
./BEAR-C2
## 🧠 El desafío de la simulación de adversarios:
Replicar con precisión las **técnicas APT** requiere un `entorno flexible capaz de imitar protocolos de conexión, métodos de cifrado, técnicas de exfiltración y canales/perfiles C2` utilizados en intrusiones modernas. Sin embargo, alcanzar este nivel de precisión siempre ha sido un desafío.
<img width="1366" height="732" alt="main " src="https://assets.kitploit.com/production/public/readmes/54775/8af4474bf61f52114745ec8403b4ea6d01d26a57f85913f1f01b4bba559a1eb7/59654a7b465df184554d5c31ee49293c1f5d9da71a1e6ef81aa0a2fa5b88b8ea-display-v1.webp" />
Cada vez que un operador necesita probar un **esquema de cifrado** específico con un **perfil de exfiltración** particular, se `debe construir un **script C2** independiente que coincida con el escenario de ataque.` Por ejemplo, una simulación podría requerir **cifrado AES** con **exfiltración por OneDrive**, mientras que otra podría necesitar **un método de cifrado diferente** combinado con **exfiltración por Dropbox** para reflejar las técnicas observadas en ataques del mundo real. Esta falta de flexibilidad hace que el proceso sea ineficiente y consuma mucho tiempo.
<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" />
Es por esto que se desarrolló **BEAR C2** para proporcionar **simulación de adversarios** con personalización completa a través del nuevo listener, permitiendo la configuración fluida de `protocolos de conexión, cifrado, exfiltración,` y técnicas de carga automatizadas. Esto garantiza que las simulaciones puedan reflejar con precisión **intrusiones APT** reales sin la necesidad de construir scripts personalizados para cada escenario.
## Muestras de Payload de Reaper Node
Reaper Node proporciona muestras de payload en C++ `/Stagers-Loaders/Reaper Node Samples/` que pueden utilizarse como plantillas personalizables para entornos donde no se requiere un payload pregenerado. Las muestras contienen los campos de configuración principales necesarios para establecer comunicación con la instancia de Reaper Node correspondiente.
Antes de compilar el payload, los parámetros de conexión y transporte requeridos deben configurarse para coincidir con la configuración de Reaper Node.
### Configuración del Payload
La configuración del payload debe proporcionar campos de entrada para los siguientes parámetros:
* **Authentication ID**
El identificador utilizado para asociar el payload con la instancia de Reaper Node configurada.
* **Server Host**
La dirección IP o nombre de host del endpoint de Reaper Node.
* **Server Port**
El puerto de red expuesto por Reaper Node para el protocolo de comunicación seleccionado.
* **Encryption Key**
Requerido cuando el transporte seleccionado utiliza cifrado. El valor debe coincidir con la configuración de cifrado utilizada por Reaper Node. Si el cifrado está deshabilitado, este campo no es necesario.
* **User-Agent**
El valor de identificación del cliente HTTP utilizado al establecer la comunicación HTTP/HTTPS inicial. El payload debe usar un User-Agent soportado por la configuración correspondiente de Reaper Node.
El User-Agent no necesita ser idéntico entre diferentes configuraciones de Reaper Node. Un payload puede usar cualquier User-Agent definido como soportado por el perfil de Reaper Node seleccionado, siempre que la configuración resultante sea compatible con la configuración de transporte del lado del servidor.
### Ejemplo de Configuración
El siguiente ejemplo muestra una configuración de transporte HTTPS de muestra con parámetros de autenticación, direccionamiento del servidor, cifrado y 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;
Esta configuración representa un transporte HTTPS con cifrado habilitado. Los valores mostrados arriba son marcadores de posición y deben reemplazarse con los parámetros definidos por la configuración correspondiente de Reaper Node.
El ejemplo en C++ está destinado a proporcionar un punto de partida para la personalización. Los usuarios pueden modificar la configuración y los parámetros relacionados con el transporte según el perfil de Reaper Node que estén probando, y luego compilar el payload personalizado para su entorno de simulación autorizado.
La Tabla de Listeners proporciona una visión centralizada de todos los listeners C2 activos y configurados. Muestra detalles esenciales como nombre del listener, dirección, protocolo de red, método de cifrado, perfil de exfiltración y estado actual (Activo o Detenido/Desconectado). Desde esta interfaz, los operadores pueden iniciar, detener, renombrar o eliminar listeners con facilidad. También ofrece acceso rápido a las claves de cifrado y a los IDs de autenticación para gestionar la comunicación de los beacons. Esta tabla sirve como centro de mando para orquestar y monitorear su infraestructura C2.

Esta versión incluye una GUI completa que optimiza las operaciones de simulación de adversarios mediante la gestión centralizada de listeners, el seguimiento de sesiones en tiempo real, perfiles de comunicación personalizables, flujos de trabajo de exfiltración integrados y controles de operador flexibles para una gestión eficiente de los compromisos.
⚠️ NOTA: Este proyecto está en desarrollo activo. Las funciones se añaden y mejoran continuamente.
| Función | Descripción |
|---|---|
| Listeners multiprotocolo | DoH, HTTPS, HTTP, QUIC, Reverse TCP |
| Cifrado por listener | AES, XOR, RC4, DES, ChaCha20, RSA |
| Perfiles de exfiltración | Google Drive, OneDrive, Dropbox |
| Canales C2 integrados | Canal de comunicación C2 integrado con Telegram, Discord |
| Soporte de proxy | Soporte de proxy y redirector SOCKS4, SOCKS4a y SOCKS5 |
| Algoritmo de generación dinámica de dominios | Soporte de DGA para la simulación de infraestructura resiliente |
| Huella JA3S | Huellas JA3S personalizables para la simulación de tráfico y el ajuste de perfiles de red |
| Perfiles C2 maleables | Soporte de Malleable C2 profiles de la comunidad para una simulación flexible del tráfico de red |
| Stagers y Loaders | Técnicas automatizadas de stager y loader diseñadas para la simulación de adversarios APT |
| Herramientas integradas | Ofuscador de scripts, kit de phishing y alojamiento de archivos integrados |
| Generación de certificados TLS | Certificados TLS autofirmados que imitan a proveedores de confianza |
| Personalización HTTP | Codificación Base64 de URL y encabezados HTTP personalizados tanto para la comunicación del cliente como del servidor |
| Gestor de sesiones en tiempo real | Seguimiento de estado en vivo, monitoreo de sesiones y capacidades de actualización en tiempo real |
| Nombres personalizados y rutas URI |
Configure ajustes de exfiltración por sesión para proveedores de almacenamiento en la nube compatibles como Google Drive, OneDrive, and Dropbox. La interfaz de Exfiltration Profile le permite definir tokens de acceso a la API y rutas de carpetas de destino, lo que le permite personalizar los flujos de trabajo de recolección de datos para cada sesión. Cada sesión puede usar su propio perfil de exfiltración, lo que facilita el enrutamiento de los datos recolectados a diferentes proveedores de almacenamiento en la nube o destinos según la operación.

La capa de comunicación de Telegram utiliza un bot de Telegram como intermediario entre el servidor C2 y el payload. El servidor C2 se autentica en la cuenta de Telegram usando el API ID, el API Hash y el número de teléfono configurados, y luego se conecta al bot de Telegram creado previamente a través de esa cuenta

El Bot Token del bot está embebido en el payload, lo que permite al payload comunicarse con el bot a través de la API de Telegram. Los comandos se envían desde el servidor C2 al bot, y el bot los reenvía al payload, que ejecuta la tarea recibida y devuelve los resultados por la misma ruta de comunicación. Esto crea un canal bidireccional de comando y control usando Telegram como capa de comunicación.

Abra @BotFather en Telegram y cree un nuevo bot usando /newbot.
/newbotbot
El Bot Token es requerido por el Agente de Telegram para autenticarse con la API de Telegram Bot.
Abra el portal oficial de desarrollo de la API de Telegram y cree una nueva aplicación.
Genere las siguientes credenciales: https://my.telegram.org/apps
API IDAPI Hash
Estas credenciales son usadas por BEAR-C2 para autenticar la cuenta de Telegram utilizada para gestionar la comunicación del bot.
Abra Telegram Agent.cpp y configure los ajustes de comunicación de Telegram.
El Bot Token generado por BotFather debe colocarse en /Stagers-Loaders/C2 Channel Agent Samples/Telegram Agent.cpp antes de compilar el payload.

El flujo de configuración es:
BotFather → Bot Token → payload.cpp → Compile
El API ID y el API Hash son usados por la integración de Telegram de BEAR-C2, mientras que el Bot Token se configura en el payload de Telegram para que pueda comunicarse con el Bot de Telegram configurado.
Esta etapa reemplaza el canal tradicional de comunicación de comando y control con una capa de comunicación basada en Discord usando la Discord Gateway API. En lugar de depender de servidores dedicados, direcciones IP fijas o dominios personalizados, los operadores se comunican con el implante simulado a través de un canal privado de Discord.

La capa de comunicación de Discord utiliza dos bots de Discord conectados a través del mismo canal de Discord. Un bot está conectado al servidor C2, mientras que el segundo bot está asignado al payload. Los dos bots se comunican a través del canal compartido de Discord, permitiendo el envío de tareas y la comunicación entre el servidor C2 y el payload a través de Discord.
Dado que Discord no permite que los bots se comuniquen directamente con otros bots, usar un canal compartido proporciona la ruta de comunicación entre ambas partes.

El Agente de Discord usa la Gateway y la API de Discord como capa de comunicación entre el payload y BEAR-C2. La configuración requiere aplicaciones de Bot de Discord, un canal de texto dedicado, los permisos de bot necesarios y los valores correspondientes configurados en el ejemplo de agente en C++.
Abra el "Discord Developer Portal" oficial (https://discord.com/developers/applications) y cree las aplicaciones de Bot de Discord necesarias para la simulación.
El canal C2 de Discord usa dos identidades de Bot:
Para cada aplicación, abra la configuración de Bot y genere el Bot Token requerido.

Abra la Bot configuration in the Discord Developer Portal y habilite Message Content Intent.
El Bot también debe tener los permisos requeridos para el canal de texto de Discord usado por la simulación, incluyendo:
Estos permisos permiten al Bot acceder a los mensajes del canal configurado y enviar mensajes a través de la misma ruta de comunicación. Discord requiere el Message Content Intent para las aplicaciones que necesitan recibir el contenido de los mensajes a través de la API.

Cree un canal de texto privado dedicado para el Agente de Discord y añada ambas aplicaciones de Bot al canal.
Asegúrese de que the same permissions configured in the Discord Developer Portal también estén habilitados para las aplicaciones de Bot en el canal.
Copie el Channel ID con el Modo Desarrollador de Discord habilitado. Discord proporciona el Channel ID a través de la opción Copy Channel ID when Developer Mode is enabled.

El same Channel ID is used by the C2 configuration and the Discord Agent para que ambas partes se comuniquen a través del mismo canal de Discord.
Abra el ejemplo del Agente de Discord ubicado en:
"Stagers-Loaders/C2 Channel Agent Samples/Discord Agent.cpp"
El ejemplo proporciona campos de configuración para el Bot Token de Discord, el Channel ID y el Bot User ID:

Reemplace los marcadores de posición con los valores pertenecientes al Bot del Payload y al canal de Discord dedicado.
El "BOT_USER_ID" identifica la cuenta de Bot usada por el payload. Los User IDs de Discord se pueden copiar después de habilitar el Modo Desarrollador.
En la configuración del Canal de Discord dentro de BEAR-C2, proporcione el C2 Bot Token, Channel ID, and Listener Name. correspondiente.

El Bot C2 y el Bot del Payload usan el mismo canal de Discord como ruta de comunicación, mientras que cada lado se autentica usando su propio Bot Token.
Una vez completadas la configuración de Discord y el ejemplo del payload, compile el Agente en C++ para su uso en el entorno de simulación de adversarios autorizado.
⚠️ NOTA: Limitaciones de los Canales C2
Los Canales C2 introducen limitaciones relacionadas con la transferencia de datos y la identificación de Beacons cuando se usan plataformas de mensajería de terceros como capa de comunicación entre el Servidor C2 y los Beacons
● Limitaciones de Transferencia de Datos
Telegram y Discord imponen un límite máximo de caracteres en los mensajes individuales intercambiados a través de sus APIs de bots. En BEAR C2, el Canal C2 actúa como una capa de transporte entre el Servidor C2 y el Beacon, por lo que esta limitación se aplica a los datos que se transfieren a través del canal y no al tamaño del propio payload del Beacon. Los datos enviados desde el Servidor C2 al Beacon y los datos devueltos desde el Beacon al Servidor C2 pueden codificarse en Base64 antes de la transmisión. Dado que Base64 aumenta el tamaño de la representación transmitida, la cantidad de datos originales que se pueden transferir en un solo mensaje es menor que el límite de caracteres de la plataforma.
[ Telegram ] 4096 caracteres máximo por mensaje, 4000 caracteres configurados para la transferencia de datos C2

[ Discord ] 2000 caracteres máximo por mensaje, 1400 caracteres configurados para la transferencia de datos C2

Los límites configurados se mantienen intencionalmente por debajo de los límites de la plataforma para proporcionar un margen suficiente para la estructura del mensaje C2 y la sobrecarga de codificación. Cuando los datos exceden el límite configurado, los datos codificados deben dividirse en múltiples mensajes y reconstruirse por el lado receptor.
● Identificación de Beacons y Atribución de Respuestas
Los Canales C2 también introducen una limitación cuando múltiples Beacons comparten el mismo bot de Telegram o canal de Discord. Todos los Beacons que se comunican a través del mismo bot o canal usan la misma ruta de comunicación, por lo que el Servidor C2 no puede representar inherentemente a cada Beacon como una sesión de comunicación independiente. Por ejemplo, si cinco Beacons se comunican a través del mismo bot de Telegram o canal de Discord, aparecerán como una única ruta de comunicación C2 en lugar de cinco Beacons identificables de forma independiente.
La misma limitación afecta a las respuestas de los comandos. Cuando un comando se distribuye a múltiples Beacons a través del mismo bot o canal, las respuestas resultantes se devuelven a través de esa misma ruta de comunicación. Sin un mecanismo adicional de identificación de Beacons, el Servidor C2 no puede determinar de forma fiable qué Beacon generó una respuesta específica.
La solución directa es asignar un bot dedicado a cada Beacon en Telegram, o una configuración de canal o bot aislada para cada Beacon en Discord. Esto crea una correspondencia uno a uno entre el Beacon y su ruta de comunicación, permitiendo distinguir Beacons individuales y sus respuestas. La contrapartida es un mayor aumento de la infraestructura y la sobrecarga de gestión a medida que aumenta el número de Beacons.
Estas limitaciones son específicas del uso de plataformas de mensajería como canales de transporte C2 y son independientes del propio payload del Beacon.
● Impacto Práctico
La limitación del tamaño de los mensajes reduce la cantidad de datos que se pueden transferir de una vez, lo que puede aumentar el tiempo necesario para enviar comandos y recibir su salida
Usar un bot de Telegram o canal de Discord compartido hace que múltiples Beacons aparezcan como un único Beacon en la tabla C2, mientras que los comandos se entregan a todos los Beacons que usan ese bot o canal y las respuestas no pueden atribuirse de forma fiable a un Beacon específico.
Simule campañas de spear-phishing a través de una interfaz dedicada para configurar y gestionar escenarios de phishing durante ejercicios autorizados de simulación de adversarios. El módulo proporciona controles de campaña como límites de envío de víctimas, parámetros de phishing configurables y gestión de sesiones, lo que permite a los operadores controlar el comportamiento de la campaña y evaluar la interacción del usuario con escenarios de phishing simulados. Está diseñado para respaldar evaluaciones de phishing controladas, a la vez que proporciona a los operadores una mayor visibilidad y control sobre la ejecución de la campaña.

Aloje y distribuya archivos a través de una interfaz dedicada de Host File con ajustes de servidor configurables y entrega automatizada de archivos. Los archivos alojados se cargan automáticamente cuando se accede a ellos, sin requerir interacción del usuario ni un aviso de descarga manual. La interfaz proporciona alojamiento y gestión de entrega de archivos centralizados para flujos de trabajo controlados de simulación de adversarios y pruebas de seguridad autorizadas.
El Script Obfuscator proporciona un motor de ofuscación integral que soporta payloads PS1, BAT, HTML, VBS, JS y PY con múltiples capas de ofuscación configurables. Incluye variable and function renaming, string encryption, junk code insertion, multi-layer obfuscation, anti-debugging techniques, and XOR-based payload encryption. Estas funciones aumentan la complejidad del análisis, reducen la legibilidad del script y hacen que la ingeniería inversa sea significativamente más difícil, a la vez que ayudan a los payloads a resistir mejor el análisis estático.
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 ✅ |
| Nombres de campaña definidos por el usuario y rutas URI configurables para mayor flexibilidad operativa |
| Controles de reconexión y timeout | Retrasos de reconexión configurables y umbrales de timeout ajustables por sesión |
| Identificadores de autenticación | Tokens de autenticación únicos con controles de expiración integrados para mayor seguridad |
| Utilidades de endurecimiento de sesiones | Limpiador de historial, limitador de sesiones y gestión de timeout de autenticación para sesiones activas |
| [**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 |