Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
BlackBerryC2 — Marco de investigación de comando y control (C2) cifrado para educación en ciberseguridad, laboratorios de red team y experimentos de comunicación segura cliente‑servidor. | Kitploit
Herramientas/GitHubGitHub/dereeqw/blackberryc2
Herramientas de Cifrado/DescifradoGeneración de PayloadsEvasión de IDS/IPSSeguridad de RedesCriptografíaPruebas de PenetraciónComando y ControlAprendizaje y EducaciónRed TeamingHerramienta de Acceso Remoto
GitHubdereeqw/blackberryc2
3125hace 5 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

BlackBerryC2

Marco de investigación de comando y control (C2) cifrado para educación en ciberseguridad, laboratorios de red team y experimentos de comunicación segura cliente‑servidor.

Ver Repositorio

BlackBerryC2 2.0.0-beta

BlackBerryC2 es un framework de administración remota y C2 encriptado diseñado exclusivamente para uso educativo, investigación de seguridad y entornos de laboratorio controlados. BlackBerryC2 Demo

El proyecto demuestra cómo construir un servidor de comando y control personalizado con criptografía a nivel de aplicación, gestión de sesiones y comunicación segura con el cliente sin depender de pilas TLS externas.


⚠️ Aviso Importante

Este proyecto NO es malware y NO está destinado para acceso no autorizado.

BlackBerryC2:

  • No se autopropaga
  • No explota vulnerabilidades automáticamente
  • No incluye mecanismos de persistencia
  • No intenta evadir software antivirus

Úselo solo en sistemas y redes de su propiedad o para los que tenga autorización explícita para probar.


Dependencias de Python:

root@kitploit:~
pip install cryptography prompt_toolkit zstandard

zstandard es opcional pero recomendado para transferencias mayores de 1 GB.


Características Principales

  • Servidor C2 encriptado personalizado basado en TCP (v2.0)
  • Intercambio de claves ECDHE (secp256r1) — efímero o persistente
  • Cifrado autenticado AES-256-GCM por sesión
  • Autenticación HMAC-SHA256 por paquete + números de secuencia antirrepetición
  • Múltiples sesiones de cliente concurrentes
  • Consola de operador interactiva con autocompletado (prompt_toolkit)
  • Ejecución remota de comandos encriptada
  • Transferencias de archivos encriptadas con compresión zlib / Zstandard
  • Subida/bajada recursiva de directorios (get -r, put -r)
  • Transferencias en segundo plano (flag -b) — no bloqueantes, cancelables
  • Soporte de reanudación de transferencias (archivos .partial + .resume)
  • Generador de payload para cliente (generate-payload)
  • Bloqueo de IP: lista de bloqueo persistente + baneos temporales automáticos
  • Detección de escaneo/inundación: escaneo de conexión, captura de banner, fallos de handshake, inundación de heartbeat
  • Soporte opcional de proxy HTTP(S)/TLS (BlackBerryHTTPs_TLSProxyGUI)
  • Pre-autenticación SPA (Autorización de un Solo Paquete) y Port-Knocking
  • Modo BerryTransfer — servidor dedicado solo para transferencia de archivos (sin shell)
  • Registro de sesión encriptado (AES-256-GCM + PBKDF2, 600k iteraciones)
  • Registro del servidor encriptado con visor integrado en la shell (comando log)

Diseño Criptográfico

BlackBerryC2 v2.0 establece comunicación segura de la siguiente manera:

  1. El cliente se conecta vía TCP; el servidor envía el banner de servicio.
  2. El cliente envía REQUEST_PUBKEY.
  3. El servidor envía su clave pública ECDHE efímera (secp256r1).
  4. El cliente envía su clave pública ECDHE + etiqueta de autenticación HMAC-SHA256.
  5. El servidor verifica el HMAC contra el secreto precompartido (HMAC_PRE_SHARED_SECRET).
  6. Ambos lados derivan una clave de sesión AES de 256 bits mediante HKDF-SHA256 sobre el secreto compartido.
  7. Toda comunicación posterior utiliza AES-256-GCM con HMAC-SHA256 por paquete y números de secuencia antirrepetición.

Cada sesión mantiene:

  • Su propia clave AES-256 y clave HMAC
  • Nonces independientes (12 bytes aleatorios por mensaje)
  • Rastreador antirrepetición aislado (ventana de secuencia ±100)
  • Limitador de velocidad contra inundaciones (comandos/segundo configurables)

Todas las claves criptográficas se generan en tiempo de ejecución y nunca se reutilizan entre reinicios (a menos que se establezca --persistente).


Ejecución del Servidor

root@kitploit:~
python3 BlackBerryC2_server.py

Configuración por defecto:

  • Host: 0.0.0.0
  • Puerto: 9949

Argumentos de Línea de Comandos

Ejemplos:

root@kitploit:~
# Inicio básico (solicita frase de paso para el registro)
python3 BlackBerryC2_server.py

# Claves ECDHE persistentes + verbose
python3 BlackBerryC2_server.py -p -vv

# Puerto personalizado, sin verificación HMAC
python3 BlackBerryC2_server.py -P 8080 --no-secure

# Port-knocking en puertos personalizados
python3 BlackBerryC2_server.py --spa --spa-mode knock --knock-seq 9001,9002,9003

# Modo BerryTransfer con auto-confirmación
python3 BlackBerryC2_server.py --berrytransfer --auto-confirm

# Ver/descifrar registros sin iniciar el servidor
python3 BlackBerryC2_server.py --logs

Comandos de la Consola del Operador

Gestión del Servidor

Proxy


Comandos de Sesión (dentro de select <ID>)

Generales

Transferencia de Archivos


Modo BerryTransfer

BerryTransfer es un modo de servidor dedicado solo a la transferencia de archivos inspirado en scp. Cuando está activo, el servidor rechaza todo acceso a la shell y solo acepta comandos de protocolo BT:*.

Inicio:

root@kitploit:~
python3 BlackBerryC2_server.py --berrytransfer
python3 BlackBerryC2_server.py --berrytransfer --auto-confirm  # sin aviso al operador para GETs

Comandos del shell BerryTransfer:

El registro de transferencias se escribe en logs/bt_transfer.jsonl (opcionalmente cifrado con AES-256-GCM).


SPA / Port-Knocking

Cuando --spa está activo, los clientes deben autenticarse vía UDP antes de que se acepte la conexión TCP.

Modo SPA (por defecto): El cliente envía un token HMAC-SHA256 de 32 bytes a SPA_UDP_PORT.

root@kitploit:~
token = HMAC-SHA256(HMAC_SECRET, "{ip}:{time_window_30s}")

Modo Knock: El cliente toca una secuencia de puertos UDP en orden dentro de una ventana de tiempo.

root@kitploit:~
python3 BlackBerryC2_server.py --spa --spa-mode knock --knock-seq 7001,7002,7003 --knock-timeout 10

Las IPs autorizadas son válidas durante --spa-ttl segundos (por defecto 60).


Características de Seguridad


Registro (Logging)

Vea los registros con el visor integrado:

root@kitploit:~
BlackBerry> log

O de forma independiente (sin servidor):

root@kitploit:~
python3 BlackBerryC2_server.py --logs

Uso Previsto

Este proyecto está destinado solamente para:

  • Demostraciones educativas
  • Investigación de seguridad
  • Entornos de laboratorio controlados
  • Pruebas de penetración autorizadas

El uso no autorizado contra sistemas sin permiso está estrictamente prohibido.


Licencia

Consulte el archivo LICENSE para obtener detalles completos de la licencia.


Aviso Legal

Este software se proporciona "tal cual", sin garantía de ningún tipo.
Los autores no asumen ninguna responsabilidad por el uso indebido o los daños causados por este software.

Descargar herramienta
  • Configuración de inicio guardada en logs/last_start.json
  • FlagDescripción
    -p / --persistenteUsa claves ECDHE persistentes de ecdhe-cert/ (solicita frase de paso)
    -vRegistro de depuración (debug)
    -vvRegistro verbose (relajado)
    -H <host>Host de escucha (por defecto: 0.0.0.0)
    -P <port>Puerto de escucha (por defecto: 9949)
    --no-secureAcepta cualquier cliente ECDHE sin verificación HMAC
    --hmac <secret>Secreto precompartido HMAC personalizado (hex o cadena)
    --log-passphrase <pass>Cifra el registro del servidor con AES-256-GCM (PBKDF2 600k iter)
    --logsVisor de registros interactivo — no inicia el servidor
    --spaHabilita pre-autenticación SPA/port-knocking
    --spa-mode <spa|knock>spa = token UDP único, knock = secuencia de puertos
    --spa-port <port>Puerto UDP para el listener SPA (por defecto: 7331)
    --knock-seq <ports>Secuencia de puertos para modo knock (por defecto: 7001,7002,7003)
    --knock-timeout <sec>Segundos para completar la secuencia knock (por defecto: 10)
    --spa-ttl <sec>Segundos que una IP autorizada permanece válida (por defecto: 60)
    --berrytransferModo BerryTransfer: solo transferencia de archivos, sin shell
    --transfer-root <dir>Directorio raíz para BerryTransfer (por defecto: ./berry_transfers)
    --auto-confirmAprueba automáticamente todas las solicitudes GET en BerryTransfer (sin aviso al operador)
    ComandoDescripción
    listLista sesiones activas con estadísticas y nombre de host
    select <ID>Interactúa con una sesión de cliente
    all <cmd>Envía un comando a todos los clientes conectados
    reportInforme completo del estado del servidor (tiempo activo, sesiones, transferencias)
    set host <HOST>Cambia el host de escucha (reengancha el servidor)
    set port <PORT>Cambia el puerto de escucha (reengancha el servidor)
    sVbanner "<text>"Cambia el banner de servicio
    generate-payloadGenera un payload para el cliente
    fingerprintMuestra la huella digital de la clave ECDHE del servidor (SHA-256)
    ecdhe-keysImprime el par de claves ECDHE actual (PEM)
    kill <id|ip>Termina una sesión por ID o IP
    block <IP>Bloquea permanentemente una IP
    unblock <IP>Desbloquea una IP (persistente + temporal)
    blocklistMuestra las IPs bloqueadas (persistentes y temporales)
    logVisor de registros interactivo (soporta registros encriptados)
    reportResumen de estado: tiempo activo, sesiones, transferencias
    bannerVuelve a mostrar el banner de inicio
    cleanElimina los archivos de registro del servidor
    vAlterna el registro de depuración (DEBUG)
    vvAlterna el registro verbose (VERBOSE)
    cd <dir>Cambia el directorio de trabajo local del servidor
    E <cmd>Ejecuta comando mediante os.system localmente
    <any command>Ejecuta localmente en el servidor
    exitDetiene el servidor y sale
    ComandoDescripción
    proxyInicia el demonio proxy TLS/HTTP (modo automático)
    proxy --mode <mode>Modos: auto, tls, http, https, both, all
    proxy --statsMuestra estadísticas del proxy
    proxy guiInicia la GUI del proxy (proceso separado)
    stop-proxyDetiene el demonio proxy
    stop-proxy-guiDetiene la GUI del proxy
    proxy-helpAyuda completa del proxy
    ComandoDescripción
    helpMuestra ayuda de la sesión
    exitVuelve al shell principal
    !<cmd>Ejecuta comando localmente en el servidor
    <cmd>Ejecuta comando en el cliente remoto
    cmd1 && cmd2Cadena: ejecuta cmd2 solo si cmd1 tuvo éxito
    cmd1 || cmd2Cadena: ejecuta cmd2 solo si cmd1 falló
    cmd1 ; cmd2Cadena: siempre ejecuta cmd2
    ComandoDescripción
    get <file>Descarga archivo del cliente
    get <dir> -rDescarga recursiva de directorio
    get <file> -bDescarga en segundo plano (no bloqueante)
    get <dir> -r -bDescarga recursiva en segundo plano
    put <file>Sube archivo al cliente
    put <file> -excSube y ejecuta en memoria (scripts)
    put <dir> -rSubida recursiva de directorio
    put <file> -bSubida en segundo plano
    transfersLista todas las transferencias activas y completadas
    stop <ID>Cancela una transferencia en segundo plano (ej. stop T1)
    resume <local_file>Reanuda una descarga interrumpida
    screenshotCaptura la pantalla del cliente
    ComandoDescripción
    confirm <ID>Aprueba una solicitud GET pendiente
    deny <ID>Rechaza una solicitud GET pendiente
    pendingLista solicitudes GET en espera de aprobación
    auto [on|off]Activa/desactiva o establece auto-confirmación
    clientsMuestra sesiones BerryTransfer activas
    ls [dir]Lista archivos en la raíz de transferencia
    tree [dir]Árbol de archivos de la raíz de transferencia
    find <name>Busca archivo en la raíz de transferencia
    rm <file>Elimina archivo de la raíz de transferencia (con confirmación)
    log [N]Muestra las últimas N entradas del registro de transferencias (por defecto 30)
    cd <dir>Cambia el directorio de trabajo local
    pwdMuestra el directorio local actual
    !<cmd>Ejecuta comando local del sistema
    exitDetiene el servidor BerryTransfer
    CaracterísticaDetalles
    Intercambio de clavesECDHE secp256r1 efímero o persistente
    Cifrado de sesiónAES-256-GCM, nonce aleatorio de 12 bytes por mensaje
    Autenticación del clienteHMAC-SHA256 sobre secreto compartido durante el handshake
    Integridad del mensajeHMAC-SHA256 por paquete (cubre seq + nonce + ciphertext)
    AntirrepeticiónRastreador de ventana de números de secuencia por sesión
    Protección contra degradaciónTamaño mínimo de clave AES forzado (256 bits)
    Limitación de velocidad de heartbeatMínimo 3s entre heartbeats; se rastrean violaciones
    Protección contra inundación de comandosLimitador de velocidad; desconexión automática tras umbral
    Detección de escaneoContadores de escaneo de conexión, captura de banner, fallos de handshake
    Gestión de IPsLista de bloqueo persistente + baneos temporales (automáticos y manuales)
    Cifrado de registrosAES-256-GCM + PBKDF2-HMAC-SHA256 (600k iteraciones)
    Jitter en respuestasJitter aleatorio de 10–50ms para resistir ataques de temporización
    Pre-autenticaciónToken SPA o port-knocking antes de aceptar TCP
    Archivo de registroContenido
    logs/BlackBerryC2_Server.logRegistro rotativo en texto plano del servidor (INFO+)
    logs/BlackBerryC2_enc.logRegistro del servidor encriptado (si se estableció --log-passphrase)
    logs/sessions.jsonlEventos de sesión: conexión, desconexión, bytes
    logs/bt_transfer.jsonlRegistro de transferencias de archivos de BerryTransfer
    logs/last_start.jsonInstantánea de configuración de inicio (host, puerto, token, pid)