Einführung
In diesem Lab lernen Sie die Grundlagen der Netzwerkkommunikation mit Netcat kennen, einem vielseitigen Netzwerk-Tool, das oft als das „Schweizer Taschenmesser“ der Netzwerktechnik bezeichnet wird. Sie werden entdecken, wie dieses leistungsstarke Dienstprogramm das Lesen und Schreiben von Daten über Netzwerkverbindungen mithilfe von TCP- oder UDP-Protokollen ermöglicht.
Durch praktische Übungen erkunden Sie die Grundlagen der Client-Server-Kommunikation, erstellen ein einfaches Chat-System und verstehen wesentliche Netzwerkkonzepte wie Ports. Das Lab führt zudem grundlegende Verschlüsselungstechniken für eine sichere Datenübertragung ein.
Netcat installieren
Bevor wir mit unserer Geheimagenten-Kommunikation beginnen können, müssen wir uns mit dem richtigen Werkzeug ausrüsten. Netcat wird oft als das „Schweizer Taschenmesser“ der Netzwerk-Tools bezeichnet, da es eine Vielzahl unterschiedlicher Netzwerkaufgaben bewältigen kann. Lassen Sie uns Netcat Schritt für Schritt auf unserem System installieren.
- Öffnen Sie zunächst das Terminal. Suchen und öffnen Sie auf Ihrem Desktop das Xfce Terminal. Im Terminal geben wir alle unsere Befehle ein, um mit Netcat zu arbeiten.

Hinweis: Kostenlose Nutzer können keine Verbindung zum Internet herstellen, daher ist Netcat in der Lab-Umgebung bereits vorinstalliert. Sie können direkt zu Punkt 4 der Liste springen (überprüfen, ob Netcat installiert ist). Werden Sie Pro-Nutzer, um die Installation von Netcat selbst zu üben.
Nur für Pro-Nutzer
- Sobald das Terminal geöffnet ist, müssen wir die Paketlisten aktualisieren. Dies stellt sicher, dass wir die neueste Version von Netcat erhalten. Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:
sudo apt update
Das System fragt möglicherweise nach Ihrem Passwort. Geben Sie es ein (die Zeichen werden während der Eingabe nicht angezeigt) und drücken Sie die Eingabetaste. Der Teil sudo bedeutet, dass wir diesen Befehl mit Administratorrechten ausführen.
- Jetzt, da unsere Paketlisten auf dem neuesten Stand sind, installieren wir Netcat. Der Paketmanager kümmert sich automatisch um alle Abhängigkeiten. Geben Sie den folgenden Befehl ein:
sudo apt install netcat -y
Das Flag -y beantwortet automatisch alle Abfragen mit „Ja“, was die Installation reibungsloser macht. Dies ist hilfreich, wenn Sie sicher sind, dass Sie das Paket installieren möchten.
nc -h
Sie sollten eine Ausgabe sehen, die mit „OpenBSD netcat“ beginnt, gefolgt von einer Liste von Optionen. Dies bedeutet, dass Netcat installiert und einsatzbereit ist. Das Flag -h zeigt die Hilfeinformationen an, was eine gute Möglichkeit ist, um zu testen, ob ein Programm funktioniert.
- Herzlichen Glückwunsch! Sie haben gerade ein leistungsstarkes Netzwerk-Tool installiert. Netcat verfügt über viele Funktionen, von der einfachen Dateiübertragung bis hin zum Erstellen von Netzwerkverbindungen. In diesem Lab konzentrieren wir uns auf die grundlegende Verwendung, um Ihnen zu helfen, die Möglichkeiten zu verstehen. Betrachten Sie Netcat als eine einfache Möglichkeit, Computer zu verbinden und Informationen zwischen ihnen auszutauschen.
Ports verstehen und einen Listener erstellen
Nachdem unser Kommunikationstool bereit ist, lernen wir etwas über Ports und richten einen Listener ein. In der Netzwerktechnik sind Ports wie verschiedene Kanäle bei einem Funkgerät – sie ermöglichen es, dass mehrere Kommunikationen gleichzeitig auf demselben Gerät stattfinden können. Stellen Sie sie sich als nummerierte Türen vor, wobei jede Tür zu einem anderen Dienst oder einer anderen Anwendung auf Ihrem Computer führt.
Erstellen wir einen Listener. Wir verwenden Port 12345 für unsere Kommunikation. Portnummern reichen von 0 bis 65535, und wir wählen 12345, da sie leicht zu merken ist und normalerweise nicht von Systemdiensten verwendet wird. Geben Sie im Terminal ein:
nc -l 12345Dieser Befehl weist Netcat an, auf Port 12345 zu lauschen (
-lFlag). Das-lsteht für den „Listen“-Modus, was bedeutet, dass Ihr Computer auf eingehende Verbindungen an diesem Port wartet.Das Terminal scheint nun zu hängen. Keine Sorge! Das ist das erwartete Verhalten, da Netcat jetzt aktiv lauscht und darauf wartet, dass sich jemand mit Port 12345 verbindet. Der blinkende Cursor bedeutet, dass das Programm ordnungsgemäß im Listen-Modus läuft.
Um unseren Listener zu testen, müssen wir ein weiteres Terminalfenster öffnen. Sie können dies tun, indem Sie mit der rechten Maustaste auf das Terminal-Symbol klicken und „New Terminal“ auswählen oder die Tastenkombination Strg+Umschalt+N verwenden. Dieses zweite Terminal fungiert als unser „Client“, der sich mit dem Listener verbindet.
In diesem neuen Terminal verbinden wir uns mit unserem Listener. Geben Sie ein:
nc localhost 12345Dieser Befehl weist Netcat an, sich mit
localhost(was Ihren eigenen Computer bedeutet) auf Port 12345 zu verbinden.localhostist ein spezieller Hostname, der sich immer auf Ihre aktuelle Maschine bezieht.Geben Sie nun eine einfache Nachricht wie „Hello“ in diesem zweiten Terminal ein und drücken Sie die Eingabetaste. Sie sollten die Nachricht im ersten Terminal sehen, in dem der Listener läuft. Dies zeigt, wie Daten vom verbindenden Terminal durch den Netzwerkport zum lauschenden Terminal gelangen.

Sie können in beiden Terminals weiter Nachrichten eingeben, und sie werden im jeweils anderen erscheinen. Dies zeigt die Vollduplex-Fähigkeit von Netcat – das bedeutet, dass die Kommunikation gleichzeitig in beide Richtungen fließen kann. Versuchen Sie, ein paar Nachrichten hin und her zu senden, um zu sehen, wie es funktioniert.
Um die Verbindung zu beenden, drücken Sie Strg+C in beiden Terminals. Diese Tastenkombination sendet ein Unterbrechungssignal, das die Netcat-Sitzungen sauber schließt. Es ist wichtig, Verbindungen ordnungsgemäß zu schließen, wenn Sie mit dem Testen fertig sind.
Dateiübertragung mit Netcat
Nachdem wir gelernt haben, wie man eine grundlegende Netzwerkkommunikation mit Netcat aufbaut, erkunden wir eine seiner praktischsten Anwendungen: das Übertragen von Dateien zwischen Systemen. Diese einfache, aber leistungsstarke Funktion macht Netcat zu einem wertvollen Werkzeug für Systemadministratoren und Netzwerkingenieure.
Zuerst erstellen wir eine Beispieldatei für die Übertragung. Geben Sie in Ihrem Terminal ein:
cd ~/project echo "Top Secret: The cake recipe is actually a lie" > secret.txtDieser Befehl bewirkt zwei Dinge: Er wechselt in Ihr Projektverzeichnis und erstellt eine neue Datei namens
secret.txt, die unsere Beispielnachricht enthält. Das Symbol>leitet die Ausgabe desecho-Befehls in eine Datei um.Nun richten wir die Empfängerseite unserer Dateiübertragung ein. Öffnen Sie ein Terminalfenster und führen Sie aus:
cd ~/project nc -l 12345 > received_secret.txtHier startet
nc -l 12345Netcat im Listen-Modus auf Port 12345. Das>leitet alle eingehenden Daten in eine neue Datei namensreceived_secret.txtum. Dieses Terminal wartet nun still auf eingehende Verbindungen.In einem separaten Terminalfenster (während das erste weiterhin läuft) senden wir unsere Datei:
cd ~/project nc localhost 12345 < secret.txtDieser Befehl verwendet Netcat, um sich mit unserem Listener (
localhostbedeutet „derselbe Computer“) auf Port 12345 zu verbinden. Das Symbol<weist Netcat an,secret.txtals Eingabe zu verwenden, wodurch der Inhalt der Datei effektiv über die Netzwerkverbindung gesendet wird.Die Übertragung erfolgt sofort, da sich beide Enden auf derselben Maschine befinden. Um die erfolgreiche Übertragung zu überprüfen, kontrollieren Sie den Inhalt der empfangenen Datei:
cat received_secret.txtDer Befehl
catzeigt den Inhalt der Datei an, der exakt mit unserer ursprünglichen geheimen Nachricht übereinstimmen sollte.

- Herzlichen Glückwunsch! Sie haben erfolgreich eine Datei mit Netcat übertragen. Obwohl wir für diese Demonstration
localhostverwendet haben, funktioniert derselbe Prozess zwischen verschiedenen Computern in einem Netzwerk – ersetzen Sie einfachlocalhostdurch die IP-Adresse des empfangenden Computers. Diese einfache Methode kann unglaublich nützlich für schnelle Dateiübertragungen sein, wenn komplexere Protokolle nicht verfügbar sind.
Verschlüsselte Kommunikation implementieren
Im letzten Schritt fügen wir unserer Kommunikation eine Sicherheitsebene hinzu, indem wir eine Verschlüsselung mit OpenSSL implementieren und diese in Netcat integrieren. Verschlüsselung ist unerlässlich, um sensible Informationen davor zu schützen, während der Netzwerkübertragung von unbefugten Dritten abgefangen und gelesen zu werden.
Wir haben bereits in den vorherigen Labs gelernt, wie man OpenSSL verwendet. OpenSSL bietet robuste kryptografische Funktionen, die wir nutzen werden, um unsere Nachrichten zu sichern. Konkret verwenden wir den Befehl openssl enc, um Nachrichten mit der AES-256-CBC-Chiffre zu ver- und entschlüsseln, einem starken symmetrischen Verschlüsselungsalgorithmus. Wir verwenden außerdem eine Passphrase, um den Verschlüsselungsschlüssel abzuleiten – betrachten Sie dies als ein gemeinsames Geheimnis zwischen Sender und Empfänger.
Erstellen wir zuerst das Sender-Skript. Dieses Skript kümmert sich um das Verschlüsseln und Senden von Nachrichten. Öffnen Sie eine neue Datei namens
secure_sender.sh:nano secure_sender.shFügen Sie den folgenden Inhalt in die Datei ein (Sie können den Inhalt kopieren und einfügen):
#!/bin/bash echo "Secure Sender - Enter messages to send. Press Ctrl+C to exit." while true; do echo "Enter message:" read message encrypted=$(echo "$message" | openssl enc -aes-256-cbc -salt -base64 -pbkdf2 -iter 10000 -pass pass:secretpassword 2> /dev/null) echo "$encrypted" | nc -N localhost 12345 doneDieses Skript funktioniert wie folgt:
- Es fordert Sie in einer Schleife kontinuierlich zur Eingabe von Nachrichten auf.
- Es nimmt Ihre Eingabe entgegen und leitet sie zur Verschlüsselung durch OpenSSL weiter.
- Es verwendet Netcat (
nc), um die verschlüsselten Daten an Port 12345 auf localhost zu senden. - Die Verschlüsselungsparameter umfassen Salt für zusätzliche Sicherheit, Base64-Kodierung für eine sichere Übertragung und PBKDF2-Schlüsselableitung mit 10.000 Iterationen.

Drücken Sie
Strg+X, dannYundEnter, um die Datei zu speichern und zu schließen. Machen Sie das Skript ausführbar:chmod +x secure_sender.shErstellen wir nun das Empfänger-Skript. Dieses Skript lauscht auf eingehende Nachrichten und entschlüsselt sie. Öffnen Sie eine neue Datei namens
secure_receiver.sh:nano secure_receiver.shFügen Sie den folgenden Inhalt hinzu:
#!/bin/bash echo "Secure Receiver - Waiting for messages. Press Ctrl+C to exit." while true; do encrypted=$(nc -l 12345) if [ ! -z "$encrypted" ]; then decrypted=$(echo "$encrypted" | openssl enc -aes-256-cbc -d -salt -base64 -pbkdf2 -iter 10000 -pass pass:secretpassword 2> /dev/null) echo "Received message: $decrypted" fi doneIn der Ubuntu 22.04-Umgebung, die in diesem Lab verwendet wird, lautet die Standard-Syntax für den OpenBSD Netcat-Listener
nc -l 12345. Fügen Sie hier kein-phinzu, wenn Sie-lverwenden.Dieses Skript:
- Lauscht kontinuierlich auf Port 12345 auf eingehende Daten.
- Wenn Daten empfangen werden, leitet es diese zur Entschlüsselung durch OpenSSL weiter.
- Verwendet dieselben Verschlüsselungsparameter wie der Sender, um die Nachricht korrekt zu entschlüsseln.
- Zeigt die ursprüngliche Klartextnachricht an.
Drücken Sie
Strg+X, dannYundEnter, um die Datei zu speichern und zu schließen. Machen Sie das Skript ausführbar:chmod +x secure_receiver.shTesten wir nun unser verschlüsseltes Kommunikationssystem. Sie müssen zwei Terminalfenster gleichzeitig geöffnet haben – eines für den Empfänger und eines für den Sender.
Starten Sie im ersten Terminal den Empfänger:
./secure_receiver.shSie sehen eine Meldung, dass der Empfänger auf Nachrichten wartet. Der Empfänger lauscht nun aktiv auf Port 12345.
Starten Sie im zweiten Terminal den Sender:
./secure_sender.shSie werden aufgefordert, Nachrichten einzugeben. Alles, was Sie hier eingeben, wird verschlüsselt, bevor es über das Netzwerk gesendet wird.
Geben Sie im Sender-Terminal eine Nachricht ein und drücken Sie die Eingabetaste. Sie sollten sehen, wie die verschlüsselte Nachricht gesendet wird (obwohl Sie die verschlüsselte Version nur kurz sehen, während sie übertragen wird).

Im Empfänger-Terminal sollten Sie sehen, wie die entschlüsselte Nachricht exakt so erscheint, wie Sie sie im Sender-Terminal eingegeben haben.
Sie können weiterhin Nachrichten vom Sender-Terminal aus senden; diese werden automatisch verschlüsselt, gesendet, empfangen und im Empfänger-Terminal entschlüsselt. Dies demonstriert eine vollständige sichere Kommunikationsschleife.
Um die Kommunikation zu beenden, drücken Sie Strg+C in beiden Terminals. Dies beendet beide Skripte sicher.
Dieses Setup demonstriert ein einfaches, aber effektives verschlüsseltes Kommunikationssystem. Obwohl wir localhost zum Testen verwenden, funktioniert derselbe Ansatz über Netzwerke hinweg. Die Nachrichten werden vor der Übertragung automatisch verschlüsselt und beim Empfang entschlüsselt, was einen sicheren Kanal für die Kommunikation bietet. Denken Sie daran, dass Sie in realen Anwendungen sicherere Methoden für den Schlüsselaustausch verwenden sollten als ein fest kodiertes Passwort.
Zusammenfassung
In diesem Lab haben Sie die Grundlagen der Netzwerkkommunikation mit Netcat kennengelernt und grundlegende Verschlüsselungstechniken für eine sichere Datenübertragung erkundet. Sie haben das Installieren von Netcat, das Herstellen von Verbindungen über bestimmte Ports und das Übertragen von Dateien zwischen Systemen geübt.
Diese praktische Erfahrung hat die Bedeutung der Verschlüsselung in der Netzwerkkommunikation durch die praktische Implementierung mit OpenSSL verdeutlicht. Diese grundlegenden Fähigkeiten bieten einen soliden Ausgangspunkt für das Verständnis komplexerer Cybersicherheitskonzepte und sicherer Kommunikationsprotokolle.



