
Extrair credenciais do lsass remotamente
Ferramenta Python para extrair remotamente credenciais de um conjunto de hosts. Este post no blog explica como funciona.
Esta ferramenta usa o projeto impacket para ler remotamente os bytes necessários no dump do lsass e o pypykatz para extrair credenciais.
| Capítulos | Descrição |
|---|---|
| Aviso | Antes de usar esta ferramenta, leia isto |
| Instalação | Instalação do lsassy |
| Uso básico | Uso básico do lsassy |
| Uso avançado | Uso avançado do lsassy com explicação dos parâmetros |
| Adicionar método de dump | Como adicionar um método personalizado de dump do lsass |
| Agradecimentos | Agradecimentos a estas pessoas e ferramentas |
| Discord oficial | Servidor oficial do Discord |
Embora eu tenha feito todos os esforços para tornar a ferramenta estável, vestígios podem ser deixados se ocorrerem erros.
Esta ferramenta pode deixar alguns dumps do lsass se não conseguir excluí-los (mesmo que tente arduamente) ou deixar uma tarefa agendada em execução se falhar ao excluí-la. Isso não deveria acontecer, mas pode. Agora, você sabe, use com cuidado.
lsassy funciona com python >= 3.7
python3 -m pip install lsassy
python3 setup.py install
lsassy funciona imediatamente em múltiplos alvos (IP(s), faixa(s), CIDR(s), hostname(s), FQDN(s), arquivo(s) contendo uma lista de alvos)
lsassy [-d domain] -u pixis -p P4ssw0rd targets
lsassy [-d domain] -u pixis -H [LM:]NT targets
Por padrão, o lsassy tentará fazer o dump do lsass remotamente usando o método comsvcs.dll, seja via WMI ou via uma tarefa agendada remota.
lsassy pode autenticar com Kerberos. Requer um TGT válido na variável de ambiente KRB5CCNAME. Veja uso avançado para mais detalhes.
lsassy -k targets
lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.0/24
lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.1-10
lsassy -d hackn.lab -u pixis -p P4ssw0rd hosts.txt
lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.1-192.168.1.10
Diferentes métodos de dump do lsass são implementados no lsassy, e algumas opções são fornecidas para dar controle ao usuário sobre como a ferramenta procederá.
lsassy é dividido em módulos
+-----------+
| Writer |
+-----+-----+
|
|
+----------+ +-----+-----+ +---------+
| Parser |------| Core |----| Session |
+----------+ +-----+-----+ +---------+
|
|
+-----------+
| Dump |-+
| Methods | |-+ +----------+
+-----+-----+ | |----| File |
+-----------+ | +----------+
+------------+
|
|
+-----------+
| Exec |-+
| Methods | |-+
+-----+-----+ | |
+-----------+ |
+------------+
Este módulo é o orquestrador. Ele cria a classe lsassy com os argumentos e opções fornecidos e, em seguida, chama os diferentes módulos para recuperar credenciais.
Este módulo é usado para fins de registro (logging).
Esta é uma camada construída sobre o Impacket para se comportar como um objeto de arquivo nativo do Python. Ele sobrescreve métodos como open, read, seek ou close.
Este módulo contém toda a lógica de dump. Dependendo do método utilizado, ele executará código no host remoto para despejar o lsass usando o método fornecido.
Este módulo depende do pypykatz e usa o módulo de arquivo do lsassy para analisar remotamente o dump do lsass.
Este módulo lida com a parte de saída, seja para a tela em diferentes formatos e/ou escrever resultados em um arquivo.
Esta ferramenta pode despejar lsass de diferentes maneiras.
Métodos de dump (-m ou --method)
Este método usa apenas arquivos nativos do Windows para extrair credenciais remotas. Utiliza a função minidump da comsvcs.dll para despejar o processo lsass.
Este método envia procdump.exe do SysInternals para despejar o processo lsass.
Este método envia dumpert.exe ou dumpert.dll do outflanknl para despejar o processo lsass usando syscalls.
Este método envia NativeDump.exe do ricardojoserf para despejar o processo lsass usando apenas NTAPIs.
Este método envia ppldump.exe do itm4n para despejar o processo lsass e contornar o PPL.
Este método envia Mirrordump.exe do Ccob para despejar o lsass usando um handle já aberto para o lsass através de um plugin LSA.
Este método usa a técnica WER utilizada no PowerSploit.
Para alguns métodos de dump, opções são necessárias, como o caminho do procdump ou dumpert. Essas opções podem ser definidas usando --options ou -O com uma lista separada por vírgulas no formato chave=valor.
... --options chave=valor,foo=bar
Por exemplo:
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m procdump -O procdump_path=/opt/Sysinternals/procdump.exe
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m dumpert -O dumpert_path=/opt/dumpert.exe
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m dumpertdll -O dumpertdll_path=/opt/dumpert.dll