nc
Der Shell-Befehl nc (netcat) wird als "TCP/IP swiss army knife" bezeichnet. Es handelt sich dabei um einen Netzwerkdienst zum Lesen von Netzwerkverbindungen und schreiben auf solche, wobei TCP oder UDP verwendet werden.
Optionen
Option | Beschreibung |
---|---|
-l | (listen) Start als Server. |
-p | (port) Port, auf dem nc als Server lauscht. |
-v | (verbose) Ausführliche Ausgabe. |
-z | (zero-I/O mode) Portscanner-Modus. |
Verwendung
Zu den Verwendungszwecken gehören neben den im Folgenden ausgeführten auch das Um- und Weiterleiten von Ports, die Protokollierung des Netzwerkverkehrs oder der Stabilitätstest von Netzdiensten.
Sehr ausführliche nc-Skripte finden sich unter anderem unter "/usr/share/doc/netcat-traditional/examples".
Kopieren einer Datei
Kopieren der Datei "eingabe.txt" vom Rechner "emu" zum Rechner "uhu". Dazu wird auf Rechner "uhu" nc als Server ("-l") auf Port 6000 ("-p 6000") gestartet. Eine Ausgabeumleitung sorgt dafür dass nc die Daten in die Datei "ausgabe.txt" schreibt. Auf Rechner "emu" genügen dann die Parameter "uhu" und "6000", um mit "< eingabe.txt" die Datei "eingebae.txt" an den Rechner "uhu" zu übergeben. Nach Eingabe des Befehls auf Rechner "emu" muss der Befehl mit "CTRL+C" abgebrochen werden, der nc-Server auf Rechner "uhu" beendet sich damit ebenfalls.
uhu:~$ nc -l -p 6000 > ausgabe.txt emu:~$ nc uhu 6000 < eingabe.txt CTRL+C
Kopieren eines Verzeichnisses
Das aktuelle Verzeichnis auf Rechner "emu" wird durch die Pipe "|" in einen Tarball gepackt, an den Rechner "uhu" geschickt und dort entpackt.
uhu:~$ nc -l -p 6000 | tar x emu:~$ tar cf - * | nc uhu 6000 CTRL+C
Postfach abfragen
Abfrage der Mails eines Postfachs über das Post Office Protocol.
$ nc pop.abc.xx 110 user Benutzername pass Passwort list quit
In entsprechender Weise können auch Verbindungen zu SMTP-, NNTP- oder FTP-Servern hergestellt werden.
Portscanner
Anzeige der auf dem lokalen Rechner "localhost" zwischen Port 1 und 1024 laufenden Dienste. Der Parameter "-v" sorgt für eine ausführliche Ausgabe, "-z" versetzt nc in den Portscanner-Modus.
$ nc -vz localhost 1-1024 localhost [127.0.0.1] 631 (ipp) open localhost [127.0.0.1] 80 (www) open localhost [127.0.0.1] 25 (smtp) open localhost [127.0.0.1] 22 (ssh) open
Anzeige des Ports auf dem lokalen Rechner, auf dem ein SMTP-Server läuft.
$ nc -vz localhost smtp localhost [127.0.0.1] 25 (smtp) open
Kommunikation mit Diensten
Kopieren der Einstiegsseite des WWW-Servers vom Rechner "www.linux-user.de" ins lokale Verzeichnis unter dem Namen "linuxuser.html". Dabei wird mit "echo -e" der sogenannte REQUEST durch die Pipe "|" an nc übergeben - diese Anfrage stellt normalerweise ein Webbrowser.
$ echo -e "GET / HTTP/1.0\r\n" | nc www.linux-user.de 80 > linuxuser.html
Die Einstiegsseite des WWW-Servers vom Rechner "www.linux-user.de" wird auf dem lokalen Rechner unter Port 8080 zur Verfügung gestellt und kann dort mit dem Webbrowser ("http://localhost:8080/") angesehen werden. Der Parameter "-q 1" beendet nc nach einer Sekunde, wenn das Ende der Datei erreicht wurde. Auf der Shell sind dabei die Header-Daten zu sehen, wie sie beispielsweise auch in der Logdatei eines Webservers zu sehen sind.
$ echo -e "GET / HTTP/1.0\r\n" | nc www.linux-user.de 80 | nc -l -p 8080 -q 1 GET / HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.18) Gecko/2010021501 Ubuntu/8.04 (hardy) Firefox/3.0.18 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-ch,de-de;q=0.8,de;q=0.6,en-us;q=0.4,en;q=0.2 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: wikidbUserID=3; wikidbUserName=Mik; wikidb_session=6685748448b46dd92656d3b5c3b0c78d
Honeypot
Als Benutzer "root" können auf den privilegierten Ports 1 bis 1024 sogenannte Honeypots eingerichtet werden, also Dienste. die gar nicht existieren und deren Ports lediglich reagieren, um mögliche Eindringlinge aufzuspüren oder sich über sie lustig zu machen.
Ein gefälschter Telnet-Dämon, um Möchtegern-Cracker zu ärgern.
# echo "you are an IDIOT" | nc -vv -l -p 23 -q 1 listening on [any] 23 ...
$ telnet localhost 23 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. you are an IDIOT Connection closed by foreign host.
MP3-Stücke streamen
nc nimmt so ziemlich alles entgegen, was ihm vorgesetzt wird, also auch MP3-Dateien. Das Beispiel funktioniert allerdings nur mit einem Medienspieler (wie mplayer), der von der Standardeingabe lesen kann.
uhu:~$ nc -l -p 4321 -q 1 < musik.mp3 emu:~$ nc uhu 4321 | mplayer -
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | eng | Netcatwbm | Enzyklopädischer Artikel |