dazzyddos/lsawhisper-bof

GitHub: dazzyddos/lsawhisper-bof

一款 Cobalt Strike BOF 工具,通过 LSA 客户端 API 而非直接读取 LSASS 内存来提取凭据、Kerberos 票据和云 SSO 令牌,可绕过 PPL 和 Credential Guard 保护。

Stars: 265 | Forks: 30

# LSA Whisperer BOF ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/ac470094b9001447.png) 这是 [LSA Whisperer](https://github.com/EvanMcBroom/lsa-whisperer) 的 Cobalt Strike Beacon Object File (BOF) 移植版 —— 该工具通过 LSA 非受信/受信客户端接口直接与 Windows 身份验证包通信,即使启用了 PPL 和 Credential Guard,也无需触碰 LSASS 进程内存。 ## 为什么会有这个项目 由 [Evan McBloom](https://github.com/EvanMcBroom) (SpecterOps) 开发的 LSA Whisperer 证明了你可以通过合法的 `LsaCallAuthenticationPackage` API 调用来恢复 DPAPI 凭据密钥、提取云 SSO 令牌以及与 Kerberos 交互。无需内存读取,无需进程注入,也不需要 LSASS 的句柄。 本项目将这些能力作为 BOF 引入 C2 框架中,以便在红队行动中使用。它从不打开 lsass 进程的句柄,所有调用都通过 LsaCallAuthenticationPackage(用于与 lsass 通信的官方客户端 API)进行,因此 LSASS 上的 PPL 完全没有影响。PPL 旨在保护 LSASS 进程不被打开/读取/注入。 ## 命令 ### MSV1_0 模块 | 命令 | 描述 | |---|---| | `lsa-credkey [LUID]` | 恢复 DPAPI 凭据密钥。可在 Credential Guard 下工作。 | | `lsa-strongcredkey [LUID]` | 恢复强 DPAPI 凭据密钥 (Win10+)。 | | `lsa-ntlmv1 [LUID] [challenge]` | 使用选定的挑战值 (challenge) 生成 NTLMv1 响应。默认挑战值 `1122334455667788` 兼容 [crack.sh](https://crack.sh) 彩虹表。 | ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e8c83298f2001450.png) ### Kerberos 模块 | 命令 | 描述 | |---|---| | `lsa-klist [LUID]` | 列出缓存的 Kerberos 票据。 | | `lsa-dump [LUID]` | 转储所有票据为 base64 `.kirbi` 格式,包含会话密钥。 | | `lsa-purge [LUID] [server]` | 清除票据。支持按服务器名称选择性清除。 | ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/70f8b032f7001452.png) ### CloudAP 模块 | 命令 | 描述 | |---|---| | `lsa-ssocookie [LUID]` | 通过 AAD 插件提取 Entra ID (Azure AD) SSO cookie。 | | `lsa-devicessocookie [LUID]` | 提取设备 SSO cookie。 | | `lsa-enterprisesso [LUID]` | 提取 AD FS 企业 SSO cookie。 | | `lsa-cloudinfo [LUID]` | 查询云提供商信息、TGT 状态、DPAPI 状态。 | **LUID**: `0` 或省略表示当前会话。使用十六进制值 (例如 `0x3e7`) 来指定特定的登录会话。针对其他会话需要 SYSTEM 权限。 ## 使用示例 ### DPAPI 凭据密钥恢复 ``` 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> ``` 将恢复的密钥配合 [SharpDPAPI](https://github.com/GhostPack/SharpDPAPI) 使用: ``` SharpDPAPI.exe masterkeys /credkey: /target: ``` ### NTLMv1 降级 ``` beacon> lsa-ntlmv1 0x21d57 [*] MSV1_0 Lm20GetChallengeResponse (NTLMv1 Generation) [+] NTLMv1 Response generated! [*] Hashcat (mode 5500): DOMAIN\user::HOSTNAME::NTResponse:1122334455667788 ``` 使用默认挑战值将响应提交到 [crack.sh](https://crack.sh/netntlm/) 即可瞬间恢复 NT 哈希。 ### Entra ID SSO Cookie ``` beacon> lsa-ssocookie 0x21d57 [+] SSO Cookie received! [*] Cookie: ESTSAUTH= ``` ## 架构 ``` 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) ``` 每个模块编译为独立的 BOF。公共代码在编译时包含(标准 BOF 模式)—— 无需共享库或运行时依赖。 ## 权限要求 | 上下文 | 能力 | |---|---| | 当前用户 (非特权) | 针对自身会话的 `lsa-klist`、`lsa-ssocookie`、`lsa-cloudinfo` | | SYSTEM (`SeTcbPrivilege`) | 通过 LUID 针对任何登录会话的所有命令 | 使用 `logonpasswords` 或 `klist` 枚举可用的 LUID 以查找目标会话。 ## 操作注意事项 - **Credential Guard**: `lsa-credkey` 和 `lsa-strongcredkey` 可在 Credential Guard 下工作。`lsa-ntlmv1` 会被其阻止。 - **CloudAP**: 需要加入 Entra ID / Azure AD 的设备且具有活动的云登录会话。在纯本地 AD 环境中无法工作。 - **NTLMv1**: 默认挑战值 `1122334455667788` 允许通过 crack.sh 进行免费的彩虹表破解。自定义挑战值虽然可行,但需要标准的暴力破解。 - **选择性清除**: 带有服务器过滤器的 `lsa-purge` 仅删除匹配的票据 —— 适用于在不中断用户会话的情况下进行针对性的 Kerberos 滥用。 ## 致谢与声明 本项目是 [Evan McBroom](https://github.com/EvanMcBroom/lsa-whisperer) ([@EvanMcBroom](https://github.com/EvanMcBroom)) 来自 [SpecterOps](https://specterops.io) 的 [LSA Whisperer](https://github.com/EvanMcBroom/lsa-whisperer) 的 BOF 移植版。所有底层研究 —— 包括未公开的 MSV1_0 协议消息、CloudAP/AAD 插件调用接口以及使其成为可能的结构定义 —— 都是他的成果。 **主要参考:** - [LSA Whisperer](https://github.com/EvanMcBroom/lsa-whisperer) — Evan McBroom / SpecterOps (MIT License) - [Exploring Credential Guard](https://posts.specterops.io/exploring-credential-guard-39c0f4975ece) — Evan McBroom - [nanorobeus](https://github.com/wavvs/nanorobeus) — wavvs (BOF 模式参考) - [Kerbeus-BOF](https://github.com/RalfHacker/Kerbeus-BOF) — RalfHacker (BOF 模式参考)
标签:Azure AD, BOF, Cobalt Strike, Credential Guard, DPAPI, LSA, NTLM, PE 加载器, PPL, RFI远程文件包含, SCP, SSO Token, StruQ, Windows 安全, 内存安全, 哈希破解, 攻击诱捕, 模拟器, 横向移动, 欺骗防御, 绕过防护, 编程规范