Escribiendo un auxiliar para Metasploit Framework MSF

No Comments

La idea de comenzar a aprender ruby llego solo por el echo de poder ver en la consola del msf un auxiliar escrito por mi, la API de metasploit no es un muy complicada de llevar y con solo unos días de practica, y es mas, ya estando familiarizados con otros lenguajes similares como lo son python y perl la forma de tomar el control de ruby se hace mas llevadera que comenzar desde cero, por supuesto no estoy diciendo que sean realmente idénticos pero ambos lenguajes poseen ciertas características como la sencillez de su sintaxis, entre otras.

Durante este tutorial se mostrara paso a paso como adherir nuestra herramienta escrita en ruby como modulo auxiliar de msf. Para ello programe un sencillo scanner de LFI.

Lo primero que haremos sera importar el modulo msf/core y crer una clase en la cual heredaremos los métodos de Msf::Auxiliary.

require 'msf/core'
class Metasploit4 < Msf::Auxiliary
end

Luego crearemos el metodo initialize que contendra dos funciones: super() y register_options().

require 'msf/core'
class Metasploit4 < Msf::Auxiliary
    def initialize
        super()
        register_options()
end
end

super() contendra la informacion de nuestro auxiliar, tales como la version, el nombre del autor, la descripcion del modulo, etc.

require 'msf/core'
class Metasploit4 < Msf::Auxiliary
 
    def initialize
 
        super(
        'Name' => 'LFI scanner',
        'Version' => '1.0',
        'Description' => 'Scanner para realizar inyecciones LFI',
        'Author' => '[Q]3rV[0]',
        'License'=> MSF_LICENSE
         ) 
 
        register_options()
end

Por otro lado register_options() contendra las opciones del auxiliar, y es donde definiremos los argumentos para luego setearlos desde msf.

 La funcion tomara dos argumentos

register_options([],self.class)

Dentro del array definiremos las opciones teniendo tipos como:

OptInt.new() # Para valores enteros
OptString.new() # Para cadenas
OptAddress.new() # Para direcciones

En nuestro caso quedaría de la siguiente manera
require 'msf/core'
 
class Metasploit4 < Msf::Auxiliary
 
    def initialize
 
        super(
        'Name' => 'LFI scanner',
        'Version' => '1.0',
        'Description' => 'Scanner para realizar inyecciones LFI',
        'Author' => '[Q]3rV[0]',
        'License'=> MSF_LICENSE
         ) 
 
        register_options([OptString.new('RHOST',[true, 'Indique el target']),
                          OptInt.new('TRAVERSAL',[true, 'Path traversal'])], self.class)
 
end
end

Fijense la sintaxis de Optxxx

OptString.new('RHOST',[true, 'Indique el target'])

Recibe dos argumentos, el primero indica el nombre del parametro, el segundo es un array que contiene como primer indice un valor boleano que indica si es prescindible definir esa variable, y el segundo indice contiene la descripcion de la opción.

Bien, ahora pasemos a la parte donde hubicaremos el codigo del scanner.

Definiremos otro metodo llamado run() donde incluiremos el codigo.




Pero todavia falta el pasaje de los argumentos y eso lo haremos con datastore['PARAMETRO'], donde PARAMETRO seran los antes definidos con Optxxx.new()

Quedando finalizado nuestro modulo auxiliar para Msf.




Para terminar agregaremos el auxiliar a msf, crearemos un direcotorio en /opt/metasploit/apps/pro/msf3/modules/auxiliary y copiaremos nuestro script dentro.

Luego accederemos a el.


Nota: El post fue escrito originalmente por [Q]3rV[0] en Underc0de.


Regards,
Snifer

0 comentarios

Publicar un comentario en la entrada