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
Malleable-C2-Randomizer — Un script pour randomiser les profils C2 malléables de Cobalt Strike et réduire les risques de déclencher les contrôles de détection basés sur les signatures. | Kitploit
Outils/GitHubGitHub/bluscreenofjeff/malleable-c2-randomizer
Frameworks d'ExploitationGénération de PayloadsÉvasion IDS/IPSTests d'IntrusionCommandement et ContrôleRed Teaming
GitHubbluscreenofjeff/malleable-c2-randomizer

Malleable-C2-Randomizer

Un script pour randomiser les profils C2 malléables de Cobalt Strike et réduire les risques de déclencher les contrôles de détection basés sur les signatures.

Voir le dépôt
454863il y a 8 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

Malleable-C2-Randomizer

Ce script randomise les profils Malleable C2 de Cobalt Strike grâce à l'utilisation d'un métalangage, réduisant ainsi les chances de déclencher les contrôles de détection basés sur des signatures. En bref, le script analyse le modèle fourni, remplace les variables par une valeur aléatoire provenant d'une liste de mots fournie ou intégrée, teste le nouveau modèle avec c2lint, et (s'il n'y a pas d'erreurs c2lint) produit le nouveau profil Malleable C2.

Des exemples de profils Malleable C2 compatibles avec ce script se trouvent dans le répertoire Sample Templates de ce dépôt.

Pour en savoir plus sur ce script, consultez mon article de blog Randomized Malleable C2 Profiles Made Easy.

Table des matières

  • Syntaxe du script
    • Options de base
    • Listes de mots personnalisées
  • Métalangage de substitution
    • Liste des variables
    • Construction des listes de mots
  • Exemple de modèle et résultat
  • Ressources supplémentaires

Syntaxe du script

root@kitploit:~
python malleable-c2-randomizer.py [-h] -profile PROFILE
                                  [-count COUNT]
                                  [-cobalt COBALT]
                                  [-output OUTPUT]
                                  [-notest]
                                  [-charset CHARSET]
                                  [-wordlist WORDLIST]
                                  [-useragent USERAGENT]
                                  [-spawnto SPAWNTO]
                                  [-pipename PIPENAME]
                                  [-pipename_stager PIPENAME_STAGER]
                                  [-dns_stager_subhost DNS_STAGER_SUBHOST]

Options de base

ParamètreDescription
-profile, -pChemin vers le modèle Malleable C2 à randomiser (OBLIGATOIRE)
-count, -cLe nombre de profils randomisés à créer {Par défaut = 1}
-cobalt, -dLe répertoire où se trouve Cobalt Strike (pour c2lint) {Par défaut = répertoire courant}
-output, -oNom de base de la sortie {Par défaut = nom de base du modèle et chaîne aléatoire}
-notest, -nPasser le test avec c2lint (Drapeau)

Listes de mots personnalisées

Si aucune liste de mots n'est fournie, une liste intégrée sera utilisée par défaut. Pour plus d'informations sur la création de ces listes, voir ci-dessous ou le dossier Sample Wordlists de ce dépôt.

ParamètreDescription
-charsetFichier avec un jeu de caractères personnalisé à utiliser avec la variable %%customchar%%
-wordlistFichier avec une liste de mots personnalisés à utiliser avec la variable %%word%%
-useragentFichier avec une liste de user-agents
-spawntoFichier avec une liste de processus spawnto personnalisés
-pipenameFichier avec une liste de valeurs pipename personnalisées
-pipename_stagerFichier avec une liste de valeurs pipename_stager personnalisées
-dns_stager_subhostFichier avec une liste de valeurs dns_stager_subhost personnalisées
-dns_stager_prependFichier avec une liste de valeurs dns_stager_prepend personnalisées

La plupart de ces variables de liste de mots sont directement liées aux options Malleable C2. Pour plus d'informations sur ce que font ces options de profil, consultez la documentation officielle.

Métalangage de substitution

Le métalangage de substitution comprend des variables spécifiques, dont certaines permettent des comptes de répétition optionnels, entourées de doubles signes de pourcentage, comme suit :

root@kitploit:~
%%variable:count%%

Autre exemple, la variable suivante produira 20 caractères alphanumériques :

root@kitploit:~
%%alphanumeric:20%%

Liste des variables

VariableDescriptionCompteur pris en charge ?
alphanumericGénère une lettre ascii minuscule ou majuscule ou un chiffre aléatoireOui
alphanumspecialGénère une lettre ascii minuscule ou majuscule, un chiffre ou une ponctuation aléatoireOui
alphanumspecialurlGénère une lettre ascii minuscule ou majuscule, un chiffre ou l'un des caractères suivants : -._~Oui
alphaupperGénère une lettre ascii majuscule aléatoireOui
alphalowerGénère une lettre ascii minuscule aléatoireOui
alphauppernumberGénère une lettre ascii majuscule ou un chiffre aléatoireOui
alphalowernumberGénère une lettre ascii minuscule ou un chiffre aléatoireOui
alphaGénère une lettre ascii aléatoireOui
numberGénère un chiffre aléatoireOui
hexGénère un chiffre hexadécimal aléatoireOui
netbiosGénère une lettre ascii minuscule ou majuscule, un chiffre ou l'un des caractères suivants : !@#$%^&)(.-'_{}~Oui
customCorrespond à un caractère aléatoire dans le fichier charset fourniOui
wordGénère un mot aléatoire à partir de la liste de mots fournie ou intégréeOui
booleanGénère 'True' ou 'False'Oui
useragentGénère un user-agent aléatoire à partir de la liste fournie ou intégréeNon
spawnto_x86Génère un chemin de processus x86 aléatoire à partir de la liste fournie ou intégréeNon
spawnto_x64Génère un chemin de processus x64 aléatoire à partir de la liste fournie ou intégréeNon
pipenameGénère un nom de tube aléatoire à partir de la liste fournie ou intégréeNon
pipename_stagerGénère un pipename_stager aléatoire à partir de la liste fournie ou intégréeNon
dns_stager_subhostGénère un dns_stager_subhost aléatoire à partir de la liste fournie ou intégréeNon

Construction des listes de mots

Les fichiers de listes de mots sont simplement des chaînes séparées par des lignes, des tabulations ou continues (selon le type de liste) placées dans un fichier texte.

Les listes de mots suivantes doivent être séparées par des lignes, chaque entrée sur une nouvelle ligne :

  • wordlist
  • useragent
  • pipename
  • pipename_stager
  • dns_stager_subhost
  • dns_stager_prepend

La liste de mots spawnto est un peu plus compliquée. Malleable C2 nécessite une option x86 et x64 pour modifier tous les lancements de processus. Par conséquent, chaque ligne de la liste de mots doit contenir à la fois les chemins de processus x86 et x64 séparés par une tabulation, le processus x86 étant listé en premier. Par exemple :

root@kitploit:~
%windir%\\syswow64\\eventvwr.exe	%windir%\\sysnative\\eventvwr.exe

Il est important de noter que les chaînes syswow64 et sysnative dans les chemins de processus doivent être en minuscules.

Le dernier type de liste de mots est le jeu de caractères personnalisé. Ce fichier doit inclure tous les caractères que le script doit substituer aléatoirement. Par exemple, un fichier charset de AEIOUY et une variable de %%custom:5%% produiront cinq caractères aléatoires à partir de la chaîne charset. Lors de la construction de ce jeu de caractères, gardez à l'esprit que certains caractères sont interdits dans une URI et peuvent interférer avec les communications de Beacon.

Pour des exemples de listes de mots, consultez le répertoire Sample Wordlists de ce dépôt.

Exemple de modèle et résultat

Voici un extrait d'un profil Amazon modifié :

root@kitploit:~
# This profile has been modified to use with the Malleable C2 Profile Randomizer

#
# Amazon browsing traffic profile
# 
# Author: @harmj0y
#

set sleeptime "%%number:2%%00";
set jitter    "1%%number%%";
set maxdns    "24%%number%%";
set useragent "%%useragent%%";

http-get {

    set uri "/s/ref=nb_sb_noss_1/%%number:3%%-%%number:8%%-%%number:7%%/field-keywords=%%word%%";

    client {

        header "Accept" "*/*";
        header "Host" "www.amazon.com";

        metadata {
            base64;
            prepend "session-token=";
            prepend "skin=noskin;";
            append "csm-hit=s-%%alphanumeric:20%%|%%number:13%%";
            header "Cookie";
        }
    }
}

Et voici deux ensembles de résultats du même profil :

root@kitploit:~
# This profile has been modified to use with the Malleable C2 Profile Randomizer

#
# Amazon browsing traffic profile
# 
# Author: @harmj0y
#

set sleeptime "5600";
set jitter    "19";
set maxdns    "244";
set useragent "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1";

http-get {

    set uri "/s/ref=nb_sb_noss_1/818-61846941-6716865/field-keywords=number";

    client {

        header "Accept" "*/*";
        header "Host" "www.amazon.com";

        metadata {
            base64;
            prepend "session-token=";
            prepend "skin=noskin;";
            append "csm-hit=s-UXnlEVYWc36qEuDMFPzW|2872195700726";
            header "Cookie";
        }
    }
}
root@kitploit:~
# This profile has been modified to use with the Malleable C2 Profile Randomizer

#
# Amazon browsing traffic profile
# 
# Author: @harmj0y
#

set sleeptime "7400";
set jitter    "19";
set maxdns    "246";
set useragent "Mozilla/5.0 (Windows NT 10.0; WOW64)";

http-get {

    set uri "/s/ref=nb_sb_noss_1/684-10075672-1686806/field-keywords=year";

    client {

        header "Accept" "*/*";
        header "Host" "www.amazon.com";

        metadata {
            base64;
            prepend "session-token=";
            prepend "skin=noskin;";
            append "csm-hit=s-ub5oBmGd0pnDoImCjDyK|2539750656854";
            header "Cookie";
        }
    }
}

Ressources supplémentaires

  • Profils Malleable C2 randomisés simplifiés - Jeff Dimmock
  • Documentation sur le Malleable Command and Control - Raphael Mudge
  • Malleable C2 Profiles - GitHub
  • Comment écrire des profils Malleable C2 pour Cobalt Strike - Jeff Dimmock
  • Cobalt Strike 2.0 - Malleable Command and Control - Raphael Mudge
  • Cobalt Strike 3.6 - Un chemin pour l'élévation de privilèges - Raphael Mudge
  • Un brave nouveau monde : Malleable C2 - Will Schroeder
Télécharger l’outil
dns_stager_prependGénère un dns_stager_prepend aléatoire à partir de la liste fournie ou intégréeNon