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
CovenantDecryptor — Descifra las comunicaciones de Covenant C2 extrayendo claves privadas RSA de minidumps, recuperando claves de sesión AES y convirtiendo las capturas de red en texto plano. | Kitploit
Herramientas/GitHubGitHub/naacbin/covenantdecryptor
Herramientas de Cifrado/DescifradoForensia de MemoriaForensia de RedAnálisis de MalwareForensia DigitalCriptografíaComando y Control
GitHubnaacbin/covenantdecryptor

CovenantDecryptor

Descifra las comunicaciones de Covenant C2 extrayendo claves privadas RSA de minidumps, recuperando claves de sesión AES y convirtiendo las capturas de red en texto plano.

Ver Repositorio
374hace 2 añosRevisado 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

CovenantDecryptor

CovenantDecryptor está diseñado para descifrar los datos de comunicación del tráfico de Covenant.

La extracción de la clave privada de la memoria es aplicable a otros C2, como Empire, dado su uso de RSACryptoServiceProvider para crear la clave.

¿Cómo funciona la comunicación de Covenant?

La inicialización de la comunicación de Covenant consta de 3 etapas:

  • Etapa 0:
    1. El agente infectado inicia una sesión RSA transmitiendo una clave pública cifrada con SetupAESKey, que está incrustada en un ejecutable malicioso. Antes de enviarla, formatea el texto como se describe en GruntHTTPStager con el tipo establecido en 0.
    2. El C2 transfiere una SessionKey, cifrada con la clave pública RSA, para la comunicación posterior.
  • Etapa 1:
    1. El agente infectado usa SetupAESKey para descifrar el mensaje y luego emplea la clave privada RSA para descifrar la SessionKey. Después, cifra 4 bytes generados aleatoriamente con la SessionKey y los transmite. Antes de enviarlos, formatea el texto como se describe en GruntHTTPStager con el tipo establecido en 1.
    2. El C2 descifra los 4 bytes usando la SessionKey, añade 4 bytes adicionales generados aleatoriamente y transfiere los 8 bytes resultantes al agente infectado.
  • Etapa 2:
    1. El agente infectado descifra los 8 bytes con la SessionKey. Posteriormente, comprueba si los primeros 4 bytes coinciden con los datos que había transmitido previamente y transfiere los últimos 4 bytes de vuelta al C2. Antes de enviarlos, formatea el texto como se describe en GruntHTTPStager con el tipo establecido en 2.
    2. El C2 descifra los 4 bytes y verifica si se corresponden con los que había transmitido antes.

Una vez completada la verificación, se pueden intercambiar datos.

¿Cómo funciona?

CovenantDecryptor se compone de dos utilidades. El script extract_privatekey recupera los primos p y q de un archivo minidump para construir una clave privada RSA empleando el módulo público. El script decrypt_covenant_traffic consta de 3 comandos: modulus, key y decrypt. El primer comando extrae el módulo de la comunicación de Covenant, mientras que el segundo recupera la clave AES utilizada para cifrar el tráfico de datos. Por último, el tercer comando descifra el tráfico.

¿Qué necesitas?

  • El tráfico de datos de Covenant se extrae de una captura de red y se guarda en un archivo separado.
  • La clave AES, que está incrustada en el binario de la etapa 0, empleada al inicio de la comunicación.
  • Un archivo minidump de un proceso infectado.

Uso

Extrae el módulo de la solicitud de la etapa 0 de un host infectado:

root@kitploit:~
$ python3 decrypt_covenant_traffic.py modulus -i traffic.txt -k "EQCZiHdmVUQzIhEAmYh3ZlVEMyIRAJmId2ZVRDMiEQA=" -t base64
[+] Modulus: 
19574201286059123715221634877085223155972629451020572575626246458715199192950082143183900970133840359007922584516900405154928253156404028820410452946729670930374022025730036806358075325420793866358986719444785030579682635785758091517397518826225327945861556948820837789390500920096562699893770094581497500786817915616026940285194220703907757879335069896978124429681515117633335502362832425521219599726902327020044791308869970455616185847823063474157292399830070541968662959133724209945293515201291844650765335146840662879479678554559446535460674863857818111377905454946004143554616401168150446865964806314366426743287
[+] Exponent: 65537

Recupera la clave privada RSA de un archivo minidump de un proceso Covenant infectado:

root@kitploit:~
$ python3 extract_privatekey.py -i memory.dmp -m 19574201286059123715221634877085223155972629451020572575626246458715199192950082143183900970133840359007922584516900405154928253156404028820410452946729670930374022025730036806358075325420793866358986719444785030579682635785758091517397518826225327945861556948820837789390500920096562699893770094581497500786817915616026940285194220703907757879335069896978124429681515117633335502362832425521219599726902327020044791308869970455616185847823063474157292399830070541968662959133724209945293515201291844650765335146840662879479678554559446535460674863857818111377905454946004143554616401168150446865964806314366426743287 -o ./keys/
[+] Saved private key /home/user/privkey1.pem

El script intentará obtener p y q tanto en little como en big endian.

Recupera la SessionKey de la respuesta de la etapa 0 del C2 de Covenant, que se emplea para cifrar el tráfico de red:

root@kitploit:~
$ python3 decrypt_covenant_traffic.py key -i traffic.txt --key "EQCZiHdmVUQzIhEAmYh3ZlVEMyIRAJmId2ZVRDMiEQA=" -t base64 -r mykey.pem -s 1
[+] New AES key : 0011223344556677889900112233445566778899001122334455667788990011

Descifra la comunicación de Covenant:

root@kitploit:~
$ python3 decrypt_covenant_traffic.py decrypt -i traffic.txt -k "0011223344556677889900112233445566778899001122334455667788990011" -t hex -s 2
[...]
[*] Response message 10 : {"status":"2","output":"Hello.\r\n"}
[...]

TODO

  • extract_privatekey - Analizar el archivo sin formato.
  • extract_privatekey - Buscar claves privadas basándose en el encabezado (sin el módulo).

Como se menciona en StackOverflow, el descifrado de datos también se puede lograr utilizando la clave privada RSA de Microsoft en bruto.

Descargar herramienta