Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Malleable-C2-Randomizer — Um script para randomizar perfis Malleable C2 do Cobalt Strike e reduzir as chances de acionar controles de detecção baseados em assinatura | Kitploit
Ferramentas/GitHubGitHub/bluscreenofjeff/malleable-c2-randomizer
Frameworks de ExploraçãoGeração de PayloadsEvasão de IDS/IPSTestes de PenetraçãoComando e ControleRed Teaming
GitHubbluscreenofjeff/malleable-c2-randomizer

Malleable-C2-Randomizer

Um script para randomizar perfis Malleable C2 do Cobalt Strike e reduzir as chances de acionar controles de detecção baseados em assinatura

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
45486há 3 anosRevisado pelo Kitploit

Malleable-C2-Randomizer

Este script aleatoriza perfis Malleable C2 do Cobalt Strike através do uso de uma metalíngua, esperando reduzir as chances de ativar controles de detecção baseados em assinaturas. Resumidamente, o script analisa o modelo fornecido, substitui as variáveis por um valor aleatório de uma wordlist fornecida ou integrada, testa o novo modelo com c2lint e (se não houver erros do c2lint) gera o novo perfil Malleable C2.

Exemplos de perfis Malleable C2 compatíveis com este script podem ser encontrados no diretório Sample Templates deste repositório.

Para mais informações sobre este script, veja meu post no blog Randomized Malleable C2 Profiles Made Easy.

Índice

  • Sintaxe do Script
    • Opções Básicas
    • Wordlists Personalizadas
  • Metalíngua de Substituição
    • Lista de Variáveis
    • Construindo Wordlists
  • Exemplo de Modelo e Saída
  • Recursos Adicionais

Sintaxe do 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]

Opções Básicas

ParâmetroDescrição
-profile, -p

Wordlists Personalizadas

Se nenhuma wordlist for fornecida, uma lista embutida será usada por padrão. Para mais informações sobre como criar essas listas, veja abaixo ou a pasta Sample Wordlists neste repositório.

A maioria dessas variáveis de wordlist está diretamente relacionada às opções do Malleable C2. Para mais informações sobre o que essas opções de perfil fazem, consulte a documentação oficial.

Metalíngua de Substituição

A metalíngua de substituição compreende variáveis específicas, algumas das quais permitem contagens de repetição opcionais, envolvidas por sinais de porcentagem duplos, assim:

root@kitploit:~
%%variavel:contagem%%

Como outro exemplo, a variável a seguir resultará em 20 caracteres alfanuméricos:

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

Lista de Variáveis

Construindo Wordlists

Arquivos de wordlist são simplesmente strings separadas por linha, por tabulação ou contínuas (dependendo do tipo de wordlist) colocadas em um arquivo de texto.

As seguintes wordlists devem ser separadas por linha, com cada entrada em uma nova linha:

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

A wordlist spawnto é um pouco mais complicada. O Malleable C2 exige uma opção x86 e x64 para modificar todas as criações de processo. Portanto, cada linha da wordlist deve conter ambos os caminhos de processo x86 e x64 separados por uma tabulação, com o processo x86 listado primeiro. Por exemplo:

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

É importante observar que as strings syswow64 e sysnative nos caminhos de processo devem estar em minúsculas.

O tipo final de wordlist é o conjunto de caracteres personalizado. Este arquivo deve incluir quaisquer caracteres para o script substituir aleatoriamente. Por exemplo, um arquivo charset de AEIOUY e uma variável de %%custom:5%% gerará cinco caracteres aleatórios da string do charset. Ao construir este charset, lembre-se de que alguns caracteres são proibidos de aparecer em uma URI e podem interferir nas comunicações do Beacon.

Para exemplos de wordlists, veja o diretório Sample Wordlists neste repositório.

Exemplo de Modelo e Saída

Aqui está um trecho de um perfil 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";
        }
    }
}

E aqui estão dois conjuntos de saída do mesmo 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 Adicionais

  • 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
Baixar ferramenta
Caminho para o modelo Malleable C2 a ser aleatorizado (OBRIGATÓRIO)
-count, -cNúmero de perfis aleatorizados a serem criados {Padrão = 1}
-cobalt, -dDiretório onde o Cobalt Strike está localizado (para o c2lint) {Padrão = diretório atual}
-output, -oNome base da saída {Padrão = nome base do modelo e string aleatória}
-notest, -nIgnorar teste com c2lint (Flag)
ParâmetroDescrição
-charsetArquivo com um conjunto de caracteres personalizado para usar com a variável %%customchar%%
-wordlistArquivo com uma lista de palavras personalizadas para usar com a variável %%word%%
-useragentArquivo com uma lista de useragents
-spawntoArquivo com uma lista de processos spawnto personalizados
-pipenameArquivo com uma lista de valores pipename personalizados
-pipename_stagerArquivo com uma lista de valores pipename_stager personalizados
-dns_stager_subhostArquivo com uma lista de valores dns_stager_subhost personalizados
-dns_stager_prependArquivo com uma lista de valores dns_stager_prepend personalizados
VariávelDescriçãoSuporta Contagem?
alphanumericGera uma letra ou dígito ASCII aleatório (maiúscula/minúscula mista)Sim
alphanumspecialGera uma letra ASCII aleatória (maiúscula/minúscula mista), dígito ou pontuaçãoSim
alphanumspecialurlGera uma letra ASCII aleatória (maiúscula/minúscula mista), dígito ou um dos seguintes caracteres: -._~Sim
alphaupperGera uma letra ASCII maiúscula aleatóriaSim
alphalowerGera uma letra ASCII minúscula aleatóriaSim
alphauppernumberGera uma letra ASCII maiúscula aleatória ou dígitoSim
alphalowernumberGera uma letra ASCII minúscula aleatória ou dígitoSim
alphaGera uma letra ASCII aleatóriaSim
numberGera um dígito aleatórioSim
hexGera um dígito hexadecimal aleatórioSim
netbiosGera uma letra ASCII aleatória (maiúscula/minúscula mista), dígito ou um dos seguintes caracteres: !@#$%^&)(.-'_{}~Sim
customMapeia para um caractere aleatório no arquivo charset fornecidoSim
wordGera uma palavra aleatória da wordlist fornecida ou embutidaSim
booleanGera 'True' ou 'False'Sim
useragentGera um useragent aleatório da lista fornecida ou embutidaNão
spawnto_x86Gera um caminho de processo x86 aleatório da lista fornecida ou embutidaNão
spawnto_x64Gera um caminho de processo x64 aleatório da lista fornecida ou embutidaNão
pipenameGera um pipename aleatório da lista fornecida ou embutidaNão
pipename_stagerGera um pipename_stager aleatório da lista fornecida ou embutidaNão
dns_stager_subhostGera um dns_stager_subhost aleatório da lista fornecida ou embutidaNão
dns_stager_prependGera um dns_stager_prepend aleatório da lista fornecida ou embutidaNão