
SharpDPAPI è un porting in C# di alcune funzionalità DPAPI di Mimikatz.
SharpDPAPI è un port in C# di alcune funzionalità DPAPI dal progetto Mimikatz di @gentilkiwi.
Non ho ideato questa logica, si tratta semplicemente di un port da Mimikatz per comprendere meglio il processo e renderlo operativo per adattarlo al nostro flusso di lavoro.
Il sottoprogetto SharpChrome è un adattamento del lavoro di @gentilkiwi e @djhohnstein, in particolare del suo progetto SharpChrome. Tuttavia, questa versione di SharpChrome utilizza una versione diversa della libreria SQL in C# che supporta l'apertura senza blocco. SharpChrome è creato come progetto separato in SharpDPAPI a causa delle dimensioni della libreria SQLite utilizzata.
Sia Chrome che i browser Edge più recenti basati su Chromium possono essere analizzati con SharpChrome.
SharpChrome utilizza anche una versione minimizzata del codice BCrypt P/Invoke di @AArnott rilasciato sotto licenza MIT.
Se non hai familiarità con DPAPI, dai un'occhiata a questo post per ulteriori informazioni di base. Per maggiori informazioni su Credenziali e Vault in relazione a DPAPI, consulta la voce wiki di Benjamin sull'argomento.
@harmj0y è l'autore principale di questo port.
SharpDPAPI è concesso in licenza secondo i termini della licenza BSD 3-Clause.
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.20.0
Recupera la chiave di backup DPAPI di un controller di dominio, specificando opzionalmente un DC e un file di output:
SharpDPAPI backupkey [/nowrap] [/server:SERVER.domain] [/file:key.pvk]
Il comando *search* cercherà potenziali blob DPAPI nel registro, file, cartelle e blob 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>]
Analisi Machine/SYSTEM:
machinemasterkeys - analizza tutti i file masterkey di macchina raggiungibili (si eleva a SYSTEM per recuperare il segreto LSA DPAPI_SYSTEM)
machinecredentials - utilizza 'machinemasterkeys' e poi analizza i file Credential di macchina
machinevaults - utilizza 'machinemasterkeys' e poi analizza i Vault di macchina
machinetriage - esegue i comandi 'machinecredentials' e 'machinevaults'
Analisi Utente:
Argomenti per il comando 'masterkeys':
/target:FILE/cartella - analizza una masterkey specifica o una cartella piena di masterkey (altrimenti analizza le masterkey locali)
/pvk:BASE64... - utilizza un file di chiave privata di dominio DPAPI in base64 per decrittare prima le masterkey utente raggiungibili
/pvk:key.pvk - utilizza un file di chiave privata di dominio DPAPI per decrittare prima le masterkey utente raggiungibili
/password:X - decritta le masterkey dell'utente target usando una password in chiaro (funziona in remoto)
/ntlm:X - decritta le masterkey dell'utente target usando un hash NTLM (funziona in remoto)
/credkey:X - decritta le masterkey dell'utente target usando una credkey DPAPI (SHA1 di dominio o locale, funziona in remoto)
/rpc - decritta le masterkey dell'utente target chiedendo al controller di dominio di farlo
/server:SERVER - analizza un server remoto, presupponendo accesso amministrativo
/hashes - output degli hash del file usermasterkey in formato JTR/Hashcat (nessuna decrittazione)
Argomenti per i comandi credentials|vaults|rdg|keepass|triage|blob|ps:
Decrittazione:
/unprotect - forza l'uso di CryptUnprotectData() per i comandi 'ps', 'rdg' o 'blob'
/pvk:BASE64... - utilizza un file di chiave privata di dominio DPAPI in base64 per decrittare prima le masterkey utente raggiungibili
/pvk:key.pvk - utilizza un file di chiave privata di dominio DPAPI per decrittare prima le masterkey utente raggiungibili
/password:X - decritta le masterkey dell'utente target usando una password in chiaro (funziona in remoto)
/ntlm:X - decritta le masterkey dell'utente target usando un hash NTLM (funziona in remoto)
/credkey:X - decritta le masterkey dell'utente target usando una credkey DPAPI (SHA1 di dominio o locale, funziona in remoto)
/rpc - decritta le masterkey dell'utente target chiedendo al controller di dominio di farlo
GUID1:SHA1 ... - utilizza una o più masterkey GUID:SHA1 per la decrittazione
/mkfile:FILE - utilizza un file contenente una o più masterkey GUID:SHA1 per la decrittazione
Targeting:
/target:FILE/cartella - analizza una posizione specifica di file 'Credentials', '.rdg|RDCMan.settings', 'blob' o 'ps', o una cartella 'Vault'
/server:SERVER - analizza un server remoto, presupponendo accesso amministrativo
Nota: deve essere usato con /pvk:KEY o /password:X
Nota: non applicabile ai comandi 'blob' o 'ps'
Analisi Certificati: