Desarrolla un Escáner de Metasploit en Nmap

NmapBeginner
Practicar Ahora

Introducción

En este laboratorio, revisaremos la estructura de módulos y el análisis funcional de Metasploit, y luego nos centraremos en la introducción de los escáneres. Aprenderás cómo desarrollar tu propio escáner de Metasploit.

Este laboratorio es un tutorial práctico. Para ayudarte a entender algunas operaciones, incluiremos alguna teoría de seguridad informática y te recomendaremos artículos valiosos para que leas, lo que te permitirá solidificar tus conocimientos teóricos mientras practicas.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 97%. Ha recibido una tasa de reseñas positivas del 95% por parte de los estudiantes.

Revisar la estructura de Metasploit y crear el archivo simple_tcp.rb

Primero, revisemos la estructura de Metasploit.

Metasploit está diseñado con un concepto modular para mejorar la eficiencia de reutilización de código. El marco (framework) está desarrollado en Ruby e incluye componentes escritos en Perl, C, Assembly y Python. Está diseñado principalmente para sistemas operativos Linux, por lo que su estructura de comandos es muy similar a la de una shell de comandos Linux. Sin embargo, ahora es compatible con todos los principales sistemas operativos, como Windows, Solaris y Mac.

+---------------+------------------+----------------------------------------------+
| Nombre en inglés | Nombre del módulo | Descripción                                  |
+---------------+------------------+----------------------------------------------+
| `Aux`         | Módulo Auxiliar  | Proporciona una gran cantidad de módulos auxiliares para |
|               |                  | la recopilación de información durante la penetración, |
|               |                  | incluyendo el escaneo y la huella digital (fingerprinting) |
|               |                  | de varios servicios de red, la creación de servicios falsos |
|               |                  | para recopilar credenciales de inicio de sesión, |
|               |                  | la adivinación de contraseñas, etc.          |
+---------------+------------------+----------------------------------------------+
| `Exploits`    | Módulo de Explotación | Componentes de código que explotan las |
|               |                  | vulnerabilidades de seguridad descubiertas o |
|               |                  | debilidades de configuración para atacar sistemas |
|               |                  | remotos objetivos, implantar y ejecutar cargas útiles (payloads), |
|               |                  | y obtener control de acceso sobre los sistemas objetivos. |
+---------------+------------------+----------------------------------------------+
| `Post`        | Módulo de Post-Explotación | Admite varias acciones de post-explotación |
|               |                  | en el sistema controlado después de obtener |
|               |                  | control de acceso remoto a través de la explotación, |
|               |                  | como obtener información sensible, realizar |
|               |                  | pivoteo adicional y lanzar ataques de pivote. |
+---------------+------------------+----------------------------------------------+
| `Payloads`    | Módulo de Carga Útil | Las cargas útiles son segmentos de código |
|               |                  | que se ejecutan en el sistema objetivo después |
|               |                  | de una explotación exitosa, generalmente para |
|               |                  | abrir una conexión de sesión de control para |
|               |                  | el atacante.                                 |
+---------------+------------------+----------------------------------------------+
| `Encoders`    | Módulo de Codificación | Después de ensamblar la carga útil y las |
|               |                  | instrucciones NOP en una secuencia de instrucciones, |
|               |                  | Metasploit necesita realizar un paso importante |
|               |                  | de codificación antes de que el módulo de explotación |
|               |                  | inyecte el búfer de datos malicioso en el |
|               |                  | sistema objetivo para su ejecución.         |
+---------------+------------------+----------------------------------------------+
| `Nops`        | Módulo NOP       | Las instrucciones NOP (No Operation) son |
|               |                  | operaciones o instrucciones que no tienen |
|               |                  | un efecto sustancial en el estado de ejecución |
|               |                  | del programa.                               |
+---------------+------------------+----------------------------------------------+

Metasploit también integra varios componentes de escaneo de vulnerabilidades, como:

  • Escáner Nmap: Adecuado para Windows, Linux y Mac OS. Se utiliza para la detección de hosts, el escaneo o enumeración de puertos, la detección de servicios y la detección de sistemas operativos, direcciones de hardware, versiones de software y vulnerabilidades.

  • Escáner NeXpose: Escanea la red para encontrar dispositivos en funcionamiento, identificar sus sistemas operativos y vulnerabilidades de aplicaciones, analizar los datos escaneados y generar informes de escaneo de vulnerabilidades.

  • Escáner Nessus: Una de las herramientas de escaneo de vulnerabilidades más utilizadas. Adopta un modelo cliente/servidor, donde el servidor realiza las comprobaciones de seguridad y el cliente configura y gestiona el servidor. El servidor también utiliza un sistema de complementos (plugins), lo que permite a los usuarios agregar complementos para funciones específicas y comprobaciones de seguridad más complejas.

Ahora, crearemos un nuevo módulo de escáner de Metasploit llamado simple_tcp.rb.

  1. Abra una terminal xfce en la máquina host de LabEx y inicie la máquina objetivo Metasploitable2 ejecutando el siguiente comando:
sudo virsh start Metasploitable2

Espere a que la máquina objetivo se inicie, puede tardar de 1 a 3 minutos.

  1. Pruebe la conectividad a la máquina objetivo realizando un ping:
ping 192.168.122.102

Presione Ctrl+C para detener el ping.

  1. Inicie el contenedor de Kali Linux y entre en el entorno bash ejecutando:
docker run -ti --network host b5b709a49cd5 bash
  1. Dentro del contenedor de Kali, pruebe la conexión de red a la máquina objetivo:
ping 192.168.122.102

Presione Ctrl+C para detener el ping.

  1. Luego, navegue al directorio del módulo scanner:
cd /usr/share/metasploit-framework/modules/auxiliary/scanner
  1. Cree un nuevo archivo llamado simple_tcp.rb:
sudo vi simple_tcp.rb
  1. Copie y pegue el siguiente código en el archivo:
require 'msf/core'
class MetasploitModule < Msf::Auxiliary
    include Msf::Exploit::Remote::Tcp
    include Msf::Auxiliary::Scanner

    def initialize
        super(
            'Name'        => 'Mr_Zhou Scanner',
            'Version'     => '$Revision$',
            'Description' => 'Shiyanlou TCP Scanner',
            'Author'      => 'lucat',
            'License'     => MSF_LICENSE
        )
        register_options(
            [
                Opt::RPORT(12345)
            ], self.class)
    end

    def run_host(ip)
        connect()
        sock.puts('HELLO SERVER')
        data = sock.recv(1024)
        print_status("Received: #{data} from #{ip}")
        disconnect()
    end
end
  1. Este código define un nuevo módulo de Metasploit llamado "Mr_Zhou Scanner" que escanea puertos TCP y muestra cualquier dato recibido del servidor. Analicemos el código:
def initialize
    super(
        'Name'        => 'Mr_Zhou Scanner',
        'Version'     => '$Revision$',
        'Description' => 'Shiyanlou TCP Scanner',
        'Author'      => 'lucat',
        'License'     => MSF_LICENSE
    )

Esta sección establece los metadatos del módulo, como su nombre, descripción, autor y licencia.

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

Esta línea registra la opción de escanear el puerto 12345.

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

Este método se ejecuta para cada dirección IP objetivo. Se conecta al puerto especificado, envía la cadena "HELLO SERVER", recibe e imprime cualquier dato del servidor y luego se desconecta.

Guarde el archivo y salga del editor.

Configurar un servidor de escucha

Para probar nuestro escáner simple_tcp.rb, necesitamos configurar un servidor de escucha en la máquina objetivo.

En el host de LabEx, abra una nueva terminal Xfce y cree un archivo llamado shiyanlou.txt:

vi shiyanlou.txt

En este archivo, ingrese cualquier texto que desee. Este texto se enviará de vuelta al escáner cuando se conecte al puerto de escucha. Por ejemplo:

Life is short, i use Python.

Guarde el archivo y salga del editor.

A continuación, inicie un servidor de escucha en el puerto 12345 (el puerto para el que está configurado nuestro escáner) y envíe el contenido de shiyanlou.txt a cualquier cliente que se conecte:

sudo nc -l 12345 < shiyanlou.txt

El servidor ahora estará escuchando en el puerto 12345 y esperando conexiones entrantes.

Ejecutar el escáner simple_tcp

Ahora que tenemos nuestro módulo de escáner simple_tcp y un servidor de escucha configurados, ejecutemos el escáner y veamos si funciona.

Primero, inicie la consola de Metasploit en el contenedor de Kali Linux:

cd ~
sudo msfconsole

Una vez que se cargue la consola, utilice nuestro módulo simple_tcp:

use auxiliary/scanner/simple_tcp

Puede ver la información del módulo con el comando info:

info

A continuación, se muestra un ejemplo de la salida que podría ver:

Name:          Mr_Zhou Scanner
Description:   Shiyanlou TCP Scanner
Author:        lucat
License:       Metasploit Framework License (BSD)
Version:       $Revision$

A continuación, establezca la dirección IP del host objetivo:

set RHOSTS 192.168.122.1

Nota: Utilice RHOSTS (con una 's'), no RHOST. Puede verificar qué opción utilizar con el comando show options.

Finalmente, ejecute el escáner:

run

Si todo está configurado correctamente, debería ver el mensaje del servidor de escucha:

[+] Received: Life is short, i use Python. from 192.168.122.1

Si no recibió ese mensaje, regrese a su servidor de escucha y ejecute sudo nc -l 12345 < shiyanlou.txt nuevamente.

¡Felicidades! Ha desarrollado y probado con éxito su propio módulo de escáner de Metasploit.

Presione Ctrl+D para salir de la consola de Metasploit y luego inicie la inspección

Resumen

En este laboratorio, aprendiste cómo desarrollar tu propio módulo de escáner de Metasploit. Revisaste la estructura de módulos de Metasploit, creaste un nuevo módulo de escáner TCP llamado simple_tcp.rb, configuraste un servidor de escucha para probar el escáner y ejecutaste con éxito el escáner para recibir y mostrar datos del servidor.

Esta experiencia práctica en el desarrollo de un escáner de Metasploit te ayudará a comprender mejor las capacidades del marco (framework) y cómo extenderlo con módulos personalizados. Puedes utilizar este conocimiento para crear escáneres más avanzados u otros tipos de módulos para diversas tareas de pruebas de penetración.