Cryptcat analysiert PCs im Netzwerk

Aus LinuxUser 04/2014

Cryptcat analysiert PCs im Netzwerk

© Onatos, sxc.hu

Volle Kontrolle

Cryptcat hilft nicht nur bei der Netzwerkanalyse, sondern eignet sich auch zum Aufbau eines kleinen, verschlüsselten Privatchats.

Bei Installationen auf klassischen PCs oder kleineren Rechnern wie dem Raspberry Pi fehlen oft Werkzeuge zum Analysieren des Netzwerks. Das kleine Programm Cryptcat ermöglicht es, schnell und unkompliziert die netzwerkseitig sichtbaren Dienste eines Rechners abzufragen oder Daten zu übertragen. Dabei belässt es die Software bei einer übersichtlichen Anzahl von Funktionen, was das Einbinden in Shell-Skripte erleichtert.

Im Detail

Die Cryptcat-Projektseite [1] selbst gibt Auskunft über das grundlegende Konzept des Tools. In der Manpage verweisen die Entwickler auf das Programm Netcat, dessen Optionen sie bis auf wenige Ausnahmen übernommen haben. Es fehlen aber insbesondere “gefährliche” Schalter wie -e, welches das Ausführen von Kommandos auf dem entfernten Rechner ermöglicht.

Cryptcat steht für viele Distributionen bereit; die aktuelle Version finden Sie online [2]. Das Programm baut bei Transfers über das Netzwerk verschlüsselte Verbindungen auf und ermöglicht verschiedene Kontrollaufgaben sowie Datentransfers. Es setzt keine Root-Rechte voraus und verhält sich auf der Shell vielfach wie cat.

Zum Chiffrieren der Verbindungen nutzt Cryptcat den Algorithmus Twofish [3] mit Schlüssellängen von 128, 192 oder 256 Bit. Die dabei angewandte Feistelchiffre-Technik stellt sicher, dass das symmetrische Verfahren beim Entschlüsseln eindeutige Ergebnisse liefert.

Bauen Sie eine Verbindung zwischen zwei Rechnern auf, ohne dabei ein Kennwort anzugeben, kommt das fest eingebaute Passwort metallica zum Einsatz. Dies steht so in der Dokumentation, weswegen es sich empfiehlt, jenseits geschützter Netze immer eigene, schlecht nachvollziehbare Passwörter zu verwenden.

Bei der Wahl des Quellports haben Sie freie Hand: Je nach Aktion geben Sie einen einzelnen Port (beim Datentransfer) oder einen Bereich (bei Portscans) an. Im Empfangsmodus beendet sich das Programm normalerweise nach Abschluss der Aufgabe. Im Sendemodus müssen Sie unter Umständen selbst die Verbindung trennen. Das Programm arbeitet wahlweise mit TCP oder UDP-Paketen.

Sie erhalten keine Fehlermeldung, wenn das Senden nicht funktioniert – es sei denn, Sie verwenden die Optionen -v oder -vv. In jedem Fall steht der Exit-Code 0 für eine gelungene Übertragung und 1 für einen Fehlschlag. In der Bash fragen Sie diesen Wert mittels echo $? ab. Die Tabelle “Cryptcat-Optionen” zeigt eine Auswahl oft genutzter Parameter.

Cryptcat-Optionen

Parameter Bedeutung
-k Passwort Benutze Passwort zum Verbindungsaufbau
-l Empfangsmodus
-p Port Port benutzen
-z Portscan-Modus
-u UDP statt TCP (Standard) verwenden
-v Ausgabe mit wenigen Meldungen
-vv Ausführliche Ausgabe
-w Sekunden Timeout für Verbindungen (sonst bis Abbruch durch Benutzer oder Befehl)
-n Host- und DNS-Abfrage unterbinden, keine Namensauflösung

Ausgaben umleiten

Auf dem Zielrechner starten Sie den Empfang durch das Cryptcat-Kommando aus der ersten Zeile von Listing 1. Nun führen Sie auf einem anderen Rechner einen Befehl in der Shell aus und leiten dessen Ausgabe an das Programm auf dem Zielrechner weiter (Zeile 2).

Listing 1

$ cryptcat -k "Passwort" -l -p Port
$ df -h | cryptcat -k "Passwort" -w 1 Hostname_oder_IP Port

Das Kommando aus dem Beispiel in Listing 1 ermittelt den Füllstand der Festplatten auf dem Zielrechner mittels df und leitet die Ausgabe via Pipe um (Abbildung 1). Die Option -w 1 trennt die Verbindung eine Sekunde nach dem Ende der Übertragung.

Abbildung 1: Umleiten einer Ausgabe mittels Cryptcat: Das Foto zeigt den Sender mit hellem und das Ziel mit dunklem Hintergrund.

Abbildung 1: Umleiten einer Ausgabe mittels Cryptcat: Das Foto zeigt den Sender mit hellem und das Ziel mit dunklem Hintergrund.

Senden und empfangen

Das Senden von Daten setzt einen korrekten Befehl voraus, dessen Ausgabe sich für das Übertragen mit Cryptcat eignet. Wenn Sie auf der Gegenstelle die Daten nicht auf dem Bildschirm ausgeben möchten, nutzen Sie alternativ ein Kommando, das von der Standardeingabe liest.

Als Beispiel dient das Packen des Unterverzeichnisses versuch mit drei Dateien. Als Erstes schalten Sie den Zielrechner auf Empfang (Listing 2, Zeile 1). Dann packen Sie die Dateien und schicken den Datenstrom direkt über das Netzwerk zum Empfänger (Zeile 2). Brauchen Sie mehr Informationen beim Übertragen der Daten, setzen Sie die Option -v ein (Abbildung 2).

Listing 2

$ cryptcat -k "Passwort" -l -p Port | tar xv
$ tar cf - versuch/ | cryptcat -k "Passwort" -w 1 Rechner Port

Abbildung 2: Cryptcat eignet sich ausgezeichnet, um Datenströme aus Programmen wie Tar über das Netzwerk zu schicken.

Abbildung 2: Cryptcat eignet sich ausgezeichnet, um Datenströme aus Programmen wie Tar über das Netzwerk zu schicken.

Portscan

Hinter dem Portscan verbirgt sich eine gängige Methode, um festzustellen, auf welchen Kanälen ein Rechner Verbindungen annimmt. Allerdings sehen Admins einen Scan oft als Angriffsversuch an. Daher empfiehlt es sich, diese Technik nur gegen Rechner anzuwenden, die unter Ihrer Obhut stehen. Der Befehl für den Portscan weist folgenden Aufbau auf:

$ cryptcat -vv -z Rechner Port-Bereich

Mit der Option -vv zeigt das Kommando alle offenen und geschlossenen Ports an, -v dagegen liefert nur die offenen. In der Abbildung 3 sehen Sie zusätzlich die Wirkung der Option -n, die das Umsetzen von IP-Adressen auf Namen unterdrückt.

Abbildung 3: Portscan in einem lokalen Netzwerk mittels Cryptcat.

Abbildung 3: Portscan in einem lokalen Netzwerk mittels Cryptcat.

Überwachen

Cryptcat hat die Eigenschaft, sich nach dem erfolgreichem Datenempfang zu beenden. Das eignet sich dazu, recht einfach Portscans zu entdecken und eine Reaktionen zu veranlassen. Betrachten Sie in Abbildung 3 das Terminal mit dem dunklen Hintergrund. Dort lauscht Cryptcat auf den Port 8080. Nachdem der andere Rechner mit seinem Portscan angeklopft hatte, beendete es sich mit dem Exitcode 0.

Mit wenigen Zeilen Shell-Code erstellen Sie unter Zuhilfenahme dieser Funktion eine Türklingel fürs Netzwerk (Listing 3). Diese gibt einfach einen Ton aus und ruft Sie so an die Konsole. Um das Ereignis auszulösen, braucht keine Nachricht über das Netz zu laufen – ein Portscan genügt. Bei Bedarf starten Sie mehrere dieser Skripte im Hintergrund mit abweichenden Ports.

Listing 3

#! /bin/sh
while true; do
  cryptcat -v -n -l -p 8080
  beep
  sleep 1
done

Das Skript im Listing 3 zeigt zusätzlich an, welcher Rechner anklingelt. Solche einfachen Mittel helfen, wenn es darum geht, einen Teilnehmer im Netz nur kurz auf etwas aufmerksam zu machen. Das Anklingeln geschieht ganz einfach mit der Portscan-Option (Abbildung 4).

Abbildung 4: Einmal gestartet, registriert das Skript Klopfzeichen von anderen Rechnern.

Abbildung 4: Einmal gestartet, registriert das Skript Klopfzeichen von anderen Rechnern.

Statt einem Klingeln wären auch andere Reaktionen möglich. So ließe sich das Skript so gestalten, dass es die Netzwerkkarte für eine gewisse Zeit deaktiviert oder eine andere IP-Adresse verwendet: Ein Portscan wäre dann mangels Erreichbarkeit nicht mehr möglich.

Minimaler Chat

Wie viele andere Shell-Befehle nimmt Cryptcat Daten von der Standardeingabe entgegen. Das erlaubt es, einen privaten, verschlüsselten Chat einzurichten. Zunächst startet einer der Partner den Empfang auf seinem Rechner (Listing 4, erste Zeile). Anschließend verbindet sich der andere Teilnehmer von seinem Rechner aus (zweite Zeile).

Listing 4

$ cryptcat -k "Passwort" -l -p Port
$ cryptcat -k "Passwort" Hostname_oder_IP Port

Abbildung 5 zeigt den Ablauf einer solchen Unterhaltung. Immer nach dem Drücken der Eingabetaste gelangt die nächste Zeile auf den Bildschirm der Gegenstelle. Sie beenden das Gespräch mit [Strg]+[D].

Abbildung 5: Privater Chat mit Cryptcat.

Abbildung 5: Privater Chat mit Cryptcat.

Fazit

Cryptcat ermöglicht einen schnellen Check von offenen Ports und Netzwerkverbindungen, die einfache Syntax erleichtert die Integration in Skripte. Im Alltag erweist sich das Programm als flexibles Werkzeug, das gegenüber ähnlichen Lösungen mit dem verschlüsselten Übertragen der Daten punktet. 

Der Autor

Harald Zisler beschäftigt sich seit den frühen 90er-Jahren mit FreeBSD und Linux. Zu Technik- und EDV-Themen verfasst er Bücher und Beiträge für Zeitschriften. Aktuell ist sein Werk “Computer-Netzwerke”, erschienen bei Galileo Press.

Infos

[1] Cryptcat: http://cryptcat.sourceforge.net

[2] Cryptcat herunterladen: http://sourceforge.net/projects/cryptcat/

[3] Twofish-Verschlüsselung: https://www.schneier.com/twofish.html

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 04/2014 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben