nützliche Netcat Tricks

Ich liebe die kleinen aber feinen (Unix-)Programme, die zwar nur einen Zweck erfüllen, diesen aber dafür ganz vorzüglich. Nehmen wir beispielsweise das Schweizer Armeemesser der Netzwerktools: netcat. Eine kleine Binärdatei, etwa 60 KB groß, je nach dem wo und wie sie kompiliert wurde. Was kann netcat?

Nun, ich schätze die passendere Frage würde lauten: Was kann netcat nicht?

Ports Scannen

Netcat kann als Portscanner fungieren. Natürlich reicht es nicht an (beispielsweise) nmap heran, aber wenn du schnell sehen willst, welche Ports auf einem Rechner offen sind, führe folgenden Befehl aus:

nc -v -w 1 localhost -z 1-2000

, was alle offenen Ports zwischen 1 und 2000 auf localhost ausgibt.

Dateien übertragen

Du möchtest eine große, komprimierte Datei von Rechner A nach Rechner B schicken, hast aber weder FTP, noch E-Mail oder Instant Messenger sei es wegen Dateigröße oder irgendwelcher fehlenden Rechten zur verfügung? Verschicke die Datei doch mit netcat:

Zuerst muss mit netcat auf Rechner B ein Port geöffnet werden, wobei im folgenden 1234 der zu öffnende Port ist und datei.tar die zu speichernde Datei ist:

nc -lp 1234 > datei.tar

Die IP von Rechner B ist beispielsweise 192.168.0.100. Gehen wir zu Rechner A und geben folgendes ein:

nc -w 1 192.168.0.100 1234 < datei.tar

Fertig. Die Datei wird auf magische Weise über das Netzwerk übertragen.

Chatten

Schon einmal einen improvisierten Chat, von einem Rechner auf einen anderen benötigt? Auch das kann netcat.

Wir befehlen Netcat, auf Port 1234 zu “lauschen”:

nc -lp 1234

Dann einfach von einem anderen Rechner auf den Port verbinden:

nc 192.168.0.100 1234

Fange auf einem der beiden Rechnern an zu tippen. Sobald du ENTER drückst, wird die Zeile auf dem anderem sichtbar.

Telnet Server

Mit netcat lässt sich sogar innerhalb weniger Sekunden (so verrückt es auch klingen mag) ein Telnet Server aufsetzen. Die Shell (oder welche ausführbare Datei auch immer) lässt sich mit dem Parameter -e festlegen:

nc -lp 1234 -e /bin/bash

Das funktioniert sogar unter Windows:

nc -lp 1234 -e cmd.exe

Dann muss der Klient nur noch auf Port 1234 verbinden und hat vollzugriff auf eine Shell, zusammen mit dem Rechten des Benutzers der nc gestartet hat.

HTTP Header simulieren

Nützlich, um ein Paar zugriffe zu erzeugen, die leicht in den Logs zu erkennen sind. Der Header selbst muss natürlich manuell eingegeben werden:

nc pimpmyshell.de 80
GET / HTTP/1.1
Host pimpmyshell.de
User-Agent: netcat
Referrer: google.com

Die Anfrage wird erst nach einer Leerzeile abgeschickt. Es reicht also, zwei mal RETURN zu drücken. Dann sollte eine Antwort aus Headern und HTML erscheinen:

HTTP/1.1 200 OK
Date: Wed, 08 Aug 2007 20:30:43 GMT
Server: Apache
Last-Modified: Fri, 01 Dec 2006 15:02:06 GMT
ETag: "3dd0d1-9ad-4238c48865780"
Accept-Ranges: bytes
Content-Length: 2477
Content-Type: text/html; charset=ISO-8859-1
Content-Language: de

(Abgeschnitten, da HTML nicht nötig)

Web Server

Das ist sicher einer der coolsten Tricks. Damit lässt sich auf die schnelle (ein wirklich simpler) Webserver aufsetzen. Beispielsweise um den Benutzern einen kleinen Hinweis zu geben, wenn der eigentliche Webserver gerade nicht verfügbar ist. Schliesslich ist alles besser als Keine Antwort von Server…

while true; do nc -l -p 80 -q 1 < error.html; done

Schützt den versierten Admin garantiert vor Morddrohungen per Telefon. *g*

Systeme Klonen

Ok, das ist mein absoluter Lieblingtrick. Auf dem System, das ich klonen will führe ich Folgendes aus:

dd if=/dev/sda | nc 192.168.0.100 1234

Und das hier auf dem Empfängersystem:

nc -l -p 1234 | dd of=/dev/sda

Natürlich müssen beide Systeme mit einer Live CD gebootet sein und zugriff auf das Netzwerk sowie netcat erhalten (Knoppix rockt!).

Fazit

Obwohl netcat zu all dem fähig ist, bleibt es der Unix Philosophie - do one thing and do it well - treu. Netcat wurde nur zu einem einzigen Zweck entwickelt: Datenpakete über Netzwerkverbindungen lesen und schreiben. Und weil es nur das kann, kann es auf so unglaublich vielfältige Weise eingesetzt werden. Es ist ironisch, aber in den meisten Fällen bedeuten mehr Funktionen nur eine noch stärkere Spezialisierung.

Ich habe gehört, dass netcat's fork socat noch mächtiger als sein und mehr Funktionen bieten soll. Ich bin aber noch nicht dazu gekommen, damit zu spielen.

Ebenso muss ich anmerken, dass fast alle der Tricks nur noch halb so lustig sind, wenn sie über das Internet genutzt werden, da - anders als bei ssh - die komplette Datenübertragung im Klartext stattfindet. Dafür gibt es cryptcat, was ich aber ehrlich gesagt auch noch nicht getestet habe.

Und wenn ihr noch ein paar weitere coole Tricks für netcat kennt, schreibt sie in die Kommentare! Man lernt nie aus.


Über diesen Beitrag


  1. ReBe 9.8.2007 / 12:36

    Hallo. Ich hab gerade einige der netcat befehle ausprobiert – unter Anderem auch das mit dem Web-Server

    while true; do nc -l -p 80 -q 1

  2. ReBe 9.8.2007 / 12:38

    aber es steht dann:
    Ungueltige Option — q

  3. Jeremy 9.8.2007 / 18:05

    Der Fehler muss bei dir liegen. Bei mir funktionierts ohne Probleme. Sieh mal in die manpage, vielleicht hat deine Version von netcat ja gar nicht die Option -q.

    (Was ich für unwarscheinlich halte.)

    Die Semikola stehen übrigens für Zeilenumbrüche. ;-)

  4. ReBe 9.8.2007 / 18:58

    Ich habe netcat V 0.7.1 und die Option -q ist anscheinend wirklich nicht dabei. Diese Version habe ich erst heute von der homepage heruntergeladen also hoffe ich doch, dass diese die neueste ist.

  5. ReBe 9.8.2007 / 19:00

    Vielleicht ist es in meiner Version ja ein anderer Buchstabe. Bitte schreib mal was -q machen sollte dann schau ich mal nach einem Ersatz nach. Vielen dank.

  6. Jeremy 9.8.2007 / 19:37

    Stimmt, die Version auf Sourceforge ist wirklich total veraltet – hier gibt es eine aktuellere. Ich habe hier Version 1.10 (aus den Ubuntu-Paketquellen) installiert.

    Das kleine Skript für den (spartanischen) Webserver funktioniert prinzipiell auch ohne die Option -q. Die manpage von Netcat sagt dazu:

    -q seconds after EOF on stdin, wait the specified number of seconds and then quit.

    , was im Falle des Webserver lediglich dafür sorgt, dass die Datenübertragung beendet wird, wenn die Seite zu Ende aufgerufen wurde. Fehlt die Option, lädt sich der Browser einen Wolf.

    Ist also alles nicht so tragisch. :-)

  7. EDV - Ende der Vernunft 9.8.2007 / 21:14

    Links for 2007-08-09

    10 things your IT guy wants you to know – Lesen! Ausdrucken!
    Linux light – Damit Dir ein Licht aufgeht
    Case Mod – Vespa mit eingebauten Computer (leider Windows)
    Nützliche Netcat Tricks – Keine weiteren Erklärungen nötig
    Erste Bremer Bl…

  8. ReBe 10.8.2007 / 6:41

    @ Jeremy

    Danke fuer die Antwort. Ich habe den Ersatz schon gefunden. Anstatt -q ist es nun -c geworden (weiss auch nicht warum sie das geaendert haben)

  9. Stefan 12.8.2007 / 20:23

    Hey — genialer Artikel, vielen Dank dafür.

  10. Torstens Blog 4.11.2007 / 11:51

    netcat: das Leatherman des Netzwerks

    Viele, die mit Linux arbeiten, werden das Problem kennen: man möchte nur kurz eine Datei von einem auf den anderen Rechner kopieren, einen Mini-Webserver erstellen oder ein System klonen und muss für alles ein “hochspezialisiertes&#82…

  11. David 5.12.2007 / 9:01

    Sogar ein Webradio kann man mit netcat basteln. Ist länger her, dass ich folgende Lösung mal hatte. Geht dort zwar nicht speziell um netcat, aber trotzdem interessant zu lesen.
    (Inkl Anzeige des aktuellen Titels)

    http://icecast.imux.net/viewtopic.php?p=1494#1494

  12. Idetrorce 16.12.2007 / 5:14

    very interesting, but I don’t agree with you
    Idetrorce

  13. Joerky 22.2.2008 / 17:15

    Traumhafte Beispiele – danke für die guten Tipps!

  14. Eqqkamuekawa 6.9.2010 / 9:26

    [url=http://miers.zanos.pp.ua/]беспатные сайты знакомств по японии[/url]
    [url=http://mulligan.zapasnoj.pp.ua/]знакомство с мусульманинами[/url]
    [url=http://haley.zarjad.pp.ua/]казань лове знакомства[/url]
    [url=http://burril.zapad.pp.ua/]доска бесплатных знакомств[/url]
    [url=http://mcalpin.zapashok.pp.ua/]интим услуги в г душанбе[/url]
    [url=http://murty.zarok.pp.ua/]интим водный стадион[/url]
    [url=http://bernadou.zanoza.pp.ua/]сайт знакомств санкт петербурга[/url]
    [url=http://naumann.zanuda.pp.ua/]знакомства с петербург[/url]
    [url=http://bracher.zarok.pp.ua/]чат тверь знакомств[/url]

  15. Apache2 Download Server konfiguration (max 200mbit von 500) 26.12.2010 / 13:19

    [...] [...]

Hinterlasse einen Kommentar

XHTML: Folgende Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>




Safari hates me