
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.

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.
O dump do LSASS/Registro não é o objetivo deste projeto, apenas a análise. Motivos:
CredBandit que despeja os bytes brutos no disco em vez de base64. Ferramenta legal, dê uma olhada.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.
pycobalt instalado e configurado. Há um readme na página do GitHub deles.pypykatz cuja versão deve ser >=0.4.8aggressor.cna do pycobalt esteja configurado e saiba a localização do seu interpretador Pythonaggrokatz.cna para apontar para pycobalt.cnaView > Script Console e Cobalt Strike > Script Manager. Usando o Script Manager, carregue o script aggkatz.cna.aggkatz.cna carregou com sucesso, você terá um novo item de menu pypykatz ao clicar com o botão direito em um beacon.Script Console.Script Console quanto na janela do próprio Beacon.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 SMBchunksize: A quantidade máxima que será lida de uma só vezArquivo 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: todosSaída : Especifica o(s) formato(s) de saídaPopular 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 betaExcluir arquivo remoto após a análise: Após uma análise bem-sucedida, o arquivo de dump do LSASS será removido do alvoArquivo SYSTEM: A localização do arquivo SYSTEM.reg no computador remoto. Você também pode usar caminhos UNC para acessar arquivos compartilhados via SMBArquivo SAM (opcional): A localização do arquivo SAM.reg no computador remoto. Você também pode usar caminhos UNC para acessar arquivos compartilhados via SMBArquivo SECURITY (opcional): A localização do arquivo SECURITY.reg no computador remoto. Você também pode usar caminhos UNC para acessar arquivos compartilhados via SMBArquivo SOFTWARE (opcional): A localização do arquivo SOFTWARE.reg no computador remoto. Você também pode usar caminhos UNC para acessar arquivos compartilhados via SMBchunksize: A quantidade máxima que será lida de uma só vezArquivo 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ídaAtualmente, 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.
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.
Para ter uma visão completa de todo o processo, precisamos destacar duas partes:
pypykatz se integra ao CobaltStrikepypykatz realiza a extração de credenciais sem ler o arquivo inteiroO 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:
pycobalt:pycobalt será mantido no futuro.pycobalt.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.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.pycobalt, sem suporte a threads. Bem, pelo menos observamos que as threads quebram aleatoriamente, mas meio que esperávamos isso.