Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CovenantDecryptor — Entschlüsselt Covenant-C2-Kommunikation, indem RSA-Private Keys aus Minidumps extrahiert, AES-Sitzungsschlüssel wiederhergestellt und Netzwerk-Mitschnitte in Klartext umgewandelt werden. | Kitploit
Tools/GitHubGitHub/naacbin/covenantdecryptor
Verschlüsselungs-/EntschlüsselungstoolsSpeicherforensikNetzwerkforensikMalware-AnalyseDigitale ForensikKryptographieCommand and Control
GitHubnaacbin/covenantdecryptor

CovenantDecryptor

Entschlüsselt Covenant-C2-Kommunikation, indem RSA-Private Keys aus Minidumps extrahiert, AES-Sitzungsschlüssel wiederhergestellt und Netzwerk-Mitschnitte in Klartext umgewandelt werden.

Repository anzeigen
374vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CovenantDecryptor

CovenantDecryptor dient dazu, die Kommunikationsdaten des Covenant-Datenverkehrs zu entschlüsseln.

Die Extraktion des privaten Schlüssels aus dem Speicher ist auch auf andere C2 anwendbar, wie z. B. Empire, da dort RSACryptoServiceProvider zur Erstellung des Schlüssels verwendet wird.

Wie funktioniert die Covenant-Kommunikation ?

Die Initialisierung der Covenant-Kommunikation besteht aus 3 Stufen :

  • Stage0 :
    1. Der infizierte Agent initiiert eine RSA-Sitzung, indem er einen öffentlichen Schlüssel überträgt, der mit dem SetupAESKey verschlüsselt ist, welcher in einer schädlichen ausführbaren Datei eingebettet ist. Vor dem Senden formatiert er den Text wie in GruntHTTPStager beschrieben, wobei der Typ auf 0 gesetzt wird.
    2. Der C2 überträgt einen SessionKey, der mit dem öffentlichen RSA-Schlüssel verschlüsselt ist, für die nachfolgende Kommunikation.
  • Stage1 :
    1. Der infizierte Agent verwendet den SetupAESKey, um die Nachricht zu entschlüsseln, und nutzt dann den privaten RSA-Schlüssel, um den SessionKey zu entschlüsseln. Anschließend verschlüsselt er 4 zufällig generierte Bytes mit dem SessionKey und überträgt sie. Vor dem Senden formatiert er den Text wie in GruntHTTPStager beschrieben, wobei der Typ auf 1 gesetzt wird.
    2. Der C2 entschlüsselt die 4 Bytes mit dem SessionKey, fügt 4 zusätzliche zufällig generierte Bytes hinzu und überträgt die resultierenden 8 Bytes Daten an den infizierten Agenten.
  • Stage2 :
    1. Der infizierte Agent entschlüsselt die 8 Bytes mit dem SessionKey. Anschließend prüft er, ob die ersten 4 Bytes mit den zuvor übertragenen Daten übereinstimmen, und überträgt die letzten 4 Bytes zurück an den C2. Vor dem Senden formatiert er den Text wie in GruntHTTPStager beschrieben, wobei der Typ auf 2 gesetzt wird.
    2. Der C2 entschlüsselt die 4 Bytes und prüft, ob sie den zuvor von ihm übertragenen entsprechen.

Sobald die Überprüfung abgeschlossen ist, können Daten ausgetauscht werden.

Wie funktioniert es ?

CovenantDecryptor besteht aus zwei Dienstprogrammen. Das Skript extract_privatekey extrahiert die Primzahlen p und q aus einer Minidump-Datei, um mithilfe des öffentlichen Modulus einen privaten RSA-Schlüssel zu konstruieren. Das Skript decrypt_covenant_traffic besteht aus den 3 Befehlen modulus, key und decrypt. Der erste Befehl extrahiert den Modulus aus der Covenant-Kommunikation, während der zweite den zur Verschlüsselung des Datenverkehrs verwendeten AES-Schlüssel wiederherstellt. Schließlich entschlüsselt der dritte Befehl den Datenverkehr.

Was benötigst du ?

  • Der Datenverkehr von Covenant wird aus einem Netzwerk-Mitschnitt extrahiert und in einer separaten Datei gespeichert.
  • Der AES-Schlüssel, der in der Stage-0-Binärdatei eingebettet ist und zu Beginn der Kommunikation verwendet wird.
  • Eine Minidump-Datei eines infizierten Prozesses.

Verwendung

Extrahiere den Modulus aus der Stage-0-Anfrage eines infizierten Hosts :

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

Ermittle den privaten RSA-Schlüssel aus einer Minidump-Datei eines infizierten Covenant-Prozesses :

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

Das Skript versucht, p und q als Little- und Big-Endian zu ermitteln.

Stelle den SessionKey, der zur Verschlüsselung des Netzwerkverkehrs verwendet wird, aus der Stage-0-Antwort des Covenant-C2 wieder her :

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

Entschlüssle die Covenant-Kommunikation :

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 - Rohdatei parsen.
  • extract_privatekey - Private Schlüssel anhand des Headers suchen (ohne den Modulus).

Wie auf StackOverflow erwähnt, ist die Entschlüsselung von Daten auch mithilfe des rohen privaten RSA-Schlüssels von Microsoft möglich.

Tool herunterladen