Der Befehl netcat (kurz nc) liest und schreibt Daten über TCP- und UDP-Verbindungen. Das macht ihn zum Schweizer Taschenmesser der Netzwerk-Diagnose: Port-Scans, Dateiübertragungen, Verbindungstests und schnelle Debugging-Sessions erledigst du damit in Sekunden.
Auf den meisten Systemen ist netcat bereits vorinstalliert. Ubuntu und Debian liefern die OpenBSD-Variante aus, bei der sowohl nc als auch netcat funktionieren.
Syntax
nc [OPTIONEN] HOST PORT
HOST– Die Zieladresse (IP oder Hostname).PORT– Der Zielport oder ein Portbereich (z.B.20-80).
Standardmäßig baut nc eine TCP-Verbindung auf. Für UDP verwendest du die Option -u:
nc -u HOST PORT
Wichtige Optionen
| Option | Beschreibung |
|---|---|
-l | Listen-Modus: Wartet auf eingehende Verbindungen |
-p PORT | Lokalen Quellport festlegen |
-u | UDP statt TCP verwenden |
-v | Ausführliche Ausgabe (verbose) |
-z | Nur scannen, keine Daten senden (zero I/O) |
-w SEKUNDEN | Timeout für Verbindungen setzen |
-n | Keine DNS-Auflösung durchführen |
Ports scannen
Mit nc prüfst du schnell, welche Ports auf einem Host offen sind. Die Option -z scannt ohne Datenübertragung, -v liefert detaillierte Ausgaben:
nc -z -v 192.168.1.10 20-80
Die Ausgabe zeigt erfolgreiche und fehlgeschlagene Verbindungen:
nc: connect to 192.168.1.10 port 20 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 21 (tcp) failed: Connection refused
Connection to 192.168.1.10 22 port [tcp/ssh] succeeded!
nc: connect to 192.168.1.10 port 23 (tcp) failed: Connection refused
...
Connection to 192.168.1.10 80 port [tcp/http] succeeded!
Nur offene Ports anzeigen:
nc -z -v 192.168.1.10 20-80 2>&1 | grep succeeded
Für UDP-Ports fügst du -u hinzu:
nc -z -v -u 192.168.1.10 53
Banner-Grabbing
Du kannst auch die Software-Version eines Dienstes abfragen. SSH-Server geben beim Verbinden ihren Banner aus:
echo "EXIT" | nc 192.168.1.10 22
SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
Protocol mismatch.
Hinweis: Für umfangreiche Port-Scans ist nmap besser geeignet. nc reicht für schnelle Checks, aber nmap bietet Service-Erkennung, Versionserkennung und mehr.
Dateien übertragen
netcat überträgt Dateien direkt zwischen zwei Rechnern – ohne FTP, SCP oder andere Tools. Ein Rechner lauscht, der andere sendet.
Auf dem Empfänger (wartet auf Port 5555):
nc -l 5555 > empfangene_datei.tar.gz
Auf dem Sender (verbindet sich und sendet):
nc empfaenger.example.com 5555 < datei.tar.gz
Die Verbindung schließt automatisch nach der Übertragung. Bei manchen nc-Versionen musst du mit Strg+C beenden.
Verzeichnisse übertragen
Kombiniere nc mit tar, um ganze Verzeichnisse zu übertragen:
Auf dem Empfänger:
nc -l 5555 | tar xzvf -
Auf dem Sender:
tar czvf - /pfad/zum/verzeichnis | nc empfaenger.example.com 5555
Sicherheitshinweis: Diese Übertragung ist unverschlüsselt. Jeder im Netzwerkpfad kann die Daten mitlesen. Für sensible Daten nutze scp, rsync über SSH oder einen VPN-Tunnel.
Verbindungen testen
Mit nc testest du, ob ein Dienst erreichbar ist. Das ist nützlicher als ping, weil du den tatsächlichen Port prüfst:
nc -zv webserver.example.com 443
Connection to webserver.example.com 443 port [tcp/https] succeeded!
Mit Timeout für automatisierte Skripte:
nc -zv -w 3 webserver.example.com 443 || echo "Port nicht erreichbar"
Einfacher Chat
Für schnelle Tests oder zum Verständnis des Client-Server-Prinzips kannst du mit nc einen simplen Chat aufbauen:
Host A (lauscht):
nc -l 5555
Host B (verbindet):
nc hostA.example.com 5555
Jede Eingabe erscheint auf der Gegenseite. Beende mit Strg+C.
HTTP-Anfragen manuell senden
nc eignet sich zum Debuggen von HTTP-Verbindungen. Du siehst die rohe Kommunikation ohne Interpretation durch einen Browser oder curl:
printf "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" | nc example.com 80
Die Ausgabe zeigt HTTP-Header und Response-Body im Rohformat.
Sicherheitshinweise
netcat ist ein mächtiges Werkzeug – und damit auch ein potenzielles Sicherheitsrisiko:
- Offene Listener: Ein
nc -lauf einem Server öffnet einen Port für jeden im Netzwerk. Nutze Firewalls, um den Zugriff einzuschränken. - Keine Verschlüsselung: Alle Daten fließen im Klartext. Für sensible Übertragungen nutze verschlüsselte Alternativen.
- Pentesting-Einsatz:
ncwird oft für Reverse Shells und andere Angriffstechniken verwendet. Auf Produktionssystemen sollte der Einsatz dokumentiert und überwacht werden. - Firewall-Umgehung:
nckann Daten über beliebige Ports tunneln. Das macht es für Angreifer attraktiv, aber auch für legitime Diagnosen nützlich.
Zusammenfassung
netcat ist ein unverzichtbares Diagnose-Tool für Netzwerkprobleme. Die wichtigsten Anwendungsfälle:
- Port-Scan:
nc -zv HOST PORT - Datei empfangen:
nc -l PORT > datei - Datei senden:
nc HOST PORT < datei - Verbindungstest:
nc -zv -w 3 HOST PORT
Für die vollständige Optionsliste:
man nc