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.
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]
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:

Antes de usar, verifique cuidadosamente o hash do arquivo jar da versão correspondente.
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:
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
-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:

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

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

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

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:

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:


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

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:

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:
