# T1003.005 - Cached Domain Credentials
## Técnica Pai
Esta é uma sub-técnica de [[t1003-os-credential-dumping|T1003 - T1003 - OS Credential Dumping]].
## Descrição
A técnica **T1003.005 - Cached Domain Credentials** descreve como adversários podem tentar acessar credenciais de domínio armazenadas em cache local nos sistemas operacionais Windows e Linux, projetadas para permitir autenticação mesmo quando o Domain Controller (DC) está indisponível.
Em ambientes corporativos com Active Directory, o Windows armazena localmente um número configurável de hashes de credenciais de domínio para garantir que usuários possam fazer login mesmo durante interrupções de rede ou quando laptops estão fora da rede corporativa. No Windows Vista e versões posteriores, essas credenciais em cache são armazenadas no formato **DCC2 (Domain Cached Credentials version 2)**, também conhecido como **MS-Cache v2**. Esse formato usa derivação de chave baseada em PBKDF2 com HMAC-MD4, o que o torna resistente a ataques *pass-the-hash*, mas vulnerável a ataques de [[t1110-002-password-cracking|quebra de senha (Password Cracking)]] offline - especialmente com hardware de GPU moderno.
Por padrão, o Windows armazena as últimas **10 credenciais de domínio** em cache no registro (`HKEY_LOCAL_MACHINE\SECURITY\Cache`), mas esse número pode ser alterado por política de grupo. A extração desses hashes requer privilégios de `SYSTEM` ou equivalente, tornando essa técnica frequentemente utilizada na fase pós-comprometimento, após escalada de privilégios.
Em sistemas Linux integrados ao Active Directory - sejá via **SSSD (System Security Services Daemon)** ou **Quest Authentication Services (VAS)** - as credenciais em cache são armazenadas em bancos de dados locais: `/var/lib/sss/db/cache.[domain].ldb` para SSSD ou `/var/opt/quest/vas/authcache/vas_auth.vdb` para Quest. Com acesso `sudo` ou `root`, ferramentas como `tdbdump` ou `Linikatz` podem extrair esses hashes para quebra offline.
Grupos APT do Oriente Médio - como [[g0064-apt33|APT33]], [[g0049-oilrig|OilRig]] e [[g0069-mango-sandstorm|MuddyWater]] - documentadamente utilizam essa técnica em campanhas de espionagem corporativa e governamental, aproveitando o acesso físico ou remoto a estações de trabalho fora da rede para extrair credenciais de domínio sem precisar atacar diretamente o Domain Controller.
## Como Funciona
O processo de extração de credenciais em cache é técnicamente estruturado da seguinte forma:
### Windows - DCC2 / MS-Cache v2
**Formato do hash:**
```
$DCC2$10240#username#hash_hex
```
O número `10240` representa as iterações PBKDF2. A chave derivada combina a senha do usuário com o nome de usuário em lowercase via HMAC-MD4 iterado.
**Localização no registro:**
- Hive: `HKEY_LOCAL_MACHINE\SECURITY\Cache`
- Chave: `NL$1` a `NL$10` (10 entradas por padrão)
- Acesso requer token de `SYSTEM` (não basta `Administrator` comum)
**Ferramentas utilizadas:**
| Ferramenta | Método | Requisito |
|---|---|---|
| [[mimikatz\|Mimikatz]] | `lsadump::cache` | SYSTEM / Debug privilege |
| Impacket secretsdump.py | Remoto via SMB | Credenciais de admin de domínio |
| CrackMapExec | Automatizado via SMB | Admin local/domínio |
| [[s0349-lazagne\|LaZagne]] | Módulo `mscache` | SYSTEM local |
| [[s0119-cachedump\|Cachedump]] | Extração direta do hive | SYSTEM local |
### Linux - SSSD e Quest VAS
Em distribuições Linux integradas ao AD, o SSSD armazena hashes em formato LDB (LDAP-like database):
```bash
# Extração via tdbdump (requer root)
tdbdump /var/lib/sss/db/cache.DOMINIO.COM.ldb | grep -A5 "cachedPassword"
```
O [[linikatz|Linikatz]] - equivalente Linux do Mimikatz - automatiza a extração e suporta múltiplos provedores de autenticação, incluindo SSSD, VAS, Centrify e PowerBroker.
### Quebra Offline - DCC2
Diferente de hashes NTLM (usáveis em pass-the-hash), DCC2 exige quebra offline. Com GPU moderna:
- RTX 4090: ~2,5 bilhões de tentativas/segundo contra DCC2
- Senhas de 8 caracteres com política comum: quebrável em horas a dias
- Senhas de 12+ caracteres com alta complexidade: inviável na prática
Ferramentas de quebra: **hashcat** (`-m 2100`), **john the ripper** com plugin DCC2.
## Attack Flow
```mermaid
graph TB
A["Comprometimento inicial<br/>(Phishing, exploit, RDP bruteforce)"] --> B["Escalada de privilégios<br/>(SYSTEM / root via exploit local)"]
B --> C["Extração do cache local"]
C --> D["Windows: HKLM\\SECURITY\\Cache<br/>(Mimikatz lsadump::cache)"]
C --> E["Linux: SSSD LDB / VAS VDB<br/>(Linikatz, tdbdump)"]
D --> F["Hash DCC2 obtido<br/>(MS-Cache v2)"]
E --> F
F --> G["Quebra offline (Password Cracking)<br/>(hashcat -m 2100)"]
G --> H["Senha em texto plano recuperada"]
H --> I["Uso de conta de domínio legítima"]
I --> J["SMB)"]
I --> K["Acesso a recursos de domínio<br/>(Shares, emails, VPN)"]
B --> L["Acesso direto se offline<br/>(Dispositivo fora da rede corporativa)"]
L --> C
```
## Exemplos de Uso
### Caso 1: APT33 - Espionagem em empresas de energia
O grupo iraniano [[g0064-apt33|APT33]] (Elfin) utilizou credenciais em cache durante campanhas de espionagem contra empresas do setor de energia e aviação no Oriente Médio e nos Estados Unidos. Após comprometer estações de trabalho de funcionários com laptops corporativos via spear-phishing, o grupo extraia credenciais em cache com Mimikatz para mover-se lateralmente para servidores críticos, incluindo sistemas SCADA - sem precisar atacar diretamente Domain Controllers monitorados.
### Caso 2: OilRig - Acesso persistente em organizações governamentais
O [[g0049-oilrig|OilRig]] (APT34) documentadamente combina [[t1003-005-cached-domain-credentials|extração de cache de credenciais]] com outras sub-técnicas de OS Credential Dumping para manter acesso persistente em organizações governamentais da região MENA. A técnica é particularmente eficaz quando os alvos são funcionários que trabalham remotamente com laptops corporativos, cujas credenciais em cache permitem ao atacante autenticar-se como o usuário mesmo offline.
### Caso 3: MuddyWater - Uso do LaZagne
O [[g0069-mango-sandstorm|MuddyWater]] utiliza regularmente o [[s0349-lazagne|LaZagne]] - uma ferramenta open source de recuperação de senhas - que inclui módulo específico para extração de MS-Cache v2. Em intrusões documentadas em 2023-2024, o grupo implantava o LaZagne como script Python compilado em PyInstaller para evadir EDRs, extraindo não apenas credenciais em cache mas também senhas armazenadas em navegadores, clientes SSH e aplicações corporativas.
### Caso 4: Ransomware brasileiro - Pré-movimento lateral
Grupos de ransomware que operam no Brasil, como afiliados das famílias [[lockbit|LockBit]] e [[blackcat|ALPHV]], frequentemente utilizam extração de credenciais em cache como primeira etapa após comprometer uma estação de trabalho, antes de atacar servidores críticos. Em incidentes documentados pelo CERT.br em 2024, análises forenses identificaram execuções de Mimikatz e CrackMapExec em múltiplas estações de trabalho da fase de reconhecimento pré-cifragem.
## Detecção
### Estrategias de detecção prioritárias
**1. Acesso ao hive SECURITY do registro:**
O hive `HKLM\SECURITY\Cache` é raramente acessado em operação normal. Qualquer processo que não sejá o LSASS ou processos do sistema acessando esse hive deve gerar alerta.
**2. Execução de ferramentas conhecidas:**
Detectar invocações de Mimikatz (`lsadump::cache`), LaZagne, secretsdump.py, e Cachedump por linha de comando ou hash de processo.
**3. Acesso ao banco de dados SSSD em Linux:**
Acessos ao arquivo `/var/lib/sss/db/cache.*.ldb` por processos que não sejam `sssd` ou `sssd_be` devem ser alertados.
**4. Privilégio de debug (SeDebugPrivilege):**
A maioria das ferramentas de extração requer `SeDebugPrivilege` para impersonar SYSTEM. Monitorar processos que solicitam e obtêm esse privilégio fora de contextos esperados.
### Regra Sigma - Acesso ao hive SECURITY via Mimikatz
```yaml
title: Mimikatz Cached Domain Credentials Dump
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection_tool:
CommandLine|contains:
- 'lsadump::cache'
- 'sekurlsa::msv'
- 'DumpCreds'
- 'cachedump'
selection_reg:
CommandLine|contains:
- 'SECURITY\Cache'
- 'NL