Cómo implementar scripts en Metasploit (PoC)
1. Introducción y objetivos
En este artículo vamos a mostrar cómo podemos implementar scripts escritos en Ruby en el Framework Metasploit, para posteriormente poder hacer uso de ellos en nuestras auditorías de ciberseguridad. Huelga decir que cuando hablamos de scripts nos referimos a distintas herramientas, ya sean exploits, módulos auxiliares, o cualquier otro tipo.
Para ello necesitaremos tener al menos unos conocimientos básicos de Ruby y de la arquitectura de Metasploit.
2. Metasploit y Ruby
Ruby es un lenguaje de programación dinámico, orientado a objetos y de código abierto enfocado en la simplicidad y productividad.
La importancia de este lenguaje en Metasploit es obvia, ya que como podemos observar en la siguiente imagen, todo el core de Metasploit framework está puramente desarrollado en Ruby. Esto podemos observarlo en el directorio de instalación, donde podremos encontrar todas las herramientas de las que consta el framework.
Antes de comenzar a explicar el objetivo de este artículo, vamos a tratar superficialmente algunos conceptos de programación en este lenguaje.
Si tratamos el concepto de “Instancias” en Ruby, podemos decir que éstas tienen la función principal de utilizar clases creadas con anterioridad. Así pues, si tras la creación de una clase queremos llamarla deberemos realizar dicha llamada a través de una instancia como sigue:
- llamada = clasecreada.new
Esto se leería como que “llamada” es un “nuevo objeto” de la clase “clasecreada”. Así pues se dice que “llamada” es una instancia de la clase “clasecreada”, además de ser ahora un objeto, y por supuesto también una variable que almacena un objeto de la clase “clasecreada”; Y en este contexto “new” sirve para indicar que la clase “clasecreada” crea un nuevo objeto, y para ello lo debe almacenar en algún lugar. Entonces “llamada” es una variable que almacena esa “nueva clasecreada”, y es por ello que esta acción hace definir a “llamada” como un objeto.
Además, decir que al crear un nuevo objeto de “clasecreada” llamado “llamada”, Interactive Ruby (IRB) asigna un identificador “id” propio para que las “nuevas clasecreada” no se reemplacen entre sí, si éstas son “instanciadas”.
Si hablamos de una variable de instancia, diremos que ésta tiene un nombre que comienza con ‘@’ y su uso está limitado al objeto al que hace referencia “self”. Así pues, como aclaración decir que dos objetos diferentes pertenecientes a la misma clase, pueden tener valores diferentes en sus variables de instancia. Desde el exterior del objeto, las variables de instancia no pueden ser alteradas ni observadas, ya que en Ruby las variables de instancia no son públicas.
Habiendo aclarado los conceptos anteriores ya podemos pasar al siguiente punto en el que procederemos a la creación de un script en Ruby para su posterior implementación en el framework de Metasploit.
3. Creación de script e implementación en Metasploit
a) Creación de un script en ruby
Primeramente vamos a crear un pequeño script en “ruby” que al ser lanzado nos devuelva una shell de comandos inversa de la máquina víctima. Este lo podemos ver a continuación.
b) Ejecución del script de manera manual
Aquí podemos observar cómo dejando en nuestra máquina atacante con IP 192.168.238.130 el puerto 6000 a la escucha y al ser ejecutado el script en la máquina víctima (que en este caso es la misma) nos devuelve su shell de comandos sin problema alguno.
Como la PoC la estamos haciendo bajo la misma máquina es evidente que las direcciones IP tanto de atacante como de víctima son la misma.
c) Implementando el script en Metasploit
Pues bien, habiendo programado el script anterior con éxito ahora vamos a realizar las modificaciones oportunas para poderlo implementar en Metasploit.
Para poder realizar una ejecución directa del código definido en la función “run” vamos a implementarlo como un “Auxiliary” haciendo uso de módulos tipo “Exploit”, ya que si lo implementáramos de otra manera a la hora de configurar el ataque Metasploit nos solicitaría para su lanzamiento la asignación de otras variables tipo payload, entre otras cosas, que nos complicarían en cierta medida la ejecución.
Como podemos observar en la siguiente imagen donde se presenta el script migrado a Metasploit, hemos incluido módulos tipo “Exploit” para poder hacer uso de funciones definidas como “connect”, entre otras.
Posteriormente siguiendo la estructura estándar de un script de Metasploit, definimos la información del script, así como las variables registradas (RPORT) y las no registradas (RHOST). Finalmente definimos la función “run” que será donde colocaremos nuestro código fuente, para recibir la Shell inversa de la máquina víctima.
Aquí podemos ver cómo hemos terminado el script al que llamamos “script.rb” y procedemos a introducirlo en ‘/usr/share/metasploit-framework/modules/auxiliary’.
d) Arrancando Metasploit
Llegados a este punto arrancamos “Metasploit” y podemos observar cómo no nos da ningún fallo, esto quiere decir que hemos realizado el script correctamente y que ya está cargado adecuadamente para ser usado y ejecutado por Metasploit.
e) Configuración y lanzamiento del script
Sin perder más tiempo vamos a “usarlo” y llamamos al comandos “info” para ver la descripción y la configuración del script.
Una vez estudiado el script pasamos a configurarlo para su posterior lanzamiento. Para ello introducimos en RHOST la IP de la máquina atacante que estará a la escucha en el puerto 6000 esperando la conexión de la máquina víctima para que ésta se conecte a ella cediéndole su shell de comandos.
Una vez configurado y lanzado el script podemos observar cómo efectivamente hemos recibido satisfactoriamente la shell de comandos de la máquina víctima.
4. Conclusiones
En este artículo hemos visto superficialmente cómo implementar un script escrito en Ruby en el framework de Metasploit, para posteriormente poder ejecutarlo mediante la plataforma.
De esta manera podemos llevar a cabo la implementación de exploits u otras herramientas en Metasploit, para poderlas usar en nuestras auditorías y poder hacer uso del poder y versatilidad que nos brinda este framework, para llevar a cabo distintos ejercicios de operaciones ofensivas.
De estar interesado en adquirir conocimientos introductorios a Metasploit puede optar por matricularse en nuestro curso básico de hacking ético, o por el contrario, si prefiere adquirir conocimientos más avanzados en ciberseguridad ofensiva puede adquirir nuestro curso avanzado.