Netcat
Netcat, kurz nc, ist ein Ein-/Ausgabe-Programm für Netzwerke.
Inhaltsverzeichnis |
Warum Netcat?
- Im Gegensatz zu Telnet bricht Netcat nicht einfach die Verbindung ab
- Es können auch binäre Daten übertragen werden, die unter Telnet evtl. als Kommandos interpretiert werden könnten
Flags
Ich werde mich jetzt daran machen verschiedene Anwendungsbeispiele, die ich gefunden habe, auszuprobieren.
Erstmal ein paar flags (für mehr "man nc"):
-c string -> führt "string" nach Verbindung aus -e file -> führt "file" nach Verbindung aus -h -> Zeigt eine Zusammenfassung an nutzbaren Flags -l -> Listen mode für eingehende Verbindungen -o file -> Legt einen Hex-Dump der TCP Verbindung unter "file" an -p port -> Bestimmt einen Port für die Verbindung -v -> Verbose Mode, gibt mehr Information über gerade ablaufende Aktionen aus -vv -> gibt noch mehr Informationen aus
Anwendungsbeispiele
Portscan
Als erstes wird in der Readme ein Portscan besprochen
echo QUIT | nc -v -w 5 target 20-250 500-600 5990-7000
Den Vorgang kann man sich folgendermaßen vorstellen. Der String "QUIT" wird über nc an die Zieladresse "target" gesendet und zwar an die Ports 20-250, 500-600, 5990-7000. Durch den String "QUIT" wird den Diensten an dem Rechner "target" mitgeteilt das eine Verbindung beendet wird. Wenn man auf einem Port also eine Antwort erhält ist davon auszugehen das dort ein Dienst läuft, und u.U. kann man auch eine Fehlermeldung mit Versionsangabe o.ä. erhalten.
Filetransfer
Als nächstes wird in der Readme die Möglichkeit von Filetransfers per Netcat besprochen. Die Datei wird einfach über die Standardausgabe an Netcat übergeben und Netcat sendet die Daten über die festgelegte TCP/IP Verbindung. Wenn jetzt z.B. ein ganzes Verzeichniss übertragen werde soll, sieht der Sender (Client) so aus:
tar cfp - /some/dir | compress -c | nc -w 3 othermachine 1234
Erst wird der Verzeichnissinhalt komprimiert und über die Standardausgabe an Netcat übergeben. Netcat sendet den Inhalt an "othermachine" auf port 1234 und wartet 3 Sekunden (-w 3).
Der Empfänger (Server) könnte wie folgt aussehen:
nc -l -p 1234 | uncompress -c | tar xvfp -
Alles was über Netcat reinkommt wird wieder entpackt und das Ganze Verzeichniss wurde übertragen. Nützlich vor allem wenn keine andere Möglichkeit zur Dateiübertragung vorhanden ist.
Netzwerktraffic generieren
Um ein Netzwerk aus Testgründen mit Traffic zu belasten, kann Datenmüll über netcat hin und her geschickt werden. Der Datenmüll wird mit "yes" generiert und mit einer pipe an netcat übergeben:
yes AAAAAAAAAAAAAAAAAAAAAA | nc -v -v -l -p 2222 > /dev/null (Server)
yes BBBBBBBBBBBBBBBBBBBBBB | nc othermachine 2222 > /dev/null (Client)
Die "very verbose" (-v -v) Flag bei der Serveranweisung sorgt dafür, dass am Ende Ausgegeben wird wieviel Traffic empfangen und gesendet wurde.
Remote Shell
Wenn in einem Netzwerk an einem entfernten Server gearbeitet werden muss auf dem sich kein SSH Server befindet und die Installation gerade zu umständlich ist kann mit Netcat eine Remote Shell gezaubert werden:
nc -v -v -l -p 2222 -c /bin/bash (Server)
nc host 2222 (Client)
Durch die Flag -c wird nach einer eingehenden Verbindung /bin/bash ausgeführt und alle ein und ausgaben von ihr werden über Netcat zum jeweiligen Ende gesendet. Da dies eine sehr unsichere Lösung ist sollte so etwas auf keinen Fall auf von außen erreichbaren Rechnern geschehen
Risiken
Da Netcat auch für nicht legale Zwecke genutzt werden kann und es unter Windows nicht zum Installationsumfang gehört, wird es von vielen Virenscannern als gefährlich eingestuft. Wenn es auf einem Windows System gefunden wird auf dem es nicht mit Absicht installiert wurde, sollte geprüft werden ob es vielleicht für ungewollte Zugriffe auf den Rechner missbraucht wird.
Weblinks
|