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.
-
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
-
9.8.2007 / 12:38
aber es steht dann:
Ungueltige Option — q -
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. ;-)
-
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.
-
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.
-
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. :-)
-
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… -
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)
-
12.8.2007 / 20:23
Hey — genialer Artikel, vielen Dank dafür.
-
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 “hochspezialisiertesR…
-
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) -
16.12.2007 / 5:14
very interesting, but I don’t agree with you
Idetrorce -
22.2.2008 / 17:15
Traumhafte Beispiele – danke für die guten Tipps!
-
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] -
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>
navigation
- [1] was ist [ pimp my shell ] ?
- [2] programme
- [3] skripte / dotfiles
- [4] shellshots
- [5] mitmachen
- [6] autoren
- [7] einloggen
- [8] impressum
aussehen
ältere beiträge
- 08.26 lsr – Das fehlende Listing
- 06.18 wirklich? so einfach?
- 06.17 fbcmd – update
- 06.04 worklog – die zeit im griff
- 05.30 google-reader >> snownews
- 05.28 fbcmd – facebook in der shell
- 05.28 bitlbee – alles in einem!
- 05.16 NoPaste/pastebin-Service über die Shell mit curl und sprunge.us
- 04.15 Die Heirloom-Tools – Unix unter Linux
- 02.13 dvtm – dwm für die Konsole
beitrags-archiv
- August 2010 (1)
- Juni 2010 (3)
- Mai 2010 (3)
- Mai 2008 (1)
- April 2008 (1)
- Februar 2008 (4)
- Januar 2008 (1)
- Dezember 2007 (2)
- September 2007 (1)
- August 2007 (1)
- Juli 2007 (6)
- Juni 2007 (1)
kategorien
- allgemein (17)
- berichte (7)
- fun (2)
- gnu_screen (2)
- hintergrundwissen (3)
- how-tos (11)
- internes (6)
- programme (31)
- shells (6)
- tutorials (6)
- user-skripte (2)
- vim (5)
- webseiten (5)
15 Kommentare
Zum Kommentarformular | Kommentar rss [?] | trackback uri [?]