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
aggrokatz — Aggrokatz é uma extensão de plugin agressor para o Cobalt Strike que permite ao pypykatz interagir com os beacons remotamente e possibilita analisar arquivos de dump LSASS e arquivos de hive do registro para extrair credenciais e outros segredos armazenados sem baixar o arquivo e sem enviar nenhum código suspeito para o beacon. | Kitploit
Ferramentas/GitHubGitHub/sec-consult/aggrokatz
Frameworks de ExploraçãoPós-ExploraçãoTestes de PenetraçãoRed TeamingDesenvolvimento de Payloads
GitHubsec-consult/aggrokatz

aggrokatz

Ver Repositório
15526há 5 anosRevisado pelo Kitploit

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 →

Sobre

Aggrokatz é uma extensão de plugin agressor para o Cobalt Strike que permite ao pypykatz interagir com os beacons remotamente e possibilita analisar arquivos de dump LSASS e arquivos de hive do registro para extrair credenciais e outros segredos armazenados sem baixar o arquivo e sem enviar nenhum código suspeito para o beacon.

Compartilhar

aggrokatz

aggro_card

O que é isso

aggrokatz é uma extensão de plugin Aggressor para CobaltStrike que permite que o pypykatz se comunique remotamente com os beacons.
A versão atual do aggrokatz permite que o pypykatz analise arquivos de dump do LSASS e arquivos de hive do Registro para extrair credenciais e outros segredos armazenados, sem baixar o arquivo e sem enviar nenhum código suspeito para o beacon (o Cobalt Strike já está lá de qualquer forma). No futuro, este projeto visa fornecer recursos adicionais para operações encobertas, como pesquisar e descriptografar todos os segredos DPAPI/kerberoasting/etc.

Publicamos um breve post no blog para o lançamento desta ferramenta, que também inclui algumas capturas de tela.

NOTAS IMPORTANTES - POR FAVOR, LEIA ISSO

O dump do LSASS/Registro não é o objetivo deste projeto, apenas a análise. Motivos:

  1. Múltiplas técnicas de dump já foram implementadas a partir do Cobalt Strike (CS) e estão amplamente disponíveis ao público. Recentemente, mudamos para o uso de uma versão modificada do CredBandit que despeja os bytes brutos no disco em vez de base64. Ferramenta legal, dê uma olhada.
  2. Queremos manter nossa técnica de dump privada.

No cliente CS, não use "reload" nem tente descarregar e recarregar manualmente o script se você o modificou. Você DEVE descarregá-lo, fechar o cliente e iniciá-lo novamente, e então carregar o script modificado. Caso contrário, você terá várias versões rodando simultaneamente e uma tonelada de erros e comportamentos estranhos acontecerão!
Ao analisar arquivos LSASS/registro no lado remoto, por favor, não interaja com o beacon específico no qual você iniciou o script. Normalmente, isso não causaria problemas, mas não posso dar garantias.

Instalação

  • Você precisará ter o pycobalt instalado e configurado. Há um readme na página do GitHub deles.
  • Você precisará instalar o pypykatz cuja versão deve ser >=0.4.8
  • Você precisará do Cobalt Strike

Configuração

  • Certifique-se de que o arquivo aggressor.cna do pycobalt esteja configurado e saiba a localização do seu interpretador Python
  • Altere o caminho pycobalt_path em aggrokatz.cna para apontar para pycobalt.cna
  • No CS, utilize as janelas View > Script Console e Cobalt Strike > Script Manager. Usando o Script Manager, carregue o script aggkatz.cna.

Uso

  • Se o script aggkatz.cna carregou com sucesso, você terá um novo item de menu pypykatz ao clicar com o botão direito em um beacon.
  • Durante a análise, você verá mensagens de depuração na janela Script Console.
  • Após a conclusão da análise, os resultados serão exibidos tanto na janela Script Console quanto na janela do próprio Beacon.

Parâmetros do menu de análise de dump do LSASS

  • Arquivo LSASS: A localização do arquivo lsass.dmp no computador remoto. Você também pode usar caminhos UNC para acessar arquivos lsass.dmp compartilhados via SMB
  • chunksize: A quantidade máxima que será lida de uma só vez
  • Arquivo BOF: O arquivo BOF (Beacon Object File) que permite leituras em blocos. Este arquivo será enviado e executado (em memória) cada vez que um novo bloco for lido.
  • (módulo): Especifica quais módulos serão analisados. Padrão: todos
  • Saída : Especifica o(s) formato(s) de saída
  • Popular a guia de Credenciais: Após uma análise bem-sucedida, todas as credenciais obtidas estarão disponíveis na guia de Credenciais do Cobalt Strike. Este recurso está em beta
  • Excluir arquivo remoto após a análise: Após uma análise bem-sucedida, o arquivo de dump do LSASS será removido do alvo

Parâmetros do menu de análise de dump do Registro

  • Arquivo SYSTEM: A localização do arquivo SYSTEM.reg no computador remoto. Você também pode usar caminhos UNC para acessar arquivos compartilhados via SMB
  • Arquivo SAM (opcional): A localização do arquivo SAM.reg no computador remoto. Você também pode usar caminhos UNC para acessar arquivos compartilhados via SMB
  • Arquivo SECURITY (opcional): A localização do arquivo SECURITY.reg no computador remoto. Você também pode usar caminhos UNC para acessar arquivos compartilhados via SMB
  • Arquivo SOFTWARE (opcional): A localização do arquivo SOFTWARE.reg no computador remoto. Você também pode usar caminhos UNC para acessar arquivos compartilhados via SMB
  • chunksize: A quantidade máxima que será lida de uma só vez
  • Arquivo BOF: O arquivo BOF (Beacon Object File) que permite leituras em blocos. Este arquivo será enviado e executado (em memória) cada vez que um novo bloco for lido.
  • Saída : Especifica o(s) formato(s) de saída

Limitações

Atualmente, o BOF de leitura de arquivo suporta leituras de até 4Gb. Isso pode ser estendido com algumas modificações, mas até agora arquivos tão grandes não foram observados.

Como funciona

TL;DR

Normalmente, o analisador do pypykatz realiza uma série de operações de leitura de arquivo no disco, mas com a ajuda do aggrokatz essas operações de leitura são canalizadas para o beacon usando um BOF especialmente criado (Beacon Object File) que permite ler o conteúdo do arquivo remoto em blocos. Isso permite que o pypykatz extraia todos os segredos dos arquivos remotos sem ler o arquivo inteiro, apenas capturando os blocos necessários onde os segredos estão localizados.

Aprofundamento

Para ter uma visão completa de todo o processo, precisamos destacar duas partes:

  1. como o pypykatz se integra ao CobaltStrike
  2. como o pypykatz realiza a extração de credenciais sem ler o arquivo inteiro

Integração do pypykatz ao CobaltStrike

O CobaltStrike (agente) é escrito em Java, o pypykatz é escrito em Python. Isso é um problema. Felizmente para nós, uma entidade desconhecida criou o pycobalt que fornece uma interface elegante entre os dois mundos, completa com APIs úteis que podem ser invocadas diretamente do Python. Apesar de pycobalt ser uma peça maravilhosa de engenharia, existem alguns problemas/desvantagens que precisamos apontar:

  1. Sobre confiar no projeto pycobalt:
  • Tentamos entrar em contato com o autor, mas não recebemos resposta.
  • Não podemos garantir que o projeto pycobalt será mantido no futuro.
  • Não controlamos nenhum aspecto do desenvolvimento do pycobalt.
  1. Sobre problemas técnicos observados:
  • Geralmente, existem alguns problemas de codificação entre pycobalt e CobaltStrike. Isso resulta em algumas chamadas de API que retornariam bytes que não podem ser usados porque alguns bytes são distorcidos pelo codificador. Ao verificar o código, concluímos que a maioria dos problemas de codificação/decodificação ocorre porque pycobalt usa STDOUT/STDIN para se comunicar com o processo Java.
  • Especificamente, a chamada de API bof_pack, que é crucial para este projeto, teve que ser implementada como um script puro do Aggressor e invocada apenas a partir do Python usando estruturas de dados básicas (string e int) e não usando bytes.
  • Apenas APIs bloqueantes fornecidas pelo pacote pycobalt, sem suporte a threads. Bem, pelo menos observamos que as threads quebram aleatoriamente, mas meio que esperávamos isso.
  • API bloqueante + sem threads + dependência de callbacks = tivemos que empregar alguns hacks estranhos para fazer funcionar corretamente.

Análise de credenciais em uma pilha de cartas

O pypykatz e seu módulo companheiro minidump tiveram que ser modificados para permitir uma análise mais eficiente em blocos do que a implementada anteriormente, mas isso é assunto para outro dia.
Depois que o pypykatz foi capaz de se comunicar com o CobaltStrike via pycobalt, o próximo passo foi permitir a leitura de arquivos em blocos. Infelizmente, esse recurso não está disponível por padrão em nenhuma das soluções C2 que vimos, então tivemos que implementá-lo. A forma como abordamos esse problema foi implementando a leitura em blocos por meio do uso da interface Beacon Object Files do CobaltStrike, BOF para abreviar. BOFs são programas em C que rodam no beacon não como um executável separado, mas como parte do beacon já em execução. Essa interface é super útil porque torna os BOFs muito mais furtivos, já que todo o código é executado em memória sem que nada seja escrito no disco.
Nossa solução BOF é uma função simples que recebe 4 argumentos:

  • fileName: Caminho completo do arquivo de dump do LSASS ou hive do registro (no lado remoto)
  • buffsize: Quantidade (em bytes) a ser lida do arquivo
  • seekSize: A posição onde a operação de leitura do arquivo deve começar (a partir do início do arquivo)
  • rplyid : Um número de identificação a ser incorporado na resposta para evitar possíveis colisões

Com esses parâmetros, o pypykatz (rodando no agente) pode emitir operações de leitura de arquivo no beacon (computador alvo) que visam especificamente certas partes do arquivo.
Do outro lado (no CobaltStrike), o aggrokatz registra um callback para monitorar cada mensagem retornada pelo beacon alvo. Se o cabeçalho da mensagem corresponder ao cabeçalho de uma operação de leitura de arquivo, ela será processada como um bloco de um arquivo minidump e será despachada para o analisador minidump, que despachará o resultado para o pypykatz. Caso seja necessária mais leitura, o pypykatz emitirá uma leitura usando o leitor minidump, que despachará um novo comando de leitura no beacon via interface BOF. Esse processo se repete até que o arquivo seja analisado.

Resultados

Após analisar cerca de 100 dumps do LSASS usando este método, podemos afirmar o seguinte (o tamanho do bloco usado foi 20k):

  • Dependendo do tamanho do arquivo de dump do LSASS (nossos dumps tinham entre 40Mb e 300Mb), em média, todos os segredos puderam ser extraídos usando 3,5Mb. Observe que esse número não depende do tamanho do dump do LSASS, mas sim da quantidade de segredos e da quantidade de pacotes que você seleciona para serem analisados.
  • Em média, 250 operações de leitura foram usadas para uma análise bem-sucedida.
  • O tempo de análise depende apenas da sua configuração de jitter/sleep, então medir isso é inútil.

Desvantagens

  • Para cada operação de leitura, um BOF precisa ser enviado ao beacon. (Secretamente, esperamos que alguém do CobaltStrike veja este artigo e decida implementar operações básicas de leitura de arquivo como padrão, para que possamos pular o uso desta solução).
  • O número de operações de leitura pode ser problemático se você estiver usando um beacon com um jitter/sleep muito grande.

Créditos

dcsync - autor do pycobalt
@anthemtotheego Twitter - Criador do CredBandit
Nicol Jos @shinepaw - design do logotipo

Baixar ferramenta