# T1003.003 - NTDS
> [!danger] Técnica de Alto Impacto
> **Tática:** Credential Access · **ID:** T1003.003 · **Técnica pai:** T1003 - OS Credential Dumping · **Plataforma:** Windows
>
> Comprometimento do NTDS.dit equivale ao comprometimento total do domínio Active Directory - todos os hashes de senha de todos os usuários ficam expostos.
## Descrição
A sub-técnica **T1003.003 - NTDS** descreve o acesso ou cópia do banco de dados do Active Directory Domain Services (AD DS) - o arquivo **NTDS.dit** - para extração em massa de credenciais de todos os usuários e computadores do domínio Windows. Por padrão, o NTDS.dit está localizado em `%SystemRoot%\NTDS\Ntds.dit` em todos os Domain Controllers (DCs).
O NTDS.dit é o repositório central do Active Directory: armazena informações de objetos de diretório (usuários, grupos, computadores, políticas), incluindo os hashes de senha NTLM e Kerberos de todas as contas do domínio. O acesso bem-sucedido a esse arquivo representa o comprometimento completo e irreversível do domínio - o atacante obtém as credenciais de cada conta, incluindo administradores de domínio, service accounts e contas privilegiadas.
Como o arquivo NTDS.dit é continuamente acessado pelo processo `lsass.exe` e pelo serviço AD DS, ele não pode ser copiado diretamente enquanto o sistema está em execução. Adversários contornam essa limitação através de técnicas como Volume Shadow Copy (VSS), que cria uma cópia point-in-time do volume, ou usando ferramentas especializadas como `ntdsutil.exe`, `secretsdump.py` (Impacket) e `esentutl.exe` para acessar o arquivo via shadow copy ou através de backups.
Além dos DCs ativos, adversários buscam backups de AD que contenham cópias do NTDS.dit - em servidores de backup, repositórios de snapshots de VMs ou compartilhamentos de rede. A técnica é usada extensivamente por operadores de ransomware para garantir persistência e controle total do ambiente antes do ciframento, e por grupos de espionagem como [[g0007-apt28|APT28]], [[g0034-sandworm|Sandworm Team]] e [[g1017-volt-typhoon|Volt Typhoon]] para manter acesso de longo prazo a ambientes comprometidos.
**Técnica pai:** [[t1003-os-credential-dumping|T1003 - OS Credential Dumping]]
## Como Funciona
### Pré-requisitos
Para acessar o NTDS.dit, o adversário precisa de:
- Acesso ao Domain Controller (acesso local ou RDP com privilégios de administrador de domínio)
- **OU** credenciais com permissão para executar `DCSync` via replicação AD (permissões `Replicating Directory Changes` e `Replicating Directory Changes All`)
- **OU** acesso a backups do AD (arquivos `.bak`, snapshots de VM contendo o NTDS.dit)
### Métodos de Extração
**1. Volume Shadow Copy (VSS):**
O VSS cria snapshots de volumes sem interferir em arquivos abertos. O NTDS.dit pode ser copiado de uma shadow copy sem conflito de bloqueio de arquivo:
```
vssadmin creaté shadow /for=C:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\temp\
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\temp\
```
**2. ntdsutil.exe (ferramenta nativa do Windows):**
O `ntdsutil.exe` é uma ferramenta administrativa legítima do Windows para gerenciamento do AD DS. Adversários a usam para criar um dump do Active Directory em disco:
```
ntdsutil "ac i ntds" "ifm" "creaté full C:\temp\dump" q q
```
Esse comando cria uma cópia completa do banco AD, incluindo o NTDS.dit e a chave do SYSTEM hive necessária para decifrar os hashes.
**3. secretsdump.py (Impacket):**
O [[s0357-impacket|Impacket]] é uma coleção de bibliotecas Python para protocolos de rede Windows. O `secretsdump.py` pode extrair hashes de AD remotamente via protocolo de replicação (DCSync), sem precisar de acesso físico ao DC:
```
secretsdump.py -just-dc domain/admin:password@dc-ip
```
**4. esentutl.exe:**
O `esentutl.exe` é uma ferramenta nativa do Windows para manutenção de bancos ESE (Extensible Storage Engine - o formato do NTDS.dit). Pode ser usado para copiar o arquivo enquanto está em uso através de uma shadow copy já montada.
**5. Invoke-NinjaCopy (PowerShell):**
Script PowerShell que usa chamadas de sistema de baixo nível para copiar arquivos bloqueados (como o NTDS.dit em execução) sem VSS.
### Extração de Hashes Offline
Após obter o NTDS.dit e o SYSTEM hive (que contém a System Boot Key necessária para decifrar os hashes), o adversário usa ferramentas como `secretsdump.py`, [[s0357-impacket|Impacket]], ou [[mimikatz|Mimikatz]] para extrair todos os hashes NTLM e chaves Kerberos offline:
- Os hashes NTLM podem ser usados diretamente em ataques **Pass-the-Hash** contra outros serviços da rede
- As chaves Kerberos (AES-128, AES-256, RC4-HMAC) permitem ataques **Pass-the-Ticket** e **Golden Ticket** (forjando tickets Kerberos com válidade arbitrária)
- O hash da conta `krbtgt` permite criar **Golden Tickets** - autenticação permanente mesmo após reset de senhas de usuários regulares
## Attack Flow
```mermaid
graph TB
A["Comprometimento inicial<br/>(phishing, exploração de vuln, insider)"] --> B["Escalada de privilégios<br/>(Domain Admin ou equivalente)"]
B --> C["Acesso ao Domain Controller<br/>(RDP, PsExec, WMI)"]
C --> D1["VSS - Volume Shadow Copy<br/>(vssadmin creaté shadow)"]
C --> D2["ntdsutil.exe<br/>(IFM dump nativo)"]
C --> D3["secretsdump.py / DCSync<br/>(replicação remota via Impacket)"]
C --> D4["Backup do AD<br/>(servidor de backup, snapshot VM)"]
D1 --> E["NTDS.dit + SYSTEM hive<br/>(copiados para disco/rede)"]
D2 --> E
D3 --> E
D4 --> E
E --> F["Extração offline de hashes<br/>(secretsdump, Impacket, Mimikatz)"]
F --> G1["Hashes NTLM de todos os usuários<br/>(Pass-the-Hash)"]
F --> G2["Chaves Kerberos (krbtgt)<br/>(Golden Ticket / Pass-the-Ticket)"]
F --> G3["Credenciais de service accounts<br/>(acesso a sistemas integrados)"]
G1 --> H["Movimento lateral massivo<br/>(toda a rede comprometida)"]
G2 --> H
G3 --> H
H --> I1["Persistência de longo prazo<br/>(Golden Ticket válidade 10 anos)"]
H --> I2["Ransomware / Wiper<br/>(FIN13, Sandworm)"]
H --> I3["Exfiltração de dados<br/>(espionagem - APT28, Volt Typhoon)"]
```
## Exemplos de Uso
### APT28 - Campanhas de espionagem contra governo e defesa
O [[g0007-apt28|APT28]] (Fancy Bear), grupo APT patrocinado pelo GRU russo, utilizou extração de NTDS.dit em múltiplas campanhas de espionagem contra governos da OTAN, ministérios de defesa e organizações de think-tank. Após obter acesso inicial via spearphishing e escalada de privilégios, o grupo executa `secretsdump.py` para extração completa do AD, garantindo acesso persistente mesmo após tentativas de remediação parcial - já que o Golden Ticket forjado a partir do hash `krbtgt` permanece válido até que a conta `krbtgt` tenha sua senha resetada duas vezes consecutivas.
### FIN13 - Operações financeiras no México
O [[g1016-fin13|FIN13]], grupo de crime cibernético com forte foco no México e América Latina, ficou conhecido por comprometer bancos mexicanos e redes de varejo, permanecendo em ambientes por meses ou anos sem detecção. O grupo extrai o NTDS.dit como parte padrão de suas operações de reconhecimento profundo, usando os hashes para se mover lateralmente entre sistemas de processamento de pagamento, servidores Swift e terminais ATM.
### Sandworm Team - Wiper NotPetya e ataques à Ucrânia
O [[g0034-sandworm|Sandworm Team]] (GRU, Unidade 74455) usou extração de NTDS.dit como etapa preparatória nos ataques destrutivos NotPetya (2017) e em operações contínuas contra infraestrutura ucraniana. A extração completa do AD permitiu que o wiper se propagasse usando credenciais legítimas de administrador, tornando o ataque impossível de conter sem desligar toda a rede simultaneamente.
### Scattered Spider - Comprometimento de grandes corporações
O [[g1015-scattered-spider|Scattered Spider]] combina engenharia social avançada (vishing a helpdesks) com exploração técnica para obter acesso a DCs de grandes corporações. O grupo então usa `ntdsutil.exe` ou ferramentas do [[s0357-impacket|Impacket]] para dump do NTDS.dit, vendendo as credenciais a operadores de ransomware ou usando diretamente para comprometimento de ambientes cloud (Azure AD, Okta, AWS).
### Medusa Group - Ransomware com extração de AD
O [[g1051-medusa-ransomware|Medusa Group]] (operador do ransomware Medusa) executa rotineiramente extração de NTDS.dit antes do ciframento. A estratégia de dupla extorsão do grupo inclui a ameaça de divulgar os hashes de senha extraídos - representando risco de comprometimento contínuo mesmo após recuperação do ransomware, pois as credenciais permanecem válidas até serem explicitamente resetadas.
## Detecção
### Detecção de acesso ao NTDS.dit via Shadow Copy (Sigma)
```yaml
title: NTDS.dit Access via Volume Shadow Copy
status: experimental
logsource:
category: file_access
product: windows
service: security
detection:
selection:
EventID:
- 4663
- 4656
ObjectName|contains:
- 'NTDS.dit'
- 'ntds.dit'
ObjectName|contains:
- 'HarddiskVolumeShadowCopy'
condition: selection
level: critical
tags:
- attack.credential_access
- attack.t1003.003
```
### Detecção de ntdsutil.exe com IFM (Sigma)
```yaml
title: NTDS Dump via ntdsutil IFM
status: stable
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\ntdsutil.exe'
CommandLine|contains|all:
- 'ifm'
- 'creaté'
condition: selection
level: critical
tags:
- attack.credential_access
- attack.t1003.003
```
### Detecção de vssadmin em Domain Controller (Sigma)
```yaml
title: VSS Shadow Copy Creation on Domain Controller
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith:
- '\vssadmin.exe'
- '\wmic.exe'
- '\powershell.exe'
CommandLine|contains:
- 'shadow'
- 'shadowcopy'
- 'VSS'
filter_backup:
ParentImage|contains:
- 'BackupExec'
- 'veeam'
- 'WindowsServerBackup'
condition: selection and not filter_backup
level: high
tags:
- attack.credential_access
- attack.t1003.003
- attack.t1006
```
### Detecção de DCSync via replicação AD (Sigma)
```yaml
title: DCSync Attack - Directory Replication from Non-DC
status: stable
logsource:
category: ds_access
product: windows
service: security
detection:
selection:
EventID: 4662
Properties|contains:
- '1131f6aa-9c07-11d1-f79f-00c04fc2dcd2'
- '1131f6ad-9c07-11d1-f79f-00c04fc2dcd2'
- '89e95b76-444d-4c62-991a-0facbeda640c'
filter_dc:
SubjectUserName|endswith: '