Butschek.de

Warnung: Diese Seite ist eine statische Kopie eines früher betriebenen Blogs. Es findet keine Aktualisierung mehr statt. Kommentare und die Suche funktionieren nicht.

Linux, Server & Co

Analyse mit tcpdump/wireshark

3 comments

Hin und wieder steht man vor dem Problem, dass man gerne in den Netzwerk-Traffic des eigenen Servers blicken möchte. Sei es, um ominöse Verbindungen endlich zu verstehen, um eine vermeintliche DoS-Attacke zu analysieren oder herauszufinden, was genau der Grund für die unspezifische Meldung „Verbindungsabbruch“ im Mail-Client ist.

Hierzu gibt es 2 Tools, die sich hierfür anbieten Tcpdump erlaubt neben dem Live-Blick in den Traffic auch das Speichern des gesamten Traffics in eine Datei. Dies ist oft die sinnvollere Wahl, da die gesammtelten Daten so mit einem geeigneten Werkzeug in Ruhe analysiert werden können.

Dieses geeignete Werkzeug nennt sich Wireshark. Mit diesem Programm lassen sich mit Tcpdump erzeugte Captures (in Windows: *.cap) öffnen und ordentlich analysieren.

Aufzeichnung mit Tcpdump

Zuerst muss Tcpdump auf dem Server installiert werden. Debian bietet hierzu wie üblich ein fertiges Paket an:

aptitude install tcpdump

Nach der Installation ist das Programm sofort einsatzbereit. Mit folgender Zeile wird das Aufzeichnen der Pakete (Capture) gestartet:

tcpdump -p -s0 -w tcpdump.cap

Tcpdump speichert nun alle Pakete mit. Eine Ausgabe erfolgt jedoch nicht. Die Parameter geben an, dass die Datei tcpdump.cap zu verwenden ist (-w), dass der Promiscuous Modus nicht aktiviert werden soll (-p) und dass die Pakete nicht wie in der Default-Einstellung nach 68 Byte abgeschnitten werden, sondern voll aufgezeichnet werden (-s0, wobei 0=Unbegrenzt).

tcpdump auf der Shell

Da hier schnell viele Daten zusammenkommen und die spätere Analyse sehr lange dauert, wenn wir 30.000 Pakete aufzeichnen, solltem an nur soviel aufzeichnen, wie für die Fehleranalyse nötig ist. Das heißt: Im Falle einer Fehlermeldung den Fehler einmal reproduzieren, dann die Aufzeichnung abbrechen. Im Falle einer Attacke genügen meist 10 Sekunden aus dem Zeitraum, in dem die Attacke läuft.

Abbrechen läßt sich die Aufzeichnung mit STRG-C. Danach kann die gespeicherte Datei (hier: tcpdump.cap) auf den lokalen Rechner übertragen werden (scp/pscp).

Analyse mit Wireshark

Auf Windows-PCs kann die Software direkt von der Wireshark Homepageheruntergeladen werden. Debian und Ubuntu Benutzer können das Paket direkt über die Quellen installieren:

aptitude install wireshark

Nach dem Starten des Programms kann man die aufgezeichnete Datei (oben: tcpdump.cap) öffnen und landet direkt in der Paketansicht, in der man alle aufgezeichneten Pakete sieht:

Ethereal Paketansicht

Die Ansicht ist dreigeteilt: Oben sehen wir eine Liste der verschiedenen Pakete, wobei die verschiedenen Farben für unterschiedliche Protokolle stehen. In der Mitte sieht man die einzelnen Layer (Schichten) des ausgewählten Pakets. Diese lassen sich in einer Baumstruktur öffnen, so dass man alle Layer sowie dessen Inhalte betrachten kann.

Unten sehen wir die Raw-Daten, also das Paket in Hexadezimal- und ASCII-Ausgabe, wobei der jeweils ausgewählte Layer automatisch markiert wird. Ein nettes Feature, denn so lernt man leicht die Beschaffenheit von Paketen und erkennt auch schnell, an welcher Stelle im Paket welche Informationen zu finden sind.

Eine nette Funktion von Wireshark ist „Follow TCP Stream“, also einer TCP-Verbindung folgen. Hierbei genügt es, ein Paket auszuwählen und die Funktion über das Menü aufzurufen. Wireshark filtert daraufhin alle Pakete, die zu dieser TCP-Verbindung gehören und zeigt in einem Fenster alle Daten, die Client und Server übertragen haben:

Follow TCP Stream

Angezeigt werden also nicht Pakete, sondern nur die übertragenen Informationen. Die Darstellung in ASCII erlaubt somit das direkte Mitlesen der Kommunikation zwischen Client und Server. Eine sehr nette Funktion, wenn der Mailclient mal wieder eine nichtssagende Fehlermeldung von sich gibt, denn hier kann exakt eingesehen werden, was „gesprochen“ wurde. Das gilt natürlich nur für ASCII-Dialoge, die keine Verschlüsselung (z.B. SSL) benutzen.

Auch interessant man die Funktion Flow Charts im Statistics Menü sein. Hier sieht man die Aufteilung der Pakete mit prozentualer Angabe. Nett, um zum Beispiel ungewöhnliches Netzwerkverhalten aufzudecken.

Flow Charts

Ebenfalls im Statistics Menü befindet sich die Funktion Protocol Hierachy, mit der sich die einzelnen Pakete auf die verwendeten Protokolle hierachisch aufaddieren lassen. Damit sieht man die Verteilung des Traffics und erkennt auch schnell, welches Protokoll benutzt wird.

Protocol Hierachy Statistics

Generell sind sehr viele Funktionen des Programms interessant, es wäre zu viel, hier alle vorzustellen. Dennoch soll dieser Artikel dazu „verleiten“, es einfach mal auszuprobieren. Wer sich ein bischen mit TCP/IP auskennt, dürfte mit den beiden Tools viel interessantes neues kennenlernen und zuvor unlösbare Netzprobleme schnell und einfach finden und beheben können.

Ein Wort zum Datenschutz

Natürlich ist es nicht erlaubt, von dritten generierten Traffic einfach frei mitzuschneiden und zu analysieren. Dies würde die Privatsphäre verletzen. Daher sollte dies nur auf privaten Servern oder Home PCs eingesetzt werden. Im Fall der Fälle läßt sich tcpdump auch bewegen, nur Pakete bestimmter Hosts in die Datei zu speichern, indem man am Ende der Zeile noch ein „host xx.xx.xx.xx“ anhängt, wobei xx.xx.xx.xx die IP-Adresse ist.

Written by Michael Butschek

April 21st, 2009 at 9:43 pm

Posted in

3 Responses to 'Analyse mit tcpdump/wireshark'

Subscribe to comments with RSS or TrackBack to 'Analyse mit tcpdump/wireshark'.

  1. Hallo Michael,

    ein wirklich sehr interessanter Beitrag!

    Chrissio

    16 Jul 11 at 11:01

  2. Sehr guter Eintrag :D. Aber ich koennte es besser… Kannst mich ruhig fragen wenn du hilfe brauchst. Bist halt noch ein Anfeanger :D

    Rued Rüssel

    24 Okt 12 at 09:50

  3. Hallo Bürger aus der Schweiz, der falsche Kontaktdaten angibt, um anonym zu bleiben!

    Ich bin genauso Anfänger bei meinem Themen, wie es wohl auch der Mathematik-Lehrer der zweiten Klasse ist. Denn nur weil er „Addition im Zahlenraum bis 100“ lehrt, heißt das noch lange nicht, dass er auch nur das beherrschen würde.

    Ich spreche in meinem Blog Themen des täglichen Lebens eines Linux-Admins an und benutze dazu eine einfache (verständliche) Sprache, einfache Beispiele und ich gehe jeweils nur so tief, wie es nötig ist, um das Thema zu begreifen. Ich denke nicht, dass ich ein Anfänger bin, nur weil ich auf einfache und verständliche Weise lehre.

    Dennoch danke ich für dein Feedback. Und falls du mal Hilfe bei einem Thema brauchst, bei dem du selbst noch Anfänger bist, schreib mich gerne an. Ich kann dir z.B. mal die korrekte Kommasetzung beibringen. Oder wie man „Anfänger“ richtig schreibt. :-)

    Michael Butschek

    24 Okt 12 at 10:05

Leave a Reply