Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
Outils/GitHubGitHub/zeoday/cobaltstrike4.5_cdf-1
Frameworks de Tests d'IntrusionFrameworks d'ExploitationAnalyse des VulnérabilitésÉvasion IDS/IPSRétro-ingénierieCryptographieCommandement et ContrôleAnalyse de BinairesAuthentificationRed TeamingDéveloppement de Charges Utiles
GitHubzeoday/cobaltstrike4.5_cdf-1

cobaltstrike4.5_cdf-1

Version 4.5 de Cobalt Strike cra/quer, suppression de la signature Checksum8, bypass BeaconEye, correction de la fuite du stage dans le chemin d'erreur, ajout de l'authentification à deux facteurs TOTP, correction de CVE-2022-39197, etc.

Voir le dépôt
13il y a 3 ansPas encore vérifié

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

cobaltstrike4.5_cdf

Crack de cobaltstrike version 4.5, suppression de la signature checksum8, bypass de BeaconEye, correction de la fuite de stage par chemin erroné, ajout de la vérification à double facteur TOTP, ajout de l'affichage chiffré des noms d'utilisateur, correction du bug de dérivation foreign de la version 4.5, modification du nom du fichier de configuration du client, etc.

Crack de cobalt strike 4.5

Crack de cobaltstrike 4.5

[TOC]

Avertissement\Accord de non-responsabilité

Cet outil ainsi que le contenu de cet article sont réservés à la recherche en sécurité. L'utilisateur assume l'entière responsabilité légale et toute responsabilité connexe résultant de l'utilisation de cet outil et du contenu de cet article ! L'auteur n'assume aucune responsabilité légale ! Si vous commettez un quelconque acte illégal lors de l'utilisation de cet outil et du contenu de cet article, vous assumez seul les conséquences qui en découlent ; nous n'assumons aucune responsabilité légale ni conjointe. Dans le cas contraire, veuillez ne pas installer ni utiliser cet outil. Votre utilisation de cet outil ou toute autre manifestation expresse ou implicite d'acceptation du présent accord sera considérée comme votre lecture et votre acceptation des termes du présent accord. Lors de l'utilisation de cet outil pour des recherches en sécurité, vous devez vous assurer que cette activité est conforme aux lois et règlements et que vous avez obtenu les autorisations nécessaires. N'utilisez pas cet outil sur des cibles non autorisées.

Oui, je suis de retour, en continuité avec l'original cobaltstrike4.4_cdf : https://github.com/lovechoudoufu/about_cobaltstrike4.4_cdf Cette fois-ci, il s'agit de la version 4.5. La version 4.4 précédente a été supprimée par GitHub ; je suppose que ce projet sera également supprimé d'ici peu ~.

Il est recommandé de rejoindre le groupe Telegram (小飞机) ; les futures mises à jour et projets pourront être téléchargés depuis le groupe après leur suppression :

image-20220802163532221

Avant utilisation, veuillez vérifier soigneusement le hash du fichier jar de la version correspondante.

Crack de CS

Versions antérieures à 4.5

Processus de certification (exemple avec la 4.3) : la version 4.5 a été légèrement modifiée à la fin.

Clés de déchiffrement officielles des différentes versions :

root@kitploit:~
4.0 1be5be52c6255c33558e8a1cb667cb06
4.1 80e32a742060b884419ba0c171c9aa76
4.2 b20d487addd4713418f2d5a3ae02a7a0
4.3 3a4425490f389aeec312bdd758ad2b99
4.4 5e98194a01c6b48fa582a6a9fcbb92d6

cobaltstrike.auth : fichier de clé d'authentification, chiffré RSA, contenu après déchiffrement :

4.3

root@kitploit:~
-54, -2, -64, -45,	//文件头
0, 77,	//后续长度 
1, -55, -61, 127, 	//证书时间限制29999999(永久)
0, 0, 0, 1, 	//watermark(水印)
43, 	//版本
16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
16, 58, 68, 37, 73, 15, 56, -102, -18, -61, 18, -67, -41, 88, -83, 43, -103

À chaque nouvelle version, la longueur correspondante augmente de 17 et la clé s'allonge de 17 octets.

Dans aggressor/Aggressor.class, License.checkLicenseGUI(new Authorization()); lance la certification de licence :

image-20211101142121856

Dans License.checkLicenseGUI, isValid, isPerpetual, isExpired, isAlmostExpired déterminent si la licence est valide ou expirée :

image-20211101142738431

La classe Authorization gère le fichier cobaltstrike.auth : elle lit le contenu du fichier et appelle AuthCrypto().decrypt pour le traiter :

image-20211101143829398

Dans AuthCrypto(), le constructeur appelle load() ; la fonction load() effectue une vérification md5 sur resources/authkey.pub, puis récupère la clé publique RSA :

image-20211101144809625

Dans decrypt(), _decrypt est appelé pour déchiffrer le contenu du fichier cobaltstrike.auth avec la clé publique RSA, le résultat étant affecté au tableau var2, puis converti via DataParser et affecté à var3 ; la méthode readInt() récupère les quatre premiers octets de var3 pour identifier l'en-tête du fichier (-889274181 pour les versions 3.x ; -889274157 pour les versions 4.x). Ensuite, readShort() récupère deux octets de var3 comme longueur et les affecte à var5, puis var6 = var3.readBytes(var5) récupère le contenu de cette longueur, l'affecte à var6 et le retourne :

image-20211101145153818

Le tableau arrayOfByte2 obtenu dans la classe Authorization correspond au contenu après suppression des six premiers octets. Le traitement du tableau arrayOfByte2 se poursuit : quatre nombres sont d'abord récupérés et affectés à i, puis quatre nombres sont affectés à watermark, puis un nombre est affecté à b1 ; on vérifie que b1 est inférieur à 43 et que i est égal à 29999999. Dans common/ListenerConfig, si watermark vaut 0, un filigrane de détection antivirus est ajouté :

image-20211101152338045

image-20211101152000407

Après avoir supprimé les 6 premiers octets, puis les 9 octets correspondant à i, watermark et b1, il reste les clés des versions 4.0 à 4.3, de la forme : 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 :

root@kitploit:~
            byte b2 = dataParser.readByte();	//获取1位,即16
            byte[] arrayOfByte3 = dataParser.readBytes(b2);		//获取16位,为4.0的key
            byte b3 = dataParser.readByte();	//获取1位,即16
            byte[] arrayOfByte4 = dataParser.readBytes(b3);		//获取16位,为4.1的key
            byte b4 = dataParser.readByte();	//获取1位,即16
            byte[] arrayOfByte5 = dataParser.readBytes(b4);		//获取16位,为4.2的key
            byte b5 = dataParser.readByte();	//获取1位,即16
            byte[] arrayOfByte6 = dataParser.readBytes(b5);		//获取16位,为4.3的key赋值给arrayOfByte6

Dans la classe Authorization, la méthode SleevedResource.Setup est appelée pour traiter arrayOfByte6. Dans SleevedResource, la clé est définie comme clé de déchiffrement AES et HmacSHA256 ; dans _readResource, this.data.decrypt(arrayOfByte1); effectue l'appel de déchiffrement, le contenu déchiffré étant les fichiers dll de /sleeve/ :

image-20211101153935202

Dans SleeveSecurity, la clé de déchiffrement AES et HmacSHA256 est définie ; une valeur de hachage de 256 octets est calculée à partir de la valeur transmise, dont les octets 0-16 servent de clé AES et les octets 16-32 de clé HmacSHA256 :

image-20211101154127243

Sans la clé correspondante, il est impossible de déchiffrer les dll du dossier sleeve ; lors de la connexion au serveur, le message d'erreur [Sleeve] Bad HMAC s'affiche :

image-20211101160942103

Pour la partie déchiffrement hmac, voir : Crack de Cobaltstrike 4 — Je m'attribue moi-même une licence

La clé d'un crack réussi est donc la clé correspondant à la version de CS.

Nouvelle vérification dans la version 4.5

Selon la description officielle, la version 4.5 renforce la sécurité de la licence, et c'est bien le cas.

image-20220802145353409

Nous devons donc déchiffrer le fichier auth divulgué pour voir ce qui a été ajouté :

image-20220802154920364

Après l'emplacement de la clé 4.5, une chaîne supplémentaire apparaît : il s'agit du watermarkHash ajouté dans cette version :

image-20220802155137639

Le watermarkHash est lié à la génération du beacon et aux dll du dossier sleeve ; sans lui ou s'il est incorrect, le beacon ne peut pas se connecter. L'éditeur peut probablement remonter à la source de la fuite grâce à ce watermarkHash.

image-20220802155317878

Méthodes de crack

Méthode 1 : clé codée en dur

Commentez les autres codes et codez en dur le paramètre affecté après le déchiffrement RSA de AuthCrypto().decrypt :

image-20220802155654981

root@kitploit:~
         byte[] var4 = {1, -55, -61, 127, 0, 1, -122, -96, 45, 16, 27, -27, -66, 82, -58, 37, 92, 51, 85, -114, -118, 28, -74, 103, -53, 6, 16, -128, -29, 42, 116, 32, 96, -72, -124, 65, -101, -96, -63, 113, -55, -86, 118, 16, -78, 13, 72, 122, -35, -44, 113, 52, 24, -14, -43, -93, -82, 2, -89, -96, 16, 58, 68, 37, 73, 15, 56, -102, -18, -61, 18, -67, -41, 88, -83, 43, -103, 16, 94, -104, 25, 74, 1, -58, -76, -113, -91, -126, -90, -87, -4, -69, -110, -42, 16, -13, -114, -77, -47, -93, 53, -78, 82, -75, -117, -62, -84, -34, -127, -75, 66, 0, 0, 0, 24, 66, 101, 117, 100, 116, 75, 103, 113, 110, 108, 109, 48, 82, 117, 118, 102, 43, 86, 89, 120, 117, 119, 61, 61};

Méthode 2 : approche Javaagent

Principe de Javaagent : https://www.cnblogs.com/rickiyang/p/11368932.html

Outil de crack de référence : https://github.com/Twi1ight/CSAgent

Le cœur du crack reste la clé correspondant à la version de CS.

Suppression des pièges cachés

Dans beacon/BeaconData, la valeur de la méthode shouldPad est fixée à false :

image-20211101180447451

Nouveau piège caché dans la 4.4

(L'analyse de la certification de licence a été faite avec la 4.3 comme exemple ; en passant à la 4.4, on constate que le programme se ferme à l'exécution : il existe un nouveau piège caché)

Outre le exit précédent lié à this.shouldPad, une vérification .class a été ajoutée dans common/Helper ; il suffit de la commenter :

image-20211119153406737

Une vérification .class a été ajoutée dans common/Starter ; il suffit de la commenter :

image-20211119153558224

Une vérification .class a été ajoutée dans common/Starter2 ; il suffit de la commenter :

image-20211119153636952

Une vérification .class a été ajoutée dans beacon/CommandBuilder : (ce piège est vraiment vicieux — après 4 heures de connexion continue entre le client et le teamserver, les commandes ne peuvent plus être exécutées ; comme je n'avais jamais dépassé cette durée, je ne l'avais jamais remarqué, ggg)

image-20220505104735903

Nouveaux pièges cachés dans la 4.5

La version 4.5 ajoute tout un tas de pièges cachés visant Javaagent ; ceux qui craquent en décompilant le fichier jar peuvent les ignorer ; il suffit de rechercher javaagent et de les modifier un par un :

image-20220802160404976

Une fois ces points supprimés, on peut à nouveau faire du sport d'équipe.

CS : suppression de la signature checksum8

Je ne m'attarderai pas sur la signature checksum8, mais il est tout de même nécessaire de la modifier pour éviter d'être détecté par nmap et les moteurs de recherche d'espace.

Modification du code

Dans BeaconPayload, modifiez la valeur XOR par une nouvelle valeur :

N'importe quel nombre décimal convient ; il faudra ensuite utiliser la valeur hexadécimale correspondante dans les dll.

image-20211108114054512

Modification des dll

Utilisez CrackSleeve pour déchiffrer les dll : https://github.com/ca3tie1/CrackSleeve/

  1. Placez cobaltstrike.jar et CrackSleeve.java dans le même dossier
  2. Compilez (javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java)
  3. Déchiffrez le fichier (java -classpath cobaltstrike.jar;./ CrackSleeve decode) # à exécuter en ligne de commande Windows

Appuyez sur Alt+T pour rechercher le mot-clé : 2Eh

image-20211107222017434

image-20211107222039265

Modifiez directement la valeur XOR : cliquez d'abord sur Change byte pour trouver 2E et le modifier, puis Apply pathes to input file pour enregistrer. (N'oubliez pas d'enregistrer)

image-20211107222223636

Les dll à modifier : beacon.dll、beacon.x64.dll、dnsb.dll、dnsb.x64.dll、pivot.dll、pivot.x64.dll、extc2.dll、extc2.x64.dll(les nouveaux rl100k.dll de la 4.5 doivent également être modifiés)

Ensuite, réchiffrez les dll avec CrackSleeve ; enfin, placez les dll du répertoire encode dans le répertoire du projet Idea puis recompilez et reconditionnez.

Lors des tests, l'URI reste accessible, mais son contenu ne peut plus être déchiffré par les scripts nmap ; de même, cela permet d'échapper à la reconnaissance des moteurs de recherche d'espace :

image-20211107233719344

Outre la modification de la valeur XOR, on peut aussi https://mp.weixin.qq.com/s?__biz=MzA3MDY2NjMxMA==&mid=2247484641&idx=1&sn=014f6c4ad5343e3f5034c33dffa66f26&chksm=9f3815c8a84f9cde1c7493ff29cfc89c0474fec48ede52be618727e7b9a5ab321c4743e1a44c&mpshare=1&scene=23&srcid=1202NA46yt71CvD3BMGKS10c&sharer_sharetime=1606892728447&sharer_shareid=ff83fe2fe7db7fcd8a1fcbc183d841c4#rd remplacer l'algorithme checksum8, mais cela ne permet plus qu'un accès à une URI fixe, nécessite un profile pour fonctionner, et chaque modification d'URI exige un nouveau packaging. Chaque méthode a ses avantages et ses inconvénients.

CS : suppression des signatures BeaconEye

L'idée de modification pour supprimer les signatures BeaconEye provient de ce lien ; les octets à modifier pour les versions 4.3 et 4.4 sont les suivants.

Utilisez CrackSleeve pour déchiffrer les dll : https://github.com/ca3tie1/CrackSleeve/

  1. Placez cobaltstrike.jar et CrackSleeve.java dans le même dossier

  2. Compilez (javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java)

  3. Déchiffrez le fichier (java -classpath cobaltstrike.jar;./ CrackSleeve decode) # à exécuter en ligne de commande Windows

4.3 clé 58, 68, 37, 73, 15, 56, -102, -18, -61, 18, -67, -41, 88, -83, 43, -103 4.4 clé 94, -104, 25, 74, 1, -58, -76, -113, -91, -126, -90, -87, -4, -69, -110, -42

Modifications pour la 4.3

dll 32 bits

Adresse : 10009FBB

6A 00 à modifier en 6A 09 (00 peut être remplacé par n'importe quelle valeur)

image-20211111165257545

dll 64 bits

Adresse : 000000001800186C3

Dans beacon.x64.dll, l'instruction est xor edx, edx ; à modifier en mov edx, esi

image-20211111165321033

Modifications pour la 4.4

dll 32 bits

Adresse : 1000A0B9

6A 00 à modifier en 6A 09 (00 peut être remplacé par n'importe quelle valeur)

image-20211112104322791

dll 64 bits

Adresse : 000000018001879B

Dans beacon.x64.dll, l'instruction est xor edx, edx ; à modifier en mov edx, esi

image-20211112105408975

Pour réchiffrer, utilisez : java -classpath cobaltstrike.jar;./ CrackSleeve encode

image-20211111173148579

image-20211112124415835

Modifications pour la 4.5

dll 32 bits

Adresse : 1000A65D

image-20220609144218351

dll 64 bits

Adresse : 000000018000CA3F

image-20220609160825342

(Les nouveaux rl100k.dll de la 4.5 doivent également être modifiés)

CS : correction de la fuite de stage par chemin erroné

Source : https://mp.weixin.qq.com/s?__biz=Mzg2NjQ2NzU3Ng==&mid=2247489846&idx=1&sn=181c223cab4bce4e06def94604166348&chksm=ce4b32a1f93cbbb70e63e589d0da6323a8d2d4539c8aa0ef57d4005976dda6d73caeddebcac3&mpshare=1&scene=1&srcid=0308x6zXAxyDR8lv27V2O9yn&sharer_sharetime=1647358883801&sharer_shareid=15e69d4f532774f3e596a31efa4ef72b#rd

image-20220330111308258

La méthode consiste simplement à ajouter une vérification de / sur l'URI : si l'URI ne commence pas par /, répondre 404 :

Modification 4.4

image-20220330111413985

Modification 4.3

image-20220330125957143

Ajout de l'affichage chiffré des noms d'utilisateur

Afin d'éviter que le mot de passe TOTP ou le nom de connexion à CS ne fuient dans le journal des événements (Event Log), le champ name est affiché via MD5 salé ; après modification :

image-20220330112745362

Ajout de la vérification TOTP

Ajout de la vérification à double facteur TOTP pour renforcer la connexion et empêcher que le mot de passe ne soit dérobé par force brute.

Côté teamserver, un lien de QR code TOTP a été ajouté dans la sortie du teamserver :

image-20220407112543322

(Avant de supprimer nohup.out, pensez à copier le QR code ; à chaque démarrage du teamserver, un nouveau QR code est généré, il faut donc scanner à nouveau à chaque démarrage du teamserver)

Ouvrez dans un navigateur (nécessite un VPN), scannez le QR code avec Google Authenticator ou un validateur TOTP, ou copiez la clé après secret%3D et configurez-la dans le validateur :

image-20220407112054716

Côté connect, host, port et password restent identiques à avant ; dans user, les six derniers chiffres correspondent au code dynamique TOTP et permettent la connexion :

image-20220407111813265

Si le code dynamique TOTP n'est pas renseigné ou est incorrect, un avertissement s'affiche :

image-20220407113709140

Remarque : si vous n'avez pas de téléphone sous la main, vous pouvez utiliser une extension de navigateur avec fonction TOTP ou écrire un simple script python pour générer le code TOTP.

Correction du bug de dérivation foreign de CS 4.5

L'erreur suivante est déclenchée lors d'un spawn avec windows/foreign/reverse_http(s) :

image-20220827183854784

Cette version ajoute l'opération getScalar de Custom dans ScListener, mais ne tient pas compte du cas foreign, ce qui provoque l'erreur car var1.customDLL et customFileName sont vides :

image-20220827184042529

La correction provisoire consiste à retourner directement le shellcode lorsque le payload est de type foreign ; si cette méthode présente d'autres bugs, veuillez signaler via les issues :

image-20220827190844595

Après correction, cela fonctionne normalement :

image-20220827190954960

CS : modification du nom du fichier de configuration du client

Pour empêcher que la configuration ne soit lue par des pots de miel MySQL, le nom du fichier de configuration du client CS n'est plus celui par défaut ; un nom de fichier de 11 caractères est généré (11 caractères issus du md5 de l'adresse MAC).

image-20220827191056012

Télécharger l’outil