
SharpDPAPI é uma porta em C# de algumas funcionalidades do Mimikatz DPAPI.
SharpDPAPI é uma versão em C# de algumas funcionalidades DPAPI do projeto Mimikatz de @gentilkiwi.
Eu não inventei esta lógica, é simplesmente uma adaptação do Mimikatz para melhor compreender o processo e operacionalizá-lo para se adequar ao nosso fluxo de trabalho.
O subprojeto SharpChrome é uma adaptação do trabalho de @gentilkiwi e @djhohnstein, especificamente do seu projeto SharpChrome. No entanto, esta versão do SharpChrome usa uma versão diferente da biblioteca SQL em C# que suporta abertura sem bloqueio. O SharpChrome é construído como um projeto separado no SharpDPAPI devido ao tamanho da biblioteca SQLite utilizada.
Tanto o Chrome quanto os navegadores Edge baseados em Chromium mais recentes podem ser triados com o SharpChrome.
O SharpChrome também usa uma versão minimizada do código BCrypt P/Invoke de @AArnott, lançado sob a licença MIT.
Se você não está familiarizado com DPAPI, confira este post para mais informações de contexto. Para mais informações sobre Credenciais e Cofres (Vaults) em relação ao DPAPI, consulte a entrada da wiki de Benjamin sobre o assunto.
@harmj0y é o principal autor desta adaptação.
O SharpDPAPI está licenciado sob a licença BSD 3-Clause.
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.20.0
Recuperar a chave de backup DPAPI de um controlador de domínio, opcionalmente especificando um DC e arquivo de saída:
SharpDPAPI backupkey [/nowrap] [/server:SERVER.domain] [/file:key.pvk]
O comando *search* irá procurar por possíveis blobs DPAPI no registro, arquivos, pastas e blobs base64:
search /type:registry [/path:HKLM\path\to\key] [/showErrors]
search /type:folder /path:C:\path\to\folder [/maxBytes:<numOfBytes>] [/showErrors]
search /type:file /path:C:\path\to\file [/maxBytes:<numOfBytes>]
search /type:base64 [/base:<base64 string>]
Triagem de Máquina/SISTEMA:
machinemasterkeys - triar todos os arquivos de chave mestra da máquina acessíveis (eleva para SYSTEM para recuperar o segredo LSA DPAPI_SYSTEM)
machinecredentials - usar 'machinemasterkeys' e depois triar os arquivos de Credencial da máquina
machinevaults - usar 'machinemasterkeys' e depois triar os Cofres da máquina
machinetriage - executar os comandos 'machinecredentials' e 'machinevaults'
Triagem de Usuário:
Argumentos para o comando 'masterkeys':
/target:FILE/pasta - triar uma chave mestra específica ou uma pasta cheia de chaves mestre (caso contrário, tria as chaves mestre locais)
/pvk:BASE64... - usar um arquivo de chave privada de domínio DPAPI codificado em base64 para primeiro descriptografar as chaves mestre de usuário acessíveis
/pvk:key.pvk - usar um arquivo de chave privada de domínio DPAPI para primeiro descriptografar as chaves mestre de usuário acessíveis
/password:X - descriptografar as chaves mestre do usuário alvo usando uma senha em texto simples (funciona remotamente)
/ntlm:X - descriptografar as chaves mestre do usuário alvo usando um hash NTLM (funciona remotamente)
/credkey:X - descriptografar as chaves mestre do usuário alvo usando uma credkey DPAPI (SHA1 de domínio ou local, funciona remotamente)
/rpc - descriptografar as chaves mestre do usuário alvo pedindo ao controlador de domínio que o faça
/server:SERVER - triar um servidor remoto, assumindo acesso de administrador
/hashes - exibir 'hashes' do arquivo de chave mestra do usuário no formato JTR/Hashcat (sem descriptografia)
Argumentos para os comandos credentials|vaults|rdg|keepass|triage|blob|ps:
Descriptografia:
/unprotect - forçar o uso de CryptUnprotectData() para comandos 'ps', 'rdg' ou 'blob'
/pvk:BASE64... - usar um arquivo de chave privada de domínio DPAPI codificado em base64 para primeiro descriptografar as chaves mestre de usuário acessíveis
/pvk:key.pvk - usar um arquivo de chave privada de domínio DPAPI para primeiro descriptografar as chaves mestre de usuário acessíveis
/password:X - descriptografar as chaves mestre do usuário alvo usando uma senha em texto simples (funciona remotamente)
/ntlm:X - descriptografar as chaves mestre do usuário alvo usando um hash NTLM (funciona remotamente)
/credkey:X - descriptografar as chaves mestre do usuário alvo usando uma credkey DPAPI (SHA1 de domínio ou local, funciona remotamente)
/rpc - descriptografar as chaves mestre do usuário alvo pedindo ao controlador de domínio que o faça
GUID1:SHA1 ... - usar uma ou mais chaves mestre GUID:SHA1 para descriptografia
/mkfile:FILE - usar um arquivo com uma ou mais chaves mestre GUID:SHA1 para descriptografia