Metasploit básico: Bruteforcing MySQL

Metasploit – Introducción

En este post vamos a hablar un poco acerca de Metasploit. Es un proyecto de seguridad informática creado por H.D Moore destinado a ayudar en las tareas de pentesting, con el podemos desde escanear la red y los servicios que integra, hasta fabricar ejecutables infectados, explotar máquinas remotamente y un sinfín de etcéteras. Este framework está programado en Ruby y también incluye componentes escritos en C y en asm, no olvidemos que los exploits y demás código está escrito en Ruby así que si necesitamos realizar modificaciones en algún script debemos entender este lenguaje. Metasploit es un framework accesible a través de varias interfaces, a continuación enumeramos cada una:

  • msfconsole Es una consola interactiva, con ella podemos acceder a metasploit por consola de una forma sencilla e intuitiva. Esta interfaz es la que vamos a usar en este post. Comprobaremos que pese a correr por consola su uso es sencillo y extrapolable a personas con menos conocimientos técnicos.
  • msfcli Es un interfaz en modo consola, a diferencia de msfconsole, msfcli no es tan interactivo e intiutivo, está orientado a otra serie de tareas como aprendizaje, desarrollo de exploits, o scripting ya que podemos usar scripts en bash para automatizar ciertas tareas.
  • armitage Es un interfaz gráfica que nos permite controlar metasploit a través de menús y ventanas, es bastante intuitivo y podemos automatizar tareas como del descubrimiento de la red y la explotación de manera relativamente sencilla. Ha sido programada por Raphael Mudge, su web oficial la tienes en este enlace.

Metasploit a su vez consta de varias utilidades para poder realizar todas las tareas que nos permite:

  • msfupdate Es la utilidad para actualizar metasploit, tan sólo tenemos que ejecutarla, el proceso es automático.
  • msfpayload Es una utilidad para generar shellcodes, podemos ver un listado de shellcodes con el comando msfpayload -l
  • msfencode Es una utilidad que permite la ofuscación del shellcode mediante diferentes algoritmos.
  • msfvenom Es una combinación de msfpayload y msfenconde, de hecho, los desarrolladores de Metasploit lo plantean como el sustituto para las dos herramientas anteriores, con el podemos usar características de ambos y generarnos en el mismo comando el shellcode y lo ofuscamos para tratar de evadir mecanismos de seguridad como antivirus, IDS, etc.

Metasploit – Obteniendo la versión del servidor MySQL

Para saber qué versión de MySQL está usando el servidor remoto vamos a usar el módulo mysql_version. Para llamarlo usaremos el siguiente comando:

use auxiliary/scanner/mysql/mysql_version

Una vez ubicados en el módulo podemos usar el comando show options para ver qué opciones debemos configurar, en este caso son pocas, configuramos RHOSTS indicando el servidor remoto y ejecutamos el exploit, a continuación muestro una captura con los comandos y todo el proceso.

mysql-version-complete

Metasploit – Fuerza Bruta a un servidor MySQL

Para la práctica de este post vamos a usar msfconsole, hemos montado un servidor con Debian Jessie y le hemos instalado un servidor MySQL, a continuación le hemos dejado comentada la línea de bind-address para que acepte conexiones desde cualquier punto de la red. Nos hemos conectado a través de localhost y hemos creado un usuario, le hemos otorgado los privilegios necesarios y nos volvemos a nuestra máquina Kali Linux.

En esta ocasión vamos a usar un modulo llamado mysql_login, con el podemos realizar intentos de fuerza bruta contra nuestro servidor MySQL, para ello iniciamos msfconsole.

metasploit-banner-1

Como curiosidad, podemos ver los distintos banners de metasploit con el comando banner. Para buscar dentro de todo el compendio de scanners, exploits y demás usamos el comando search, de tal forma para buscar el módulo que necesitamos ahora usamos el siguiente comando:

search mysql_login

Nos aparecerá una descripción del módulo.

search-mysql

Para seleccionar el módulo mysql_login lo llamamos de la siguiente forma:

use auxiliary/scanner/mysql/mysql_login

Para ver las opciones usamos el comando show options, y nos devolverá una lista de todas las opciones disponibles junto a una

mysql-login-show-options

para configurar cada opción usamos la siguiente sintaxis.

set NOMBRE_OPCION VALOR

por ejemplo:

set RHOSTS 192.168.1.200
set USERNAME pepe
set PASS_FILE /root/dark0de.lst

Sé que la wordlist es muy antigua, pero para estas demostraciones no necesitaremos mucho más. Una vez hayamos configurado las opciones necesarias usaremos el comando exploit para iniciar la fuerza bruta. Si no le hemos configurado set VERBOSE false, nos devolverá por pantalla cada intento que realiza.

mysql-brute-verbosity-dark0de

Una recomendación para estos casos donde sabemos que la fuerza bruta se está aplicando adecuadamente es quitar el modo verbosity, con esto el sistema no tendrá que generar una salida por consola por cada conexión y podrá pasar el mismo diccionario en menos tiempo. Pasado un rato (dependiendo del diccionario que usemos) si ha encontrado la contraseña nos mostrará un mensaje como este:

mysql-password-found

Una vez tengamos la contraseña podemos usar otro módulo de metasploit llamado mysql_enum, con el podremos determinar los usuarios que hay en la base de datos, versión, privilegios, etc. Primero lo configuramos como hemos visto anteriormente:

mysql-enum-options-complete

Una vez configurado, ejecutaremos el comando exploit y nos devolverá una salida parecida a esta:

mysql-enum-result-short

Aquí podemos ver que nos extrae los hashes de los usuarios y recoge información acerca de la versión de mysql, el sistema, arquitectura, privilegios de los usuarios de la base de datos, enumeración de bases de datos, luego podremos pasar los hashes por una herramienta como hashcat para poder hallar los passwords de la base de datos. Un saludo!!