Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CovenantDecryptor — Déchiffre les communications Covenant C2 en extrayant les clés privées RSA des minidumps, en récupérant les clés de session AES et en convertissant les captures réseau en texte clair. | Kitploit
Outils/GitHubGitHub/naacbin/covenantdecryptor
Outils de Chiffrement/DéchiffrementCriminalistique MémoireCriminalistique RéseauAnalyse de MalwareCriminalistique NumériqueCryptographieCommandement et Contrôle
GitHubnaacbin/covenantdecryptor

CovenantDecryptor

Déchiffre les communications Covenant C2 en extrayant les clés privées RSA des minidumps, en récupérant les clés de session AES et en convertissant les captures réseau en texte clair.

Voir le dépôt
37418il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CovenantDecryptor

CovenantDecryptor est conçu pour déchiffrer les données de communication du trafic Covenant.

L'extraction de la clé privée depuis la mémoire est applicable à d'autres C2, comme Empire, étant donné son utilisation de RSACryptoServiceProvider pour créer la clé.

Comment fonctionne la communication Covenant ?

L'initialisation de la communication Covenant se compose de 3 étapes :

  • Étape 0 :
    1. L'agent infecté initie une session RSA en transmettant une clé publique chiffrée avec la SetupAESKey, qui est intégrée dans un exécutable malveillant. Avant l'envoi, il formate le texte comme décrit dans GruntHTTPStager avec le type défini à 0.
    2. Le C2 transfère une SessionKey, chiffrée avec la clé publique RSA, pour les communications ultérieures.
  • Étape 1 :
    1. L'agent infecté utilise la SetupAESKey pour déchiffrer le message, puis se sert de la clé privée RSA pour déchiffrer la SessionKey. Ensuite, il chiffre 4 octets générés aléatoirement avec la SessionKey et les transmet. Avant l'envoi, il formate le texte comme décrit dans GruntHTTPStager avec le type défini à 1.
    2. Le C2 déchiffre les 4 octets avec la SessionKey, ajoute 4 octets supplémentaires générés aléatoirement et transfère les 8 octets résultants à l'agent infecté.
  • Étape 2 :
    1. L'agent infecté déchiffre les 8 octets avec la SessionKey. Ensuite, il vérifie si les 4 premiers octets correspondent aux données précédemment transmises, puis renvoie les 4 derniers octets au C2. Avant l'envoi, il formate le texte comme décrit dans GruntHTTPStager avec le type défini à 2.
    2. Le C2 déchiffre les 4 octets et vérifie qu'ils correspondent à ceux qu'il avait transmis précédemment.

Une fois la vérification terminée, les données peuvent être échangées.

Comment ça marche ?

CovenantDecryptor est composé de deux utilitaires. Le script extract_privatekey récupère les nombres premiers p et q à partir d'un fichier minidump pour construire une clé privée RSA en employant le module public. Le script decrypt_covenant_traffic se compose de 3 commandes : modulus, key et decrypt. La première commande extrait le module de la communication Covenant, tandis que la seconde récupère la clé AES utilisée pour chiffrer le trafic de données. Enfin, la troisième commande déchiffre le trafic.

De quoi avez-vous besoin ?

  • Le trafic de données de Covenant est extrait d'une capture réseau et stocké dans un fichier séparé.
  • La clé AES, qui est intégrée dans le binaire de l'étape 0, utilisée au début de la communication.
  • Un fichier minidump d'un processus infecté.

Utilisation

Extraire le module de la requête de l'étape 0 d'un hôte infecté :

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

Récupérer la clé privée RSA à partir d'un fichier minidump d'un processus Covenant infecté :

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

Le script essaiera d'obtenir p et q en little et big endian.

Récupérer la SessionKey à partir de la réponse de l'étape 0 du C2 Covenant, utilisée pour chiffrer le trafic réseau :

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

Déchiffrer la communication Covenant :

$ 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 - Analyser un fichier brut.
  • extract_privatekey - Rechercher les clés privées en fonction de l'en-tête (sans le module).

Comme mentionné sur StackOverflow, le déchiffrement des données est également possible en utilisant la clé privée RSA brute de Microsoft.

Télécharger l’outil