Muy buenas a todos!

Esta semana vamos a realizar ataques de Password Spraying con una herramienta llamada Spraykatz, que nos permitirá recuperar credenciales de máquinas Windows en grandes entornos de Active Directory sin dificultad, evitando además, las soluciones antivirus en la medida de lo posible.


Probablemente, una de las técnicas más conocidas y utilizadas en la historia del hacking, han sido sin duda los ataques de fuerza bruta. Estos ataques, básicamente, consisten en intentar adivinar una ruta a un directorio desconocido, un usuario, una contraseña o un parámetro a través de prueba y error.

En esta ocasión, nos centraremos en la parte de usuario y contraseña.

Normalmente, si obtenemos de alguna forma el nombre de un usuario o utilizamos uno genérico (administrador, invitado, etc..), podemos intentar adivinar la contraseña del mismo a través de esta técnica. El problema de hacer esto, es que podríamos encontrarnos con una política de bloqueo, que inhabilite al usuario después de N números de intentos fallidos.

Para evitar esto, se inventó una nueva técnica llamada Password Spraying. A diferencia de la anterior -en la que probamos diferentes contraseñas sobre un mismo usuario en la misma máquina- en este caso, se utiliza la misma combinación de usuario y contraseña contra un número indeterminado de equipos.

Para simplificarlo, pondré un ejemplo sencillo:

Supongamos que nos encontramos en una red corporativa, en la que hay toda clase de equipos, entre ellos, máquinas con Microsoft Windows. De alguna forma, descubrimos (o suponemos) que los equipos tienen habilitado el usuario administrador local y nuestro objetivo es comprometer todas las máquinas posibles.

Identificamos el segmento de red en el que se encuentran dichas máquinas y componemos una contraseña como «Enero2021» para realizar nuestro ataque. Sabiendo que, al menos dispondremos de un par o tres de intentos por equipo, podríamos probar la combinación administrador:Enero2021 en todas las máquinas sin bloquear en ningún momento al usuario en cuestión.

Fácil, sencillo y para toda la familia. Pero, cómo podemos automatizar este proceso? 😋

Existen todo tipo de aplicaciones pensadas para este fin, e incluso, podemos hacer un pequeño y sencillo script con un bucle para conseguir reproducir esta técnica. Por suerte para nosotros, hoy no será necesario tal esfuerzo. Gracias al desarrollador @aas_s3curity, será tan sencillo como clonar un repositorio e instalar un par de dependencias para conseguirlo.

Por si todo esto fuera poco, además, la herramienta Spraykatz aprovecha la oportunidad de disponer de unas credenciales válidas (con permisos administrativos) para intentar obtener todas las credenciales cargadas en memoria (ya sean contraseñas o hashes) volcando el proceso lsass.exe de forma totalmente automática.

A continuación, os dejo el enlace la misma para más información: https://github.com/aas-n/spraykatz

Ahora que ya sabemos en qué consiste el Password Spraying, vamos a poner a prueba la herramienta en cuestión 😜

En primer lugar, como siempre, ejecutaremos los siguientes comandos:

apt update
apt install -y python3.6 python3-pip git nmap
git clone https://github.com/aas-n/spraykatz.git
cd spraykatz
pip3 install -r requirements.txt

Si todo ha salido bien, debería de aparecernos algo parecido a la imagen anterior. A continuación, comprobaremos que parámetros acepta la herramienta a través de la ayuda de la misma. Para ello, ejecutaremos lo siguiente:

./spraykatz.py -h

Para que os resulte más sencillo, lo podéis ver mejor en la siguiente tabla:

Parámetro Descripción
-u, –username Usuario a utilizar. Debe tener derechos de administrador en los sistemas de destino para obtener la ejecución remota de código.
-p, –password Contraseña del usuario o hash NTLM en formato LM:NT.
-t, –targets Direcciones IP y / o rangos de direcciones IP. Pueden enviarse a través de un fichero de objetivos (un objetivo por línea) o en una línea (separados por comas).
-d, –domain Dominio del usuario. Si el usuario utilizado forma parte de un dominio, no es necesario indicarlo de forma explícita.
-r, –remove Elimina ProcDump y los volcados creados en las máquinas remotas. Por si acaso.
-v, –verbosity Modo de verbosidad {advertencia, información, depuración}. Por defecto == info.
-w, –wait Cuántos segundos espera Spraykatz antes de atacar de nuevo. El valor predeterminado es de 180 segundos.

Como podéis comprobar, el uso de la herramienta es muy sencillo, siendo únicamente obligatorio el uso de los tres primeros parámetros (usuario, contraseña y target).

Ahora que sabemos como utilizar la herramienta, vamos a ponerla en práctica con el siguiente comando:

./spraykatz.py -u administrador -p 123456 -t 192.168.204.0/24

Llegados a este punto, si no disponemos de la herramienta ProcDump de Sysinternals, la herramienta nos preguntará si queremos descargarla. Aceptamos y continuamos con la ejecución de Spraykatz:

A partir de aquí, la herramienta se conectará a todas las máquinas que encuentre dentro del rango de IP que le hayamos proporcionado. Si las credenciales son válidas en alguna de esas máquinas y además, cuentan con permisos de administrador, la herramienta volcará el proceso lsass.exe, extraerá y parseará las credenciales o los hashes obtenidos y los mostrará en pantalla.

Además, la herramienta borrará cualquier rastro del volcado antes de proceder a repetir este proceso en el siguiente equipo. Una vez el bucle termine y la ejecución de este proceso finalice en todos los equipos, las credenciales se guardaran en el directorio de la misma.

De esta forma, una vez haya terminado todo el proceso, solo tenemos que consultarlo con el siguiente comando:

cat misc/results/creds.txt

Sin duda alguna, se trata de una herramienta muy potente y sencilla de utilizar. Además, el uso de ProcDump (herramienta legítima de Microsoft) evita que seamos detectados por la mayoría de soluciones antivirus convencionales.

Como conclusión final, pese a que existen muchas otras soluciones para realizar este mismo proceso, la sencillez y funcionalidad de la herramienta nos permite ahorrar mucho tiempo respecto al proceso manual, siendo muy útil en entornos con baja monitorización y laboratorios de tipo CTF.

Espero que os haya gustado y os resulte útil en vuestras próximas auditorías.

Nos vemos en la próxima!