🔑Atacando a SAM
En esta sección veremos varias técnicas de ataques de contraseñas contra la base de datos SAM (Security Accounts Manager) en sistemas Windows.
Con acceso a un sistema Windows sin dominio, podemos beneficiarnos al intentar volcar rápidamente los archivos asociados con la base de datos SAM para transferirlos a nuestro host de ataque y comenzar a descifrar hashes sin conexión. Hacer esto sin conexión garantizará que podamos continuar intentando nuestros ataques sin mantener una sesión activa con un objetivo. Repasemos este proceso juntos utilizando un host de destino.
Copiar colmenas del registro SAM
Hay tres colmenas de registro que podemos copiar si tenemos acceso de administrador local en el destino; cada uno tendrá un propósito específico cuando lleguemos a desechar y descifrar los hashes. Aquí hay una breve descripción de cada uno en la siguiente tabla:
Colmena de registro | Descripción |
| Contiene los hash asociados con las contraseñas de las cuentas locales. Necesitaremos los hashes para poder descifrarlos y obtener las contraseñas de las cuentas de usuario en texto sin cifrar. |
| 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. |
| Contiene credenciales almacenadas en caché para cuentas de dominio. Podemos beneficiarnos de tener esto en un destino de Windows unido a un dominio. |
Podemos crear copias de seguridad de estas colmenas usando reg.exe
Usando reg.exe
Iniciar CMD como administrador nos permitirá ejecutar reg.exe
para guardar copias de las colmenas de registro antes mencionadas. Ejecute estos comandos a continuación 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 las credenciales de cuentas de usuario de dominio almacenadas en caché presentes en hosts unidos a un dominio. Una vez que las colmenas se guardan sin conexión, podemos usar varios métodos para transferirlas a nuestro host de ataque. En este caso, usemos smbserver.py de Impacket en combinación con algunos comandos CMD útiles para mover las copias de la colmena a un recurso compartido creado en nuestro host de ataque.
Creando un recurso compartido con smbserver.py
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 el recurso compartido almacenará las copias de la colmena ( /home/ltnbob/Documents
). Sepa que la smb2support
opción garantizará que se admitan las versiones más recientes de SMB. Si no utilizamos este indicador, habrá errores al conectarnos desde el objetivo de Windows al recurso compartido alojado en nuestro host de ataque. Las versiones más recientes de Windows no son compatibles con SMBv1 de forma predeterminada debido a las numerosas vulnerabilidades graves y exploits disponibles públicamente.
Una vez que tengamos el recurso compartido ejecutándose en nuestro host de ataque, podemos usar el comando move
en el destino de Windows para mover las copias de la colmena al recurso compartido.
Mover copias de colmena al recurso compartido
Luego podemos confirmar que nuestras copias de la colmena se movieron exitosamente al recurso compartido navegando al directorio compartido en nuestro host de atacante y usar ls
para enumerar los archivos.
Confirmación de copias de colmena transferidas al host de atacante
Volcado de hashes con secretsdump.py de Impacket
Una herramienta increíblemente útil que podemos usar para volcar los hashes sin conexión es Impacket secretsdump.py
. Impacket se puede encontrar en la mayoría de las distribuciones de pruebas de penetración modernas. Podemos verificarlo usando locate
en un sistema basado en Linux:
Localizando secretsdump.py
Usar secretsdump.py es un proceso simple. Todo lo que debemos hacer es ejecutar secretsdump.py usando Python y luego especificar cada archivo de colmena que recuperamos del host de destino.
Ejecutando secretsdump.py
Aquí vemos que secretsdump vuelca exitosamente los hashes locales de SAM y también habría volcado la información de inicio de sesión del dominio almacenada en caché si el objetivo estuviera unido a un dominio y tuviera credenciales almacenadas en caché presentes en hklm\security
. Observe que el primer paso que ejecuta secretsdump es apuntar al archivo system bootkey
antes de proceder a volcar el archivo LOCAL SAM hashes
. No puede volcar esos hashes sin la clave de inicio porque esa clave de inicio se usa para cifrar y descifrar la base de datos SAM, por lo que es importante para nosotros tener copias de las colmenas del registro que analizamos anteriormente en esta sección. Observe en la parte superior de la salida de secretsdump.py
:
Esto nos dice cómo leer el resultado y qué hashes podemos descifrar. La mayoría de los sistemas operativos Windows modernos almacenan la contraseña como un hash NT. Los sistemas operativos anteriores a Windows Vista y Windows Server 2008 almacenan las contraseñas como un hash LM, por lo que solo podemos beneficiarnos de descifrarlas si nuestro objetivo es un sistema operativo Windows más antiguo.
Sabiendo esto, podemos copiar los hash NT asociados con cada cuenta de usuario en un archivo de texto y comenzar a descifrar contraseñas. Puede ser beneficioso tomar nota de cada usuario, para que sepamos qué contraseña está asociada con cada cuenta de usuario.
Cracking de Hashes con Hashcat
Una vez que tengamos los hashes, podemos comenzar a intentar descifrarlos usando Hashcat . Lo usaremos para intentar descifrar los hashes que hemos recopilado. Si echamos un vistazo al sitio web de Hashcat, notaremos compatibilidad con una amplia gama de algoritmos hash. En este módulo, utilizamos Hashcat para casos de uso específicos. Esto debería ayudarnos a desarrollar la mentalidad y la comprensión para usar Hashcat, así como también saber cuándo debemos consultar la documentación de Hashcat para comprender qué modo y opciones debemos usar según los hash que capturemos.
Como se mencionó anteriormente, podemos completar un archivo de texto con los hashes NT que pudimos volcar.
Agregar NT Hashes a un archivo .txt
Ahora que los hash NT están en nuestro archivo de texto ( hashestocrack.txt
), podemos usar Hashcat para descifrarlos.
Ejecutando Hashcat contra NT Hashes
Hashcat tiene muchos modos diferentes que podemos usar. La selección de un modo depende en gran medida del tipo de ataque y del tipo de hash que queremos descifrar. Cubrir cada modo está más allá del alcance de este módulo. Nos centraremos en utilizar -m
para seleccionar el tipo de hash 1000
para descifrar nuestros hashes NT (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. Usaremos la lista de palabras rockyou.txt
:
Podemos ver en el resultado que Hashcat utilizó un tipo de ataque llamado ataque de diccionario para adivinar rápidamente las contraseñas utilizando una lista de contraseñas conocidas (rockyou.txt) y logró descifrar 3 de los hashes. Tener las contraseñas nos podría ser útil de muchas maneras. Podríamos intentar utilizar las contraseñas que desciframos para acceder a otros sistemas de la red. Es muy común que las personas reutilicen contraseñas en diferentes cuentas personales y laborales. Conocer esta técnica que cubrimos puede ser útil en compromisos. Nos beneficiaremos al usar esto cada vez que nos encontremos con un sistema Windows vulnerable y obtengamos derechos de administrador para volcar la base de datos SAM.
Tenga en cuenta que esta es una técnica bien conocida, por lo que los administradores pueden tener medidas de seguridad para prevenirla y detectarla. Podemos ver algunas de estas formas documentadas dentro del marco de ataque MITRE.
Consideraciones sobre el volcado remoto y LSA Secrets
Con acceso a las credenciales con local admin privileges
, también nos es posible apuntar a LSA Secrets a través de la red. Esto podría permitirnos extraer credenciales de un servicio en ejecución, una tarea programada o una aplicación que utilice secretos LSA para almacenar contraseñas.
Deshacerse de los LSA Secrets de forma remota
Volcando SAM de forma remota
Caso práctico
Lo primero vamos a descargar los archivos:
Después vamos a transferir los archivos a nuestra máquina de atacante:
Una vez levantado el servidor en Kali, como estamos en la misma red por VPN, vamos a transferir los archivos de la siguiente manera:
Ahora si en Kali accedemos la la ruta que le indicamos accederemos a los archivos:
Una vez que tenemos los archivos en Kali, vamos a ejecutar impacket-secretsdump
para volcar todos los hashes de los usuarios del sistema:
Una vez que tenenemos el volcado de hashes, vamos a guardar solo los nthash
en un archivo de texto:
Y vamos a crackear todos los hashes con hashcat
y el diccionario rockyou
:
Última actualización