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
cobaltstrike4.5_cdf-1 — Crack da versão 4.5 do CobaltStrike, remove a característica checksum8, ignora o BeaconEye, corrige o vazamento de caminho de erro do stage, adiciona verificação de dois fatores TOTP, corrige CVE-2022-39197 entre outros. | Kitploit
Ferramentas/GitHubGitHub/zeoday/cobaltstrike4.5_cdf-1
Frameworks de Testes de PenetraçãoFrameworks de ExploraçãoAnálise de VulnerabilidadesEvasão de IDS/IPSEngenharia ReversaCriptografiaComando e ControleAnálise de BináriosAutenticaçãoRed TeamingDesenvolvimento de Payloads
1há 3 anosAinda não revisado

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
GitHub
zeoday/cobaltstrike4.5_cdf-1

cobaltstrike4.5_cdf-1

Crack da versão 4.5 do CobaltStrike, remove a característica checksum8, ignora o BeaconEye, corrige o vazamento de caminho de erro do stage, adiciona verificação de dois fatores TOTP, corrige CVE-2022-39197 entre outros.

Ver Repositório

cobaltstrike4.5_cdf

crack da versão cobaltstrike4.5, remoção da característica checksum8, bypass BeaconEye, correção de vazamento de stage por caminho incorreto, adição de verificação de dois fatores TOTP, adição de exibição criptografada do nome de usuário, correção do bug de derivação foreign na versão 4.5, modificação do nome do arquivo de configuração do cliente, etc.

Crack do cobalt strike 4.5

Crack do cobaltstrike 4.5

[TOC]

Isenção de responsabilidade / Acordo de isenção

Esta ferramenta e o conteúdo do artigo são exclusivamente para pesquisa de segurança. O usuário assume todas as responsabilidades legais e relacionadas decorrentes do uso desta ferramenta e do conteúdo do artigo! O autor não assume nenhuma responsabilidade legal! Se você tiver qualquer conduta ilegal ao usar esta ferramenta e o conteúdo do artigo, você deve arcar com as consequências correspondentes por conta própria, e não assumiremos nenhuma responsabilidade legal ou solidária. Caso contrário, não instale nem use esta ferramenta. Seu uso ou qualquer outra forma explícita ou implícita de aceitação deste acordo será considerado como tendo lido e concordado com os termos deste acordo. Ao usar esta ferramenta para pesquisa de segurança, você deve garantir que a conduta esteja em conformidade com as leis e regulamentos e que tenha obtido autorização suficiente. Não use em alvos não autorizados.

Sim, estou de volta, continuando o original cobaltstrike4.4_cdf: https://github.com/lovechoudoufu/about_cobaltstrike4.4_cdf Desta vez é a versão 4.5. O 4.4 anterior foi removido pelo GitHub, e é provável que este projeto também seja excluído em breve.

Recomenda-se entrar no grupo do Telegrama, para que atualizações futuras e outros projetos removidos possam ser baixados do grupo:

image-20220802163532221

Antes de usar, verifique cuidadosamente o hash do arquivo jar da versão correspondente.

Crack do CS

Versões anteriores à 4.5

Processo de certificação de licença (exemplo da 4.3): A versão 4.5 tem pequenas alterações no final.

Chaves de descriptografia oficiais de cada versão:

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

Arquivo de chave de autenticação cobaltstrike.auth, criptografado com RSA, conteúdo descriptografado:

4.3

root@kitploit:~
-54, -2, -64, -45,	// cabeçalho do arquivo
0, 77,	// comprimento subsequente
1, -55, -61, 127, 	// limite de tempo do certificado 29999999 (permanente)
0, 0, 0, 1, 	// watermark (marca d'água)
43, 	// versão
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

A cada atualização de versão, o comprimento correspondente aumenta em 17, e a chave aumenta em 17 bytes.

Em aggressor/Aggressor.class, License.checkLicenseGUI(new Authorization()); inicia a verificação de licença:

image-20211101142121856

Em License.checkLicenseGUI, isValid, isPerpetual, isExpired, isAlmostExpired determinam se a licença é válida e se expirou:

image-20211101142738431

A classe Authorization processa o arquivo cobaltstrike.auth, lê o conteúdo e chama AuthCrypto().decrypt para processá-lo:

image-20211101143829398

No construtor AuthCrypto(), chama load(), que calcula o MD5 de resources/authkey.pub e obtém a chave pública RSA:

image-20211101144809625

Em decrypt(), chama _decrypt para descriptografar o conteúdo do arquivo cobaltstrike.auth com a chave pública RSA, atribuindo o resultado ao array var2. Depois, usa DataParser para converter e atribuir a var3. O método readInt() obtém os primeiros quatro bits de var3 para verificar o cabeçalho do arquivo (-889274181 para versão 3.x; -889274157 para versão 4.x). Então, em var3, readShort() obtém dois bits como comprimento atribuído a var5, e var6 = var3.readBytes(var5) obtém o conteúdo desse comprimento e o atribui a var6, que é retornado:

image-20211101145153818

Na classe Authorization, o array arrayOfByte2 obtido é o conteúdo após a remoção dos primeiros seis bits. Continua processando arrayOfByte2: primeiro obtém quatro números atribuídos a i, depois quatro números atribuídos a watermark, depois um número atribuído a b1. Verifica se b1 é menor que 43 e se i é igual a 29999999. Em common/ListenerConfig, verifica se watermark é 0, o que adiciona uma marca d'água de detecção de antivírus:

image-20211101152338045

image-20211101152000407

Após remover os primeiros seis bits, remove também os nove bits de i, watermark e b1. O restante é a chave das versões 4.0 a 4.3, com estrutura: 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20:

root@kitploit:~
            byte b2 = dataParser.readByte();	// obtém 1 byte, ou seja, 16
            byte[] arrayOfByte3 = dataParser.readBytes(b2);		// obtém 16 bytes, a chave da versão 4.0
            byte b3 = dataParser.readByte();	// obtém 1 byte, ou seja, 16
            byte[] arrayOfByte4 = dataParser.readBytes(b3);		// obtém 16 bytes, a chave da versão 4.1
            byte b4 = dataParser.readByte();	// obtém 1 byte, ou seja, 16
            byte[] arrayOfByte5 = dataParser.readBytes(b4);		// obtém 16 bytes, a chave da versão 4.2
            byte b5 = dataParser.readByte();	// obtém 1 byte, ou seja, 16
            byte[] arrayOfByte6 = dataParser.readBytes(b5);		// obtém 16 bytes, a chave da versão 4.3 atribuída a arrayOfByte6

Na classe Authorization, chama o método SleevedResource.Setup para processar arrayOfByte6. Em SleevedResource, define a chave como chave de descriptografia AES e HmacSHA256. Em _readResource, chama this.data.decrypt(arrayOfByte1); para descriptografar, e o conteúdo descriptografado são os arquivos DLL em /sleeve/:

image-20211101153935202

Em SleeveSecurity, define a chave de descriptografia AES e HmacSHA256, calcula um resumo de 256 bits usando o valor passado, depois usa os bits 0-16 como chave AES e bits 16-32 como chave HmacSHA256:

image-20211101154127243

Se a chave correspondente não for obtida, não será possível descriptografar as DLLs na pasta sleeve. Ao conectar ao servidor, será exibido o erro [Sleeve] Bad HMAC:

image-20211101160942103

A parte da descriptografia HMAC pode ser consultada em: Cobaltstrike 4破解之 我自己给我自己颁发license

Portanto, a chave para o crack é obter a chave correspondente à versão do CS.

Novas verificações na versão 4.5

De acordo com a descrição oficial, a versão 4.5 adicionou segurança à licença. De fato:

image-20220802145353409

Então, precisamos descriptografar o arquivo auth vazado para ver o que há de novo:

image-20220802154920364

Após a posição da chave da versão 4.5, há uma string adicional. Esses bytes extras são o watermarkHash adicionado nesta versão:

image-20220802155137639

O watermarkHash está relacionado à geração do beacon e às DLLs na pasta sleeve. Sem ele ou com ele incorreto, não é possível obter conexão. Provavelmente, os desenvolvedores podem rastrear a origem do vazamento através desse watermarkHash.

image-20220802155317878

Métodos de crack

Método 1: Chave embutida (hardcoded)

Comente outras partes do código e fixe o parâmetro atribuído após a descriptografia RSA em 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étodo 2: Javaagent

Princípio do Javaagent: https://www.cnblogs.com/rickiyang/p/11368932.html

Ferramenta de crack de referência: https://github.com/Twi1ight/CSAgent

O núcleo do crack ainda exige a chave correspondente à versão do CS.

Remoção de armadilhas (backdoors)

Em beacon/BeaconData, defina o valor do método shouldPad como false:

image-20211101180447451

Nova armadilha na versão 4.4

(Anteriormente, usamos a versão 4.3 como exemplo para análise da licença. Ao mudar para a 4.4, descobrimos que o programa saía, indicando uma nova armadilha.)

Além do exit do this.shouldPad, foi adicionada uma verificação de classe em common/Helper. Basta comentar:

image-20211119153406737

Foi adicionada uma verificação de classe em common/Starter. Basta comentar:

image-20211119153558224

Foi adicionada uma verificação de classe em common/Starter2. Basta comentar:

image-20211119153636952

Foi adicionada uma verificação de classe em beacon/CommandBuilder (essa armadilha é bem traiçoeira: após 4 horas de conexão contínua entre cliente e servidor, os comandos não podem ser executados; como nunca conectamos por tanto tempo, não descobrimos antes):

image-20220505104735903

Nova armadilha na versão 4.5

A versão 4.5 adicionou um monte de armadilhas para o Javaagent. Quem descompila o jar para fazer o crack pode ignorá-las; basta pesquisar por "javaagent" e modificar cada ocorrência:

image-20220802160404976

Removendo esses pontos, podemos voltar a operar em equipe.

Remoção da característica checksum8 do CS

A característica checksum8 não será detalhada. Para evitar ser escaneado pelo nmap e por mecanismos de busca espacial, é necessário modificá-la.

Modificação do código

Em BeaconPayload, altere o valor do XOR para um novo número:

Qualquer número decimal serve; depois, no DLL, altere para o número hexadecimal correspondente.

image-20211108114054512

Modificação do DLL

Use o CrackSleeve para descriptografar o DLL: https://github.com/ca3tie1/CrackSleeve/

  1. Coloque o cobaltstrike.jar e o CrackSleeve.java juntos.
  2. Compile (javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java)
  3. Descriptografe o arquivo (java -classpath cobaltstrike.jar;./ CrackSleeve decode) # Execute no terminal Windows

Pressione Alt+T para pesquisar a palavra-chave: 2Eh

image-20211107222017434

image-20211107222039265

Modifique diretamente o valor do XOR. Primeiro, clique em "Change byte", encontre 2E e modifique. Depois, clique em "Apply patches to input file" para salvar (não se esqueça de salvar).

image-20211107222223636

DLLs que precisam ser modificadas: beacon.dll, beacon.x64.dll, dnsb.dll, dnsb.x64.dll, pivot.dll, pivot.x64.dll, extc2.dll, extc2.x64.dll (as novas rl100k.dll da versão 4.5 também precisam ser modificadas)

Em seguida, use o CrackSleeve para criptografar novamente o DLL. Por fim, coloque os DLLs do diretório encode no diretório do projeto IDEA e recompile o pacote.

Após o teste, o URI ainda pode ser acessado, mas o conteúdo não pode mais ser descriptografado pelo script nmap, evitando também a detecção por mecanismos de busca espacial:

image-20211107233719344

Além de modificar o valor do XOR, também é possível alterar o algoritmo checksum8 (conforme referência: 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) – mas isso fixa o URI, exigindo o uso de perfil, e cada alteração de URI exige reempacotamento. Cada método tem seus prós e contras.

Remoção da característica do BeaconEye no CS

A ideia para remover a característica do BeaconEye veio do link. Tomando como exemplo as versões 4.3 e 4.4, os bytes que precisam ser modificados são os seguintes.

Use o CrackSleeve para descriptografar o DLL: https://github.com/ca3tie1/CrackSleeve/

  1. Coloque o cobaltstrike.jar e o CrackSleeve.java juntos.
  2. Compile (javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java)
  3. Descriptografe o arquivo (java -classpath cobaltstrike.jar;./ CrackSleeve decode) # Execute no terminal Windows

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

Modificação na versão 4.3

DLL de 32 bits

Endereço: 10009FBB

Altere 6A 00 para 6A 09 (substitua 00 por qualquer valor)

image-20211111165257545

DLL de 64 bits

Endereço: 000000001800186C3

No beacon.x64.dll, a instrução é xor edx, edx. Altere para mov edx, esi

image-20211111165321033

Modificação na versão 4.4

DLL de 32 bits

Endereço: 1000A0B9

Altere 6A 00 para 6A 09 (substitua 00 por qualquer valor)

image-20211112104322791

DLL de 64 bits

Endereço: 000000018001879B

No beacon.x64.dll, a instrução é xor edx, edx. Altere para mov edx, esi

image-20211112105408975

Use a recriptografia: java -classpath cobaltstrike.jar;./ CrackSleeve encode

image-20211111173148579

image-20211112124415835

Modificação na versão 4.5

DLL de 32 bits

Endereço: 1000A65D

image-20220609144218351

DLL de 64 bits

Endereço: 000000018000CA3F

image-20220609160825342

(As novas DLLs rl100k.dll da versão 4.5 também precisam ser modificadas)

Correção de vazamento de stage por caminho incorreto no CS

Fonte: 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

O método é adicionar uma verificação de / no URI. Se não começar com /, responder com 404:

Modificação na versão 4.4:

image-20220330111413985

Modificação na versão 4.3:

image-20220330125957143

Adição de exibição criptografada do nome de usuário

Para evitar o vazamento da senha TOTP ou do nome de login no Event Log, o campo name é exibido com um MD5 com sal. Após a modificação:

image-20220330112745362

Adição de verificação TOTP

Foi adicionada a verificação de dois fatores TOTP para aumentar a segurança do login e evitar que a senha seja descoberta por força bruta.

No lado do teamserver, foi adicionado um link para o QR code TOTP na saída do teamserver:

image-20220407112543322

(Antes de excluir o nohup.out, lembre-se de copiar o QR code. Cada vez que o teamserver é iniciado, um novo QR code é gerado; portanto, é necessário escanear novamente a cada inicialização.)

Abra no navegador (precisa de VPN) e use o Google Authenticator ou um verificador TOTP para escanear o QR code. Ou copie a chave após secret%3D e configure no verificador:

image-20220407112054716

No lado do connect, o host, porta e senha permanecem os mesmos. No campo user, os últimos seis dígitos devem ser o número dinâmico do TOTP para conectar:

image-20220407111813265

Se o número dinâmico do TOTP não for preenchido ou estiver incorreto, será exibida uma mensagem:

image-20220407113709140

Observação: Quando não houver celular disponível, você pode usar um plugin de TOTP no navegador ou criar um pequeno código Python para gerar o TOTP.

Correção do bug de derivação foreign na versão 4.5 do CS

Ao usar windows/foreign/reverse_http(s) para spawn, ocorre o seguinte erro:

image-20220827183854784

Nesta versão, foi adicionada uma operação getScalar relacionada a Custom em ScListener, mas não foi considerado o caso foreign, resultando em erro quando var1.customDLL e customFileName estão vazios:

image-20220827184042529

A correção temporária é verificar se o payload é foreign e, nesse caso, retornar diretamente o shellcode. Se houver outros bugs com esse método, reporte via issues:

image-20220827190844595

Após a correção, o uso normal é restaurado:

image-20220827190954960

Modificação do nome do arquivo de configuração do cliente do CS

Para evitar que a configuração seja lida por honeypots MySQL, o nome do arquivo de configuração do cliente do CS não é mais padrão: ele gera um nome de arquivo com 11 caracteres (11 dígitos do MD5 do endereço MAC).

image-20220827191056012

Baixar ferramenta