rss feed articles activities all_comments

indeedgeek.de

Florian Eitel

Programmvorstellung: netcat

Heute zum Abschluss gibt es noch einmal ein wunderbares Programm: netcat

Ich finde die Einfachheit und Mächtigkeit von netcat einfach unglaublich und vorbildlich für jede andere Software. Das Prinzip ist denkbar einfach: netcat kann nur Daten zu einem Rechner senden und gibt alles was zurück kommt auf STDOUT aus. Andererseits kann es lokal an einem Port lauschen, bei Anfragen irgendwas schreiben und alles was rein kommt, ebenfalls auf STDOUT ausgeben. Mehr macht das Programm nicht und mehr ist auch nicht nötig.

Bevor ich einige Beispiele bringe kurz zu den Optionen: Es gibt wie gesagt zwei Modi. Einmal an einem Port lauschen mit nc -l port und Daten an einen Rechner senden mit nc host port. Jeweils wird STIN ausgewertet. Also beim lauschen wird es dem Aufrufenden zurück gegeben und beim Senden mit gesendet.

Um das zu verstehen ein paar Beispiele:

Fangen wir klein an: Eine Webseite aufrufen mit echo "GET /" | nc feitel.indeedgeek.de 80 schreibt ein GET / bei feitel.indeedgeek.de auf Port 80 und gibt das zurückgegebene HTML einfach auf STDOUT aus. Anders rum sehen wir mit echo "hello" | nc -l -p 8080 -q 1 nachdem wir im Browser localhost:8000 aufgerufen haben auf STDOUT den Request und senden dem Browser ein “hello” zurück was dann erscheint. (das -q 1 gibt an das nach dem senden des Requests eine Sekunde gewartet werden soll bis die Verbindung geschlossen wird. Das liegt daran das normal der Client die Verbindung beendet aber der Webbrowser wartet bis der Server fertig ist. Also sozusagen nur eine Ausnahme bei HTTP).

Interessant sind vielleicht noch die Optionen -e und -c mit denen man entweder ein shell-script angeben kann oder eine Datei die ausgeführt werden soll. Ein bekanntes Beispiel ist die Backdoor (bitte auf keinen Fall vergessen wieder zu schließen!!): nc -l -p 1234 -c /bin/bash. Nun wird auf Port 1234 gelauscht und alles einkommende an bash weiter gegeben und alles was bash ausgibt an den Aufrufer zurück gesendet. Mit dem bereits bekannten nc localhost 1234 können wir uns nun auf diesen Port verbinden und anfangen Befehle zu tippen. Das Resultat wird uns ebenfalls angezeigt.

Zur Vollständigkeit möchte ich noch -v und -vv erwähnen womit man einige schöne Informationen über den Anfragenden und die Größe des Datenverkehrs angezeigt bekommt. Und natürlich noch -o file was in die Datei ein Hexdump der Verbindung schreibt.

So nun haben wir denke ich alle wichtigen Parameter erwähnt. Kommen wir nun zu ein paar Beispielen die ich zusammen gesucht hab. Ich denke die demonstrieren ganz gut die Mächtigkeit von diesem einfachen Tool.

Ein sehr schöner Artikel dazu gibt’s auf pimpmyshell (was leider nicht mehr gepflegt wird). Dort finden sich folgende Beispiele:

Chatten

Dateitransfer

Oder auch anders rum:

Auch schön um ganze Festplatten zu spiegeln

Oder “on-the-fly” generieren (gefunden hier )

Verschlüsselung und Komprimierung

Das Beispiel lässt sich natürlich beliebig erweitern. Wie wäre es mit Komprimierter, Verschlüsselter Übertragung einer Festplatte?

Ok, ich denke das Prinzip ist klar.

Backup-Webserver

Ab und zu verwendet um “Wartungsarbeiten” anzuzeigen: while true; do nc -l -p 80 -q 1 < error.html; done

Oder gleich ein Redirect senden

gefunden hier

while [ 0 ]; do echo -e "HTTP/1.1 302 Found\nLocation: http://www.whatevs.com/index.html" | nc -vvvv -l -p 80; done

Voice Chat

Zuletzt noch ein schönes Beispiel eines Voice-Chats:

Selbstverständlich ebenfalls wieder komprimier- und verschlüsselbar.

So ich habe nun genug vorgestellt. Mich würden nun eure Vorschläge für netcat interessieren! Also wenn euch einen schönen Verwendungszweck einfällt oder ihr evtl schon eine nette netcat-Combo kennt dann her damit!

Comments:

(howto comment?)