POC – Fuerza Bruta con Patator

Autor: Miguel Cobas Barcala

Ataque de Fuerza Bruta con Patator

Buenos a todos. Hoy os quería enseñar esta gran alternativa a Medusa o Hydra, que, para mí, en ciertos aspectos me parece mejor que estas últimas. Recientemente, en una prueba de un laboratorio de hacking, una de las pruebas era usar la fuerza bruta a un servicio, y obviamente tiré de mano de Hydra, pero cuál fue mi sorpresa que se paraba al primer intento o a veces se quedaba esperando más de lo debido.

El siguiente paso lógico fue usar Medussa, pero el resultado fue similar,  solo arrojó algo de luz un módulo del Metasploit, pero se eternizaba la prueba, asique toco tirar de alternativa viable y por lo tanto surgió la opción de Patator.

Patator es un script en Python para ataques de fuerza bruta, y tal cual nos dice su creador, es para aquellos que se frustraron de las más que conocidas Hydra o Medusa (o en mi caso que no llegan a buen término…), el cual dada su flexibilidad incorpora una gran cantidad de módulos para diferentes tipos de ataques de fuerza bruta.

Actualmente dispone de 30 módulos (veintinueve de servicios varios y uno de test) los cuales serían:

  • + ftp_login: Fuerza bruta a FTP
  • + ssh_login: Fuerza bruta a SSH
  • + telnet_login: Fuerza bruta a Telnet
  • + smtp_login: Fuerza bruta a SMTP
  • + smtp_vrfy: Enumerar usuarios usando SMTP VRFY
  • + smtp_rcpt: Enumerar usuarios usando SMTP RCPT TO
  • + finger_lookup: Enumerar usuarios usando Finger
  • + http_fuzz: Fuerza bruta a HTTP
  • + pop_login: Fuerza bruta a POP3
  • + pop_passd: Fuerza bruta a poppassd (http://netwinsite.com/poppassd/)
  • + imap_login: Fuerza bruta a IMAP4
  • + ldap_login: Fuerza bruta a LDAP
  • + smb_login: Fuerza bruta a SMB
  • + smb_lookupsid: Fuerza bruta a SMB SID-lookup
  • + rlogin_login: Fuerza bruta a rlogin
  • + vmauthd_login: Fuerza bruta a VMware Authentication Daemon
  • + mssql_login: Fuerza bruta a MSSQL
  • + oracle_login: Fuerza bruta a Oracle
  • + mysql_login: Fuerza bruta a MySQL
  • + mysql_query: Fuerza bruta a MySQL mediante consultas
  • + pgsql_login: Fuerza bruta a PostgreSQL
  • + vnc_login: Fuerza bruta a VNC
  • + dns_forward: Forward lookup names
  • + dns_reverse: Reverse lookup subnets
  • + snmp_login: Fuerza bruta a SNMP v1/2/3
  • + unzip_pass: Crackear archivos Zip con contraseña
  • + keystore_pass: Fuerza bruta a al password de Java los archivos keystore
  • + umbraco_crack: Crackear los hashes Umbraco HMAC-SHA1
  • + tcp_fuzz: Fuzzear los servicios TCP
  • + dummy_test: Modulo de test

Como se puede ver abarca una gran cantidad de protocolos, y cabe decir que con muy buenos resultados.

Instalación

Actualmente, está disponible en github, en el repositorio de lanjelot, con lo que clonamos el repo:

 

Figure 1 – Descargado desde GitHub

Si todo salió bien nos mostrara los módulos de los ataques a diferentes protocolos. Para ver las opciones de configuración de cada modulo, como nos indica la ventana de bienvenida, patator.py <modulo> –help

Figure 2 – Ejecutando Patator

Ya en vista preliminar, nos fijamos en la multitud de opciones del script y la potencia que nos ofrece con la cantidad de filtros y condiciones para realizar el ataque de fuerza bruta.

Time to Play

Como demostración del uso de la herramienta, usaremos un par de módulos para ver su funcionamiento. Usaremos el módulo de ssh y el de ftp, para probar y ver su sintaxis. Como se muestra en la captura de la ayuda de los módulos, la sintaxis de uso del Patator es un poco diferente a los otros programas de brute force, pero viendo los ejemplos nos daremos cuenta que es muy intuitiva. Si usamos el parámetro –help sobre un módulo veremos las opciones y un ejemplo:

Figure 3 – Ayuda

Fuerza bruta a SSH

Para nuestro caso, tenemos un servidor de pruebas el cual conocemos el usuario ‘root’ pero no sabemos nada respecto a la clave. Como vemos en la salida, tenemos como parámetros de entrada:

El mensaje que nos arrojará el servicio cuando una clave es incorrecta. Si no indicamos este último parámetro, se nos mostrara por pantalla todas las pruebas con su resultado. Es interesante ponerlo para que no se nos apile una cantidad ingente de datos en el terminal.

Figure 4 – Ataque en acción

En caso que desconozcamos el usuario y queremos usar una wordlist, añadiriamos otra variable quedando asi:

 

Figure 5 – Configurado el ataque con un usuario y wordlist

Si todo va bien, en la columna de candidates nos mostrara las contraseñas que dieron resultado positivo.

Figure 6 – Usuario y Clave lograda mediante fuerza bruta

Como añadido, si quitamos el filtro de -x ignore:mesg=’Authentication failed.’ nos mostrara el usuario y la contraseña probada con el resultado en la última columna:

Fuerza bruta a FTP

Seguimos con nuestro server de prueba, y para ftp usaremos el módulo ftp_login del patator. Como parámetros definiremos los siguientes:

 

El mensaje que nos arrojará el servicio cuando una clave es incorrecta. Si no indicamos este último parámetro, se nos mostrara por pantalla todas las pruebas con su resultado. Es interesante ponerlo para que no se nos apile una cantidad ingente de datos en el terminal.

Esta es otra condición, en patator se pueden encadenar varios filtros, o con esta condición hacer un retry si el código devuelto es 500

Figure 7 – Caso practico con FTP

Si queremos añadir una wordlist en el parámetro usuarios añadiremos lo siguiente:

 

Figure 9 – Otros ejemplos de ataque

Consideraciones finales

Es interesante saber que Patator nos ofrece la opción de continuar el ataque en caso que lo tengamos que interrumpir, el parámetro se nos mostrara en la parte inferior del ataque, con la opción de –resume la que nos mostrara los valores que le tenemos que pasar para que continúe:

Figure 10 – Resumen de la ejecución

Los parámetros a pasar serían los siguientes para que continúe:

Figure 11 – Modo Resumen

Otra consideración importante es los hilos o threads, por defecto usa 10 hilos, pero por circunstancias del servicio a atacar o el ancho de banda, nos vemos obligados a reducir este número de hilos para evitar errores o baneo. Para ello tenemos los parámetros (en verde):

 

Figure 12 – Hilos

Es interesante, como recomendación propia, limitarlos a 4 en caso de que de errores en la salida o reintentos.

La otra opción que destaco (en naranja), es para evitar que se haga un DOS y bloqueemos el servicio, evitar ciertos IDS o firewall, o restricciones de espera entre peticiones, ya que esta opción añade un delay de los segundos que pongamos entre los intentos. El parámetro sería:

Por último, es recomendable usar las wordlists del repo https://github.com/berzerk0/Probable-Wordlists que se basan el reordenar en las wordlists los password por frecuencia que aparecen en los leaks de las bases de datos lekeadas en internet, u otras fuentes, con lo que es interesante tenerla a mano.

Espero que disfrutéis usando este programa y ante cualquier duda no dudéis poneros en contacto conmigo.

Un saludo

Autor: Miguel Cobas Barcala

Menú