Fuerza bruta con Hashcat sin diccionarios

Bueno, como ya indiqué en el post de bienvenida este artículo es un remake de otro que escribí en la plataforma telegra.ph por allí de agosto de 2019. ¡Comencemos!

INTRODUCCIÓN

¿Conoces hashcat? Hashcat es una más que conocida herramienta para realizar ataques de fuerza bruta a infinidad de tipos de cifrados y hashes, usando todo el potencial de la GPU.

Ejemplo de uso de hashcat

El problema llega cuando, disponiendo de una herramienta tan excelente como hashcat, no le podemos sacar todo el partido que podríamos porque claro, puede que tengamos una tarjeta gráfica capaz de comprobar cientos de miles de contraseñas por segundo, pero nuestro espacio de almacenamiento es limitado, por lo que no podemos probar todas las contraseñas que nos apetezca, ¿verdad? Pues no, hashcat nos ofrece la posibilad de utilizarlo sin necesidad de utilizar un diccionario ni ocupar espacio en el disco duro, sino que las contraseñas se vayan generando en base a un patrón que le especifiquemos.

La intención de este post es mostrar como se puede realizar estos tipos de ataque de fuerza bruta de manera entendible y sencilla. Primero que todo veamos como podemos instalar y ejecutar hashcat en distintos sitemas operativos, si ya lo tienes instalado, puedes saltarte esta parte.

INSTALACIÓN Y EJECUCIÓN

Instalar hashcat no supone problema en absoluto y, menos aún, si estamos trabajando en alguna distribución de Linux orientada a la seguridad informática o auditoria de redes (Kali Linux, Parrot OS, WifiSlax, etc.) porque seguramente esta herramienta ya esté instalada.

No hay de que preocuparse, esta herramienta es totalmente compatible con Windows y con OS X. Además extremadamente sencilla de ejecutar.


Windows:

  • Descargamos los binarios de hashcat desde su página web oficial: hashcat.net
  • Lo descomprimimos con el programa de nuestra preferencia (WinRar, por ejemplo).
  • Copiamos la ruta donde se han descomprimido todos los archivos:
Ruta donde lo he descomprimido
  • Abrimos el CMD. Podemos hacerlo pulsando la tecla de Windows + R, escribiendo "cmd" y pulsando enter; o yendo a la barra de búsqueda de programas y escribiendo "cmd" o "símbolo del sistema".
  • Cuando se nos abra, escribimos "cd" y a continuación la ruta que anteriormente hemos copiado.

Una vez hecho eso ya podemos usar hashcat desde el cmd. La sintaxis es simplemente el nombre del .exe (hashcat.exe) y seguido de los parámetros que queramos.

Así de sencillo es usar hashcat en Windows, irse a la ruta donde lo tenemos y ejecutarlo con hashcat.exe.

OS X:

Aquí es incluso más sencillo que en Windows.

  • Iniciamos la terminal. La podemos buscar en el menú con todas las aplicaciones, dentro de una carpeta llamada "Utilidades".
  • Una vez abierta escribimos lo siguiente:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null

NOTA: Es posible que pida introducir nuestra contraseña. En ese caso la contraseña no se mostrará en la pantalla, habrá que ponerla a ciegas.

  • Una vez haya terminado eso ejecutamos el siguiente comando:
brew cask install hashcat

¡Ya podrás disfrutar de hashcat escribiendo simplemente "hashcat" seguido de las diferentes opciones qu quieras en la terminal!

Linux:

En Linux dependerá de la distribución que estemos usando, si usamos el administrador de paquetes que tengamos, si usamos apt-get, probablemente podamos instalarlo escribiendo en la terminal:
apt-get install hashcat

Si usamos Pacman podremos escribir:

pacman -S hashcat

Otra opción es descargarse los binarios de la página oficial hashcat.net y ejecutarlo yendo hasta la carpeta con "cd" y ejecutando "./hashcat.bin".

De todas formas si estamos trabajando en alguna distro como Kali Linux, Parrot OS, Wifislax, BlackArch u otra orientada al pentesting o hacking wireless es casi seguro al 100% que hashcat se encuentra instalada, y podemos ejecutarlo escribiendo "hashcat" en la terminal.


HASHCAT SIN DICCIONARIOS

¡Empezamos a lo que hemos venido! Vamos a poner un ejemplo de como sería la sintaxis y vamos a analizarlo por partes y modificándolo según nuestras necesidades. En el siguiente ejemplo realizaremos un ataque de fuerza bruta a un fichero hccapx (un handshake de una red wifi) en el que se irán probando contraseñas que mezclan mayúsculas, minúsculas y números, contraseñas de 1 a 10 cifras:

hashcat -m 2500 fichero.hccapx -a 3 ?1?1?1?1?1?1?1?1?1?1 -1 ?l?d?u --increment 
Vamos a desglosarlo:

-m: Es para indicar el tipo de hash que estamos trabajando. En el ejemplo estamos tratando de descifrar un handshake de una red WPA2 en formato hccapx , al que le corresponde el número 2500. La cantidad de hashes que pueden ser descifrados son muchísimos, aquí una tabla con todos: https://pastebin.com/raw/fEGKMV0q


-a: Es el modo de ataque. El que estamos usando es el 3, en el que hashcat se encarga de generar las contraseñas, sin diccionarios. Aquí los distintos modos:

0 -> El clásico. Prueba las contraseñas de una wordlist o diccionario.
1 -> Combinación. Con este modo podemos combinar y probar 2 diccionarios a la vez.
3 -> En este hashcat se encarga de generar las contraseñas a partir de un patrón que le especifiquemos.
4 -> Híbrido. Combina una máscara (que es lo que estamos viendo en este post) con un diccionario.


?1?1?1?1?1?1?1?1?1?1: Cada "?1" es un carácter que sigue el patrón que le especificamos con "-1". Si quisiéramos, por ejemplo otro patrón (por ejemplo solo mayúsculas) en cierta posición pondríamos en esa posición un "?2" y luego especificaríamos el patrón con "-2", se pueden poner hasta ?4.
Si queremos que nuestra convinación tenga 12 carácteres tendremos que poner 12 "?1".


-1 ?l?d?u: Aquí se indica el tipo de caracteres que son usados. Estamos trabajando con letras mayúsculas (?u), letras minúsculas (?l) y números (?d). Aquí todos los disponibles:

 ?l = abcdefghijklmnopqrstuvwxyz

 ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ

 ?d = 0123456789

 ?s = «espacio»!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

 ?a = ?l?u?d?s

 ?b = 0x00 - 0xff


También podríamos construir el patrón de esta manera:

RED?d?d?d

Esto probaría contraseñas como las siguientes: "RED123", "RED484", etc.

Con ?d especificamos que queremos que pruebe números, pero también podemos usar el resto, o combinar varios "?lud".

Otra opción de "-1", "-2", "-3" y "-4" es que podemos definir los carácteres que queramos, por ejemplo, si buscamos una contraseña de carácteres hexadecimales podemos poner esto: "-1 0123456789ABCDEF".


--increment: Lo que esto indica es que se vayan probando contraseñas desde 1 carácter hasta los máximos seleccionados (en este caso 10). Iría probando contraseñas de 1 carácter todavía, luego de 2, luego de 3, y así hasta de 10.

ADAPTÁNDOLO A NUESTRAS PREFERENCIAS Y OTRAS OPCIONES

Continuando, ahora veremos ciertas cosas que pueden hacer tu experiencia con hashcat mucho más eficaz, agradable o incluso cómoda.

Anteriormente se mencionó la posibilidad de probar contraseñas que empiezan siendo de 1 carácter y acaban siendo de 8 con "--increment" pero... Vaya tontería ¿no?, si las contraseñas de redes WPA son de mínimo 8 dígitos, pues podemos indicarle que genere contraseñas de 8 a 10 cifras.

¿Cómo? Muy fácil: usamos la opción --incremet y después incluimos el mínimo (en este caso 8) así: "--increment-min=8"; y el máximo de la misma manera: "--increment-max=10". Así quedaría nuestro código añadiendo esta característica:

hashcat -m 2500 fichero.hccapx -a 3 ?1?1?1?1?1?1?1?1?1?1 -1 ?l?d?u --increment --increment-min=8 --increment-max=10


Otra función que nos ofrece mayor control es "--status" que nos permite que la información mostrada en pantalla se vaya actualizando automáticamente.

Información mostrada por hashcat durante el proceso

Podemos regular cada cuanto tiempo queremos que se actualice con "--status-timer=X" (X representa el número de segundos).

Aquí añadimos a nuestro código que se actualice la información automáticamente cada 30 segundos:

hashcat -m 2500 fichero.hccapx -a 3 ?1?1?1?1?1?1?1?1?1?1 -1 ?l?d?u --increment --increment-min=8 --increment-max=10 --status --status-timer=30


¡Y hasta aquí el artículo! Espero que os haya gustado y, sobre todo, que os haya servido. Seguramente volveré a escribir del tema porque es bastante extenso y ofrece muchas posibilidades.
Mi primer post, tanto en este blog como en telegraph. Un placer siempre ayudarles, cualquier duda podéis ponerla en los comentarios y será contestada.

Si queréis más info podéis encontrarla en la página oficial de hashcat, aquí unos enlaces:

Comentarios

Entradas populares de este blog

¡Bienvenidos al Blog!