on-the-fly: Cómo hackear MySQL con Network Packet Manipulation en 1 minuto
La herramienta está disponible en su Github y puede ser descargada. Es una herramienta Open Source en la que su base es la colaboración de los usuarios y la creación de módulos que pueden ser ejecutados de forma simultánea a través del concepto del ‘job’.
También hemos hablado en el blog sobre la técnica de manipulación de paquetes o Network Packet Manipulation sobre diferentes entornos de prueba y el potencial de la técnica con algunos protocolos que siguen sin cifrarse por defecto. Empezamos hablando sobre cómo manipular paquetes ‘al vuelo’ con herramientas como Etterfilter, cómo hacerlo sobre un entorno para hackear Wordpress o para hackear Moodle y cómo hacerlo a través de netfilterqueue, modernizando el ataque y dando más flexibilidad al programador y al Ethical Hacker.
- Máquina Linux con una base de datos MySQL.
- Cliente Windows (o cualquier sistema) que hará de aplicación web (o lo que sea) que pide datos a la base de datos. Nótese que aplicación y datos están separados.
- Pentester con máquina Kali Linux y herramienta on-the-fly preparada.
- El módulo de manipulación de MySQL lo que hará es estar preparado para que cuando se detecte una sentencia o palabra clave, se ejecute el código de sustitución y se cambie una sentencia por otra. Esto puede provocar la alteración de la tabla y los datos que hay en su interior.
Lo primero es ver la base de datos y alguna tabla que hay en el servidor. Desde la aplicación de la máquina Windows realizamos una consulta.
Como se puede ver, se hace una consulta a la tabla texto y se obtienen unos valores. Con el ataque de manipulación de paquetes, si se detecta un ‘Select’ o cualquier sentencia concreta ‘Select * from texto’, por ejemplo, se podría manipular la sentencia que le llega realmente a la base de datos para ejecutar. El potencial, como se puede ver es infinito.
Ahora, preparamos el módulo arp_spoof. La configuración es sencilla, hay que indicarle el atributo ‘target’ y el atributo ‘gateway’. La interfaz de red por la que se realizará el ataque y si se quiere activar el reenvío de paquetes o no. Por otro lado, el atributo ‘verbose’ nos dará información sobre el envío de los paquetes ARP que se está haciendo como se ve en la Figura 5.
Una vez configurado y ejecutado se obtiene un ‘job’ en la aplicación. Ese trabajo es un hilo que está ejecutando la tarea del ARP Spoofing y nos permite poder configurar otros módulos por encima y trabajar de forma conjunta, como se hará a continuación. Si queremos eliminar un ‘job’ se puede hacer con la instrucción: jobs -k [ID del job]. Si queremos eliminar todos los ‘jobs’ se puede hacer con la instrucción: jobs -K (con mayúscula).
A continuación, si la técnica funciona correctamente se puede ver en la Figura 7 cómo la caché ARP, tanto de la máquina Windows como la de Linux quedan envenenadas.
Ya tenemos la primera parte hecha. El tráfico pasa por la máquina del pentester y ahora es cuando trabajaremos por encima con el módulo de manipulación. Recordemos que es un requisito que tenía el módulo de manipulación.
Manipulación MySQL
Ahora vamos a trabajar con el módulo mysql_manipulation. El módulo dispone de dos atributos, por lo que es muy sencillo de utilizar:
- Query_modify: Este atributo indica la sentencia o palabra que se debe identificar para modificar la consulta. Es decir, si se configura con un ‘select’ por cualquier sentencia que pase por nosotros si ésta lleva un ‘select’ se bloquea y se modifica por la que nosotros queramos.
- Query_spoof: Es la sentencia que queremos que se ejecute.
Nos podemos preguntar cómo sabemos los campos de una tabla. Gracias a que todo el tráfico pasa por nosotros, podemos utilizar el módulo sniff de on-the-fly para volcar todo el tráfico a un fichero y poder evaluar las peticiones y respuestas que ha tenido la máquina con la base de datos. De esta forma sencilla podríamos conocer el valor de diferentes tablas.
En la imagen anterior se puede ver que hay tres usuarios en la tabla. Cuando ejecutemos el módulo y luego haya un ‘select’ que pasa por nosotros se cambiará dicha consulta por un ‘insert’ sobre la tabla users.
En la imagen anterior se puede ver cómo se ha insertado un nuevo usuario en la tabla de users. Esto podría provocar que el pentester obtuviera acceso a la aplicación y poder avanzar su camino (entre otras muchas cosas). Puedes ver el ejemplo en este vídeo.
Para ver las posibilidades de este módulo os dejamos un video que hemos creado y que se encuentra también disponible en el Github de la herramienta. Seguiremos contando más casos de uso de la herramienta y posibilidades de ésta, ya que el potencial que tiene es muy alto.
Figura 9: Contactar con Pablo González |