Attacking SAM
Last updated
Last updated
Con acceso a un sistema Windows que no esté unido a un dominio, podemos beneficiarnos al intentar copiar rápidamente los archivos asociados con la base de datos SAM para transferirlos a nuestro host de ataque y comenzar a crackear los hashes fuera de línea. Hacer esto fuera de línea nos permitirá continuar nuestros ataques sin mantener una sesión activa con el objetivo. Vamos a recorrer este proceso juntos utilizando un host objetivo. Siéntete libre de seguir adelante al crear la caja de destino en esta sección.
Hay tres hives del registro que podemos copiar si tenemos acceso de administrador local en el objetivo; cada uno tendrá un propósito específico cuando lleguemos a volcar y crackear los hashes. A continuación se presenta una breve descripción de cada uno en la tabla:
Hive del Registro | Descripción |
---|---|
Podemos crear copias de seguridad de estos hives utilizando la utilidad reg.exe
.
Lanzar CMD como administrador nos permitirá ejecutar reg.exe
para guardar copias de los hives del registro mencionados anteriormente. Ejecuta los siguientes comandos para hacerlo:
Técnicamente, solo necesitaremos hklm\sam
y hklm\system
, pero hklm\security
también puede ser útil guardarlo, ya que puede contener hashes asociados con credenciales de cuentas de usuario de dominio en caché presentes en hosts unidos a un dominio. Una vez que los hives se guardan fuera de línea, podemos utilizar varios métodos para transferirlos a nuestro host de ataque. En este caso, utilizaremos smbserver.py
de Impacket en combinación con algunos comandos útiles de CMD para mover las copias de los hives a un recurso compartido creado en nuestro host de ataque.
Todo lo que debemos hacer para crear el recurso compartido es ejecutar smbserver.py -smb2support
usando Python, darle un nombre al recurso compartido (CompData) y especificar el directorio en nuestro host de ataque donde se almacenarán las copias de los hives (/home/ltnbob/Documents
). Ten en cuenta que la opción -smb2support
asegurará que se admitan versiones más nuevas de SMB. Si no usamos esta bandera, habrá errores al conectarse desde el objetivo Windows al recurso compartido alojado en nuestro host de ataque. Las versiones más nuevas de Windows no admiten SMBv1 de forma predeterminada debido a las numerosas vulnerabilidades severas y exploits públicos disponibles.
Una vez que tengamos el recurso compartido en funcionamiento en nuestro host de ataque, podemos usar el comando move
en el objetivo Windows para mover las copias de los hives al recurso compartido.
Luego podemos confirmar que nuestras copias de los hives se movieron con éxito al recurso compartido navegando al directorio compartido en nuestro host de ataque y usando ls
para listar los archivos.
Una herramienta increíblemente útil que podemos utilizar para volcar los hashes fuera de línea es secretsdump.py
de Impacket. Impacket se puede encontrar en la mayoría de las distribuciones modernas de pruebas de penetración. Podemos buscarlo usando locate
en un sistema basado en Linux:
Usar secretsdump.py
es un proceso simple. Todo lo que debemos hacer es ejecutar secretsdump.py
usando Python y luego especificar cada archivo hive que recuperamos del host objetivo.
Al final de la ejecución, obtendremos todos los hashes asociados con los usuarios locales y la información de las contraseñas que podemos intentar crackear fuera de línea utilizando herramientas como John the Ripper
o hashcat
. Así, ¡con eso completamos nuestra técnica de copia de hives de registro!
Una vez que tengamos los hashes, podemos comenzar a intentar crackearlos usando Hashcat. Utilizaremos Hashcat para intentar crackear los hashes que hemos recopilado. Si echamos un vistazo al sitio web de Hashcat, notaremos que admite una amplia variedad de algoritmos de hashing. En este módulo, utilizamos Hashcat para casos de uso específicos. Esto nos ayudará a desarrollar la mentalidad y comprensión necesarias para usar Hashcat, así como a saber cuándo necesitamos consultar la documentación de Hashcat para entender qué modo y opciones debemos utilizar según los hashes que capturemos.
Como se mencionó anteriormente, podemos llenar un archivo de texto con los NT hashes que pudimos volcar.
Ahora que los NT hashes están en nuestro archivo de texto (hashestocrack.txt
), podemos usar Hashcat para crackearlos.
Hashcat tiene muchos modos diferentes que podemos usar. Seleccionar un modo depende en gran medida del tipo de ataque y el tipo de hash que queremos crackear. Cubrir cada modo está más allá del alcance de este módulo. Nos enfocaremos en usar -m
para seleccionar el tipo de hash 1000 para crackear nuestros NT hashes (también conocidos como hashes basados en NTLM). Podemos consultar la página wiki de Hashcat o la página de manual para ver los tipos de hash admitidos y su número asociado. Utilizaremos la infame lista de palabras rockyou.txt
mencionada en la sección de Almacenamiento de Credenciales de este módulo.
Podemos ver en la salida que Hashcat utilizó un tipo de ataque llamado ataque por diccionario para adivinar rápidamente las contraseñas utilizando una lista de contraseñas conocidas (rockyou.txt
) y tuvo éxito en crackear 3 de los hashes. Tener las contraseñas podría ser útil para nosotros de muchas maneras. Podríamos intentar usar las contraseñas que crackeamos para acceder a otros sistemas en la red. Es muy común que las personas reutilicen contraseñas en diferentes cuentas de trabajo y personales. Conociendo esta técnica, que cubrimos, puede ser útil en compromisos. Nos beneficiará usar esto cada vez que nos encontremos con un sistema Windows vulnerable y obtengamos derechos de administrador para volcar la base de datos SAM.
Tengan en cuenta que esta es una técnica bien conocida, por lo que los administradores pueden tener salvaguardas para prevenirla y detectarla. Algunas de estas formas están documentadas en el marco de ataque de MITRE.
Con acceso a credenciales con privilegios de administrador local, también es posible que podamos apuntar a LSA Secrets a través de la red. Esto podría permitirnos extraer credenciales de un servicio en ejecución, tarea programada o aplicación que utiliza LSA secrets para almacenar contraseñas.
También podemos volcar hashes de la base de datos SAM de forma remota.
Podemos ver que pudimos volcar la base de datos SAM, obteniendo credenciales útiles que también podemos crackear usando Hashcat o con otras técnicas.
hklm\sam
Contiene los hashes asociados con las contraseñas de las cuentas locales. Necesitaremos los hashes para crackearlos y obtener las contraseñas de las cuentas de usuario en texto claro.
hklm\system
Contiene la clave de arranque del sistema, que se utiliza para cifrar la base de datos SAM. Necesitaremos la clave de arranque para descifrar la base de datos SAM.
hklm\security
Contiene credenciales en caché para cuentas de dominio. Puede ser útil tener esto en un objetivo unido a un dominio.