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
Malleable-C2-Randomizer — Un script para aleatorizar perfiles Malleable C2 de Cobalt Strike y reducir las posibilidades de activar controles de detección basados en firmas. | Kitploit
Herramientas/GitHubGitHub/bluscreenofjeff/malleable-c2-randomizer
Frameworks de ExploitsGeneración de PayloadsEvasión de IDS/IPSPruebas de PenetraciónComando y ControlRed Teaming
GitHubbluscreenofjeff/malleable-c2-randomizer

Malleable-C2-Randomizer

Un script para aleatorizar perfiles Malleable C2 de Cobalt Strike y reducir las posibilidades de activar controles de detección basados en firmas.

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
Ver Repositorio
45486hace 3 añosRevisado por Kitploit

Malleable-C2-Randomizer

Este script randomiza perfiles Malleable C2 de Cobalt Strike mediante el uso de un metalenguaje, reduciendo así las posibilidades de activar controles de detección basados en firmas. En resumen, el script analiza la plantilla proporcionada, sustituye las variables por un valor aleatorio de una lista de palabras proporcionada o incorporada, prueba la nueva plantilla con c2lint y (si no hay errores de c2lint) genera el nuevo perfil Malleable C2.

Los perfiles Malleable C2 de ejemplo compatibles con este script se pueden encontrar en el directorio Sample Templates de este repositorio.

Para obtener más información sobre este script, consulte mi publicación en el blog Randomized Malleable C2 Profiles Made Easy.

Tabla de Contenidos

  • Sintaxis del Script
    • Opciones Básicas
    • Listas de Palabras Personalizadas
  • Metalenguaje de Sustitución
    • Lista de Variables
    • Creación de Listas de Palabras
  • Ejemplo de Plantilla y Salida
  • Recursos Adicionales

Sintaxis del 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]

Opciones Básicas

ParámetroDescripción

Listas de Palabras Personalizadas

Si no se proporciona una lista de palabras, se utilizará una lista incorporada por defecto. Para obtener más información sobre cómo crear estas listas, consulte abajo o la carpeta Sample Wordlists de este repositorio.

La mayoría de estas variables de lista de palabras están directamente relacionadas con las opciones de Malleable C2. Para obtener más información sobre lo que hacen estas opciones de perfil, consulte la documentación oficial.

Metalenguaje de Sustitución

El metalenguaje de sustitución comprende variables específicas, algunas de las cuales permiten recuentos de repetición opcionales, encerradas entre signos de porcentaje dobles, de la siguiente manera:

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

Como otro ejemplo, la siguiente variable dará como resultado 20 caracteres alfanuméricos:

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

Lista de Variables

Creación de Listas de Palabras

Los archivos de listas de palabras son simplemente cadenas separadas por líneas, por tabulaciones o continuas (dependiendo del tipo de lista de palabras) colocadas en un archivo de texto.

Las siguientes listas de palabras deben estar separadas por líneas, con cada entrada en una nueva línea:

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

La lista de palabras spawnto es un poco más complicada. Malleable C2 requiere una opción x86 y x64 para modificar todos los procesos de spawn. Por lo tanto, cada línea de la lista de palabras debe contener tanto la ruta del proceso x86 como la x64 separadas por un tabulador, con el proceso x86 listado primero. Por ejemplo:

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

Es importante tener en cuenta que las cadenas syswow64 y sysnative en las rutas de los procesos deben estar en minúsculas.

El último tipo de lista de palabras es el juego de caracteres personalizado. Este archivo debe incluir cualquier carácter que el script deba sustituir aleatoriamente. Por ejemplo, un archivo charset de AEIOUY y una variable de %%custom:5%% generará cinco caracteres aleatorios de la cadena charset. Al crear este juego de caracteres, tenga en cuenta que algunos caracteres tienen prohibido aparecer en una URI y pueden interferir con las comunicaciones de Beacon.

Para obtener listas de palabras de ejemplo, consulte el directorio Sample Wordlists de este repositorio.

Ejemplo de Plantilla y Salida

Aquí hay un fragmento de un perfil de Amazon modificado:

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";
        }
    }
}

Y aquí hay dos conjuntos de salida del mismo perfil:

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";
        }
    }
}

Recursos Adicionales

  • Randomized Malleable C2 Profiles Made Easy - Jeff Dimmock
  • Malleable Command and Control Documentation - Raphael Mudge
  • Malleable C2 Profiles - GitHub
  • How to Write Malleable C2 Profiles for Cobalt Strike - Jeff Dimmock
  • Cobalt Strike 2.0 - Malleable Command and Control - Raphael Mudge
  • Cobalt Strike 3.6 - A Path for Privilege Escalation - Raphael Mudge
  • A Brave New World: Malleable C2 - Will Schroeder
Descargar herramienta
-profile, -p
Ruta a la plantilla Malleable C2 a randomizar (REQUERIDO)
-count, -cNúmero de perfiles randomizados a crear {Por defecto = 1}
-cobalt, -dDirectorio donde se encuentra Cobalt Strike (para c2lint) {Por defecto = directorio actual}
-output, -oNombre base de salida {Por defecto = nombre base de la plantilla y cadena aleatoria}
-notest, -nOmitir la prueba con c2lint (Indicador)
ParámetroDescripción
-charsetArchivo con un juego de caracteres personalizado para usar con la variable %%customchar%%
-wordlistArchivo con una lista de palabras personalizadas para usar con la variable %%word%%
-useragentArchivo con una lista de user-agents
-spawntoArchivo con una lista de procesos spawnto personalizados
-pipenameArchivo con una lista de valores pipename personalizados
-pipename_stagerArchivo con una lista de valores pipename_stager personalizados
-dns_stager_subhostArchivo con una lista de valores dns_stager_subhost personalizados
-dns_stager_prependArchivo con una lista de valores dns_stager_prepend personalizados
VariableDescripción¿Soporta Recuento?
alphanumericGenera una letra o dígito ascii aleatorio (mayúsculas y minúsculas)Sí
alphanumspecialGenera una letra, dígito o signo de puntuación ascii aleatorio (mayúsculas y minúsculas)Sí
alphanumspecialurlGenera una letra o dígito ascii aleatorio (mayúsculas y minúsculas), o uno de los siguientes caracteres: -._~Sí
alphaupperGenera una letra mayúscula ascii aleatoriaSí
alphalowerGenera una letra minúscula ascii aleatoriaSí
alphauppernumberGenera una letra mayúscula ascii o dígito aleatorioSí
alphalowernumberGenera una letra minúscula ascii o dígito aleatorioSí
alphaGenera una letra ascii aleatoriaSí
numberGenera un dígito aleatorioSí
hexGenera un dígito hexadecimal aleatorioSí
netbiosGenera una letra ascii aleatoria (mayúsculas y minúsculas), dígito, o uno de los siguientes caracteres: !@#$%^&)(.-'_{}~Sí
customAsigna un carácter aleatorio del archivo charset proporcionadoSí
wordGenera una palabra aleatoria de la lista de palabras proporcionada o incorporadaSí
booleanGenera 'True' o 'False'Sí
useragentGenera un user-agent aleatorio de la lista proporcionada o incorporadaNo
spawnto_x86Genera una ruta de proceso x86 aleatoria de la lista proporcionada o incorporadaNo
spawnto_x64Genera una ruta de proceso x64 aleatoria de la lista proporcionada o incorporadaNo
pipenameGenera un pipename aleatorio de la lista proporcionada o incorporadaNo
pipename_stagerGenera un pipename_stager aleatorio de la lista proporcionada o incorporadaNo
dns_stager_subhostGenera un dns_stager_subhost aleatorio de la lista proporcionada o incorporadaNo
dns_stager_prependGenera un dns_stager_prepend aleatorio de la lista proporcionada o incorporadaNo