Realizando comparação de hashs do Active Directory

Jessé Neto (Tio Chik0)
stolabs
Published in
4 min readMar 21, 2022

Comecei há alguns anos trabalhar com Segurança da Informação e, como um profissional de segurança, entendi que precisava estar sempre atualizado das modalidades de ataques, soluções, mitigações, monitoramento e defesa.
Acompanhei vários amigos sofrendo ataques, inúmeras lives, conversas e cursos e o que mais me chamou atenção é que sempre alguém vai estar preocupado com a segurança da sua empresa e em muitos casos permanecer em um nível de aceitação do risco.

Bem, como vários ataques surgem diariamente, acabei me deparando com ataques de roubo de credenciais. Como cada senha tem seu hash e existem ataques utilizando esse hash, será que teria alguma forma ou uma solução viável pra identificar ou diminuir a possibilidade desse tipo de ataque? Me deparei com o tão conhecido e falado pass-the-hash, sim, esse mesmo. Esse que é usado em várias talks de segurança que venho acompanhando. Essa técnica de ataque existe há anos e continua sendo utilizada por profissionais de segurança da informação para testar seus ambientes. O pior de tudo é saber que muitas empresas não adotaram nenhuma medida para conter esse ataque. Posto isto, dizem por ai que a informação vale mais que ouro nos dias de hoje e, por acaso, hashs de credenciais privilegiadas ou não privilegiadas de uma grande empresa não teria valor na mão de qualquer um que fosse?

Mas, e se… Todo esforço de se mover lateralmente, realizar ataques de engenharia social, phishing ou enviar de arquivos maliciosos fosse substituído por um arquivo .txt com um monte de hashs de senhas utilizadas em uma grande empresa e compartilhado pela internet?
Sei que você pensou coisa ruim, eu sei. Eu também pensei. Mas, imagina que essa lista possa ser útil para você avaliar se na sua empresa alguém está usando essas mesmas senhas? Se essa lista fosse útil para ensinar os usuários a construir uma melhor forma de senha?

Caso sua resposta seja um “mas, como eu poderia comparar esses hashs com as senhas da empresa que estou?”, então tenho uma solução viável para você e te garanto que não será difícil de entender e aplicar. Para quem trabalha na área de Segurança e não tem muita aproximação com o Active Directory ou Windows Server precisa saber que é possível realizar um dump da base do AD para obter credenciais e dados sobre os usuários do domínio. A base a que me refiro é o NTDS.dit disponibilizado facilmente no endereço a seguir:

C:\Windows\NTDS\ntds.dit

OK, você entendeu que o Windows guarda esse arquivo e agora sabe onde encontrá-lo. Mas, como extrair esse arquivo?

Por padrão, a base de dados do Active Directory fica localizada na pasta “%systemroot%\ntds”. Nesta pasta você pode encontrar os seguintes arquivos:

  • ntds.dit : banco de dados do Active Directory;
  • ebb.chk : arquivo de checkpoint utilizado pelo banco de dados do AD;
  • ebb*.log : log de transações do banco de dados do Active Directory;
  • res1.log e res2.log : log de transações reservado.

Para realizar essa tarefa é bastante simples, siga os passos a seguir:

Primeiro, acesse o Windows PowerShell com permissões administrativas.

Depois digite:

ntdsutil.exe 'ac intds' 'ifm' 'create full c:\temp' qq

Pronto. No seu C:\temp será criada uma pasta com os registros SYSTEM e SECURITY.

Mas, você sabe o que significa cada parâmetro que digitou?

  • ntdsutil.exe: utilitário de gestão física do banco de dados do AD;
  • ac i ntds: ac(activate) i(instance) ntds(Banco de Dados em execução);
  • ifm: install from media. Dump do banco de dados;
  • create Full: criando banco de dados completo para c:\temp;
  • quit quit: você sai dos módulos.

OBS: Esta é apenas UMA forma para realizar DUMP do Active Directory, posto que existem mais opções e formas para realizar o mesmo trabalho.

Em posse do arquivo ntds.dit vamos extrair os hashs usando a ferramenta secretsdump através do comando:

.\secretsdump_windows.exe LOCAL -ntds “C:\temp\Active Directory\ntds.dit” -system “C:\temp\registry\SYSTEM”
  • secretsdump_windows.exe: utilitário baixado aqui;
  • LOCAL: informando que são utilizados arquivos locais;
  • -ntds: endereço do arquivo do dump;
  • -system: ou HKLM\SYSTEM, trata-se de um link simbólico(arquivo binário denominado hives) que identifica a chave a que pertence e o caminho onde o arquivo de sistema pode ser encontrado.

Pronto, agora com esses dados você tem como realizar comparações e analisar entre os possíveis hashs expostos de contas afetadas e os hashs do seu ambiente e corrigir alguma ou qualquer eventual ocorrência na sua empresa.

O objetivo deste post era demonstrar de forma bem simples como obter o DUMP do Active Directory e uma das múltiplas possibilidades que esse DUMP oferece, tal como obter informações necessárias para realizar a comparação de hashs.

https://docs.microsoft.com/pt-br/troubleshoot/windows-server/identity/use-ntdsutil-manage-ad-files

--

--