Esta pagina se ve mejor con JavaScript habilitado

Metasploit module

 ·  🎃 kr0m

Metasploit es un framework de pentesting, engloba desde la fase de reconocimiento de objetivos/servicios al desarrollo de exploits completos. En este artículo explicaré como programar un módulo básico, este se conectará a un puerto, leerá un string y escribirá otro en ese mismo socket.

Creamos la estructura de directorios necesarios:

mkdir -p $HOME/.msf4/modules/auxiliary/scanner

NOTA: Los módulos que no tienen payload(scanners), son auxiliares

Esribimos un escaneador de puertos básicos que enviará un string y leerá otro al realizar la conexión:

vi $HOME/.msf4/modules/auxiliary/scanner/simple_tcp.rb

require 'msf/core'

class MetasploitModule < Msf::Auxiliary

      include Msf::Exploit::Remote::Tcp
      include Msf::Auxiliary::Scanner

      def initialize(info = {})
                super(update_info(info,
                        'Name'           => 'TCP Scanner',
                        'Description'    => %q{
                                        Simple TCP Scanner coded by kr0m
                                             },
                        'Author'         => [ 'Kr0m' ],
                        'Version'        => '$Revision: 0.1 $',
                        ))

                        register_options(
                        [
                                Opt::RPORT(12345)
                        ], self.class)
       end

        def run_host(ip)
                connect()
                greeting = "HELLO SERVER"
                sock.puts(greeting)
                data = sock.recv(1024)
                print_status("Received: #{data} from #{ip}")
                disconnect()
        end
end

Metemos la string en un fichero y ponemos a la escucha un netcat con dicho fichero:

echo “123” > response.txt
nc -lnvp 12345 < response.txt

Lanzamos nuestro escaner desde metasploit:

msfconsole

msf > search simple_tcp

Matching Modules
================

   Name                          Disclosure Date  Rank    Description
   ----                          ---------------  ----    -----------
   auxiliary/dos/tcp/synflood                     normal  TCP SYN Flooder
   auxiliary/scanner/simple_tcp                   normal  TCP Scanner

msf > use auxiliary/scanner/simple_tcp
msf auxiliary(simple_tcp) > set RHOSTS 192.168.20.27
RHOSTS => 192.168.20.27
msf auxiliary(simple_tcp) > run
[*] 192.168.20.27:12345   - Received: 123
 from 192.168.20.27
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Podemos ver que se ha recibido 123 en metasploit y netcat ha recibido HELLO SERVER:

nc -lnvp 12345 < response.txt

listening on [any] 12345 ...
connect to [192.168.20.27] from (UNKNOWN) [192.168.20.27] 34155
HELLO SERVER

Se trata de un ejemplo muy básico pero a modo de introducción es muy útil tener un módulo base desde el que partir para módulos mas complejos.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí