Das Strukturieren von großen Capture-Dateien
Wireshark-Filter und andere Bordmittel des Allegro Network Multimeter
Hier geht es zum englischen Blogbeitrag.
Das Thema Paketanalyse ist ein komplexes Thema. Wird Wireshark ohne die Festlegung von Parametern geöffnet, startet ein Live-Capture oder wird eine vorab aufgezeichnete Pcap-Datei geöffnet. Dies kann frustrierend sein, denn in sehr kurzer Zeit können dort tausende Pakete warten, die vom Anwender analysiert werden müssen. Die Gefahr ist groß, sich schnell in der großen Datenmenge zu verheddern und sprichwörtlich den Wald vor lauter Bäumen nicht mehr zu sehen.
Allerdings gibt es zu Wireshark keine wirkliche Alternative, wenn der Anwender tief in die Paketanalyse einsteigen will. Aber es gibt Wege, dies wesentlich zu vereinfachen.
In diesem Artikel werden Strategien erläutert, um den bestehenden Herausforderungen Herr zu werden und den Aufwand der Paketanalyse – sei es zur Fehlersuche oder zur Bewertung der Netzqualität – zu reduzieren.
Im ersten Teil wird auf Techniken eingegangen, die erklären wie man mit den von Wireshark zur Verfügung gestellten Bordmitteln die Suche strukturieren kann. Hier werden die Techniken der Filter, der Farbmarkierung und der Protokollhierarchien behandelt. Im zweiten Teil wird beschrieben, wie das Allegro Network Multimeter genutzt werden kann, um die Arbeit mit dem Pcap-Analyzer um ein Wesentliches zu beschleunigen.
Flaggschiff Wireshark
Das Open-Source-Programm Wireshark ist ein aktuell konkurrenzloser Pcap-Analyzer. Das aus dem Vorläufer „Ethereal“ hervorgegangene Projekt existiert seit 2006 und hat seit seinem Erscheinen alle kommerziellen Vergleichsprodukte vom Markt gedrängt. Wireshark ist ein paketorientierter Analyzer zur Eruierung von punktuellen Problemen und stellt Datenprotokolle grafisch dar.
Dank der vielen parallel laufenden Netzwerkverbindungen gibt es ein – zumeist – schnelles Internet bzw. Netzwerk. Darin liegt allerdings die Crux, wenn es um die Paketanalyse geht. So verursacht ein einfacher Besuch auf einer Website z.B. Verbindungen zu Dutzenden anderer Hosts.
Die Verwendung von Filtern
Die Analyse von Pcap-Dateien scheitert oft an der schieren Masse der zu bewältigenden Daten. Filter dienen dazu, nach und nach alle Verbindungen auszublenden, die nicht von Interesse sind. Ziel ist es, am Ende eine verhältnismäßig überschaubare Menge an Paketen als Ausgangspunkt für die Detailanalyse zu erhalten.
Neben externen Tools und Techniken, die zum Filtern des Verkehrs genutzt werden können, z.B. die Anwendung von BPF-Syntax, besitzt auch Wireshark eine Reihe an Bordmitteln, um die Fülle an Informationen zu reduzieren und sich so den relevanten Informationen zu nähern. Wireshark unterscheidet zwei Arten von Filter. Die Capture-Filter definieren, welche Pakete überhaupt mitprotokolliert werden. Die Anzeigefilter bestimmen, welche der erfassten Pakete in der aktuellen Analyse berücksichtigt werden. Leider benutzen die beiden Filter eine unterschiedliche Syntax.
Einfache Anzeigefilter in Wireshark
Die innerhalb Wiresharks am häufigsten angewandte Technik zur Reduktion der Inhalte ist die Verwendung von Anzeigefiltern.
Die einfachste Verwendung von Anzeigefiltern besteht darin, den Datenverkehr auf eine einzelne Anwendung, auf ein bestimmtes Protokoll oder die genaue Spezifikation eines Datenfelds zu reduzieren. Hierfür kann entweder über das Menü (Analyse->Anzeigefilter) z.B. das HTTP-Protokoll aufgerufen werden, was die Ansicht auf alle HTTP-Einträge beschränkt oder den gewünschten Filterwert direkt in die Filter-Toolbar einfügt werden. Will man z.B. nur alle SIP-Verbindungen angezeigt bekommen, muss man in das Eingabefeld „sip“ schreiben und mit „Enter“ bestätigen.
Dass ein Filter in Anwendung ist, ist ebenfalls am Eingabefeld der Filter-Toolbar (grün markiert) erkennbar. Auch auf der Statusleiste unten rechts wird angezeigt, dass ein Filter gesetzt ist bzw. dass im Moment nur ein bestimmter Prozentsatz der Pakete angezeigt wird.
Wireshark stellt bei der direkten Eingabe der Anzeigefilter eine Autovervollständigungsfunktion bereit, so dass beim Eintragen eines Filters alle verfügbaren Filter mit der gleichen Buchstabenfolge vorgeschlagen werden.
Vergleichsoperatoren
Neben der Anwendung von einfachen Filtern lassen sich Bedingungen auch verknüpfen. Die Filter-Syntax von Wireshark sieht hierfür Klammern vor, logische Operatoren wie zum Beispiel and oder or und Vergleichsoperatoren wie == oder !=.
Will man beispielsweise „jeglichen TCP-Verkehr von der IP-Adresse 10.17.2.5 an Port 80“ anzeigen, lautet die Übersetzung in die Filter-Syntax von Wireshark ip.src == 10.17.2.5 and tcp.dstport == 80.
In diesem Beispiel werden die Bedingungen mit and verknüpft. Bedingung 1 besagt, dass die Quell-IP-Adresse der Pakete 10.17.2.5 sein muss und Bedingung 2 gibt vor, dass das Protokoll TCP und der Ziel-Port 80 entsprechen muss.
Es können beliebig viele Bedingungen verknüpft werden, um die Auswahl des angezeigten Traffics noch weiter einzuschränken.
Expression Builder von Wireshark
Als geübter Wireshark-Anwender können Ausdrücke frei aus dem Gedächtnis angewendet werden. Zu Beginn ist es sicherlich einfacher, auf das dafür vorgesehene Dialogfeld „Anzeigefilterausdruck“ (engl. Expression Builder) von Wireshark zurückzugreifen, um dem Anzeigefilter einen Ausdruck hinzuzufügen. Dieser Dialog öffnet sich, wenn in der Filter-Toolbar rechts auf den Begriff "Ausdruck" geklickt wird. Hier lassen sich vorgegebene Operatoren anwählen und verknüpfen. Zum Überprüfen, ob der gewählte Filter richtig ist, färbt sich die Filter-Toolbar grün ein. Bei einem ungültigen Filter wird die Fläche rot hinterlegt.
Bei Bedarf lassen sich verwendete Filter in Wireshark auch speichern.
Capture-Filter
Neben den oben beschriebenen Anzeigefiltern, die die angezeigten Pakete lediglich reduzieren, lassen sich auch bereits bei der Aufzeichnung des Verkehrs Filter anwenden, die sogenannten Capture-Filter, so dass die Netzwerkdaten auf die gewünschte Auswahl limitiert sind.
Die Wireshark Capture-Filter verwenden die gleiche Syntax wie tcpdump, die libpcap-Filter. Also eine Syntax aus Byte-Offsets, Hex-Werten und Masken, die mit Wahrheitswerten verknüpft werden, um die Daten zu filtern. Capture-Filter sind in ihrer Anwendung nicht ganz trivial, weil kryptischer als Anzeigefilter.
Im Handbuch von Wireshark finden sich viele weitere Informationen zu den in Wireshark integrierten Filtern.
In diesem Artikel sind nur die wichtigsten Filter angesprochen, die Wireshark als Bordmittel bereithält. Es zeigt sich, dass die Anwendung von Filtern abseits der einfachsten Anzeigefilter vertiefte Kenntnisse über die Filter-Syntax Wiresharks nötig macht, um Filter konsequent für seine Forschungsfrage zu nutzen.
Farbmarkierung bei Wireshark
Neben den Filterfunktionen besitzt Wireshark auch ein – individuell anpassbares – Farbcodierungssystem. Standardmäßig sind z.B. alle UDP-Pakete in blau, Standard-TCP-Transfer in lila oder HTTP in grün markiert. Diese Farbcodes sind bereits ein guter Anhaltspunkt für den Administrator, um die Pakettypen auf einen Blick zu erkennen. Vom User festgelegte Farbregeln, die dem eigenen Profil zugeordnet und gespeichert werden können, komplettieren das System. Dabei lassen sich sowohl die Textfarbe als auch die Hintergrundfarbe anpassen.
Über die automatische Farbcodierung lassen sich einzelne Streams problemlos verfolgen. Um aber z.B. auf einen Blick zu sehen, welche Verbindungen gleichzeitig stattfinden oder zu welchen Verbindungen einzelne Pakete gehören, ist es möglich – statt dies langwierig über IP-Adressen/Portnummern zu bestimmen – dies über Farbcodes zu regeln. Hierzu kann man nach einem rechten Mausklick auf das Paket im Kontextmenü „Verbindung einfärben“ klicken und die Art der Verbindung auswählen (Ethernet, IPv4, IPv6, TCP, UDP etc.).
Indem man Verbindungen anhand des Transportprotokolls einfärbt, können einzelne Kommunikationsströme zwischen demselben IP-Paar unterschieden werden. Dies ermöglicht eine granularere Analyse als auf Basis der reinen IP-Adresse.
Die Farbkodierung einzelner Verbindungen ist vor allem in Situationen sinnvoll, in denen mehrere Hosts gleichzeitig kommunizieren, oder in denen es mehrere Kommunikationsverbindungen zwischen den gleichen Hosts gibt, die es zu unterscheiden gilt.
Die Farbcodierung auch eine praktikable Art, sich „Notizen“ zu machen, z.B. was sich näher angeschaut werden möchte oder welcher Verkehr einem verdächtig vorkommt.
Die Farbkodierung stellt somit eine einfach zu handhabende Technik zur ersten Orientierung bei großen Pcap-Daten dar.
Verwendung von Protokollhierarchien
Die dritte hier zu beschreibende Technik zur besseren Orientierung in großen Pcap-Dateien ist die Nutzung von Protokollhierarchien. Im Vergleich zur Farbkodierung setzt sie fortgeschrittene Wireshark-Kenntnisse voraus. Die Nutzung von Protokollhierarchien bietet z.B. beim Aufspüren von verdächtigen Anwendungen oder Protokollen dienliche Hinweise.
Um sich die in der Aufzeichnungsdatei verwendeten Protokolle anzeigen zu lassen, muss der Menüpunkt Statistiken -> Protokollhierarchie ausgewählt werden. Die Hierarchie stellt eine baumartige Ansicht der Protokolle zur Verfügung, inklusive der statistischen Werte der einzelnen Protokolle. Es wird Hierarchie genannt, weil die Daten auf Basis der Kommunikationsschichten angeordnet sind, da die meisten Pakete mehrere gekapselte Protokolle enthalten. Deshalb wird ein HTTP-Paket unter einem TCP-Paket aufgelistet, beide unter IP-Paketen und so weiter.
Neben den Protokollinformationen erfährt der Administrator beispielsweise, wie hoch der Anteil des Protokolls am gesamten Traffic ist, die exakte Anzahl an Paketen oder die Bandbreite eines Protokolls. Wird z.B. bei den Daten-Einträgen unerwartet hohe Werte entdeckt, sollte dieser Verkehr genauer untersucht werden. Hierzu wird der Eintrag mit der rechten Maus zur weiterführenden Analyse markiert. Es öffnet sich ein Kontextmenü, um Pakete z.B. direkt zu filtern oder einzufärben. Aufgrund der hierarchischen Struktur der Liste ist es natürlich nicht möglich, die Protokolle anders zu sortieren oder neu anzuordnen.
Allerdings kann auch eine deduktive Strategie verwendet werden, indem man Protokolle, die nicht von Interesse sind, direkt aus der Ansicht der Protokollhierarchie herausfiltert. Nun kann aus den gefilterten Ergebnissen eine separate Capture-Datei gespeichert werden.
Insgesamt stellt die Technik der Protokollhierarchie eine gute, auch skalierbare Möglichkeit dar, einen ersten Gesamtüberblick über eine Pcap-Datei zu erhalten. Die Protokollhierarchie ist oft Ausgangspunkt für weitere Analysen, weil hier Indizien zu unerwartetem Verkehr bzw. Fehlern zu Tage treten, wie z.B. unerwartete Protokolle oder unerwartete Datenverhältnisse einzelner Protokolle. Oft ist es nicht das Vorhandensein eines Protokolls, das Aufmerksamkeit erzeugt, sondern dessen relativer Anteil.
Lesen Sie im zweiten Teil des Blogartikels, wie Sie das Allegro Network Multimeter als Vorfilter nutzen, um große Capture-Dateien zu filtern und zu strukturieren.