Wireshark

Aus Mikiwiki
Version vom 10. Februar 2010, 19:41 Uhr von Michi (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Wireshark (früher: Ethereal) ist ein Sniffer bzw. Netzwerkprotokoll-Analyzer mit grafischer Oberfläche, die das einfache Durchsuchen der abgefangenen Daten ermöglicht. Er listet alle Pakete auf, sortiert nach Empfänger, Absender, Grösse oder Protokoll. Die Auswahl von "Follow TCP-Stream" beim Rechtsklick auf ein Paket erlaubt es, gesniffte Datenverbindungen wieder zusammenzubauen und somit in der Textansicht zu analysieren, woraus die übertragene Information bestand.

Wireshark saugt eine einstellbare Zeit lang alle Daten von einer Netzwerkschnittstelle ab, filtert die interessanten heraus und verwandelt deren Binärformat in eine leicht lesbare und anschauliche Darstellung.

Syntax

Eine ausführliche Darstellung der Filter-Syntax bietet die Man-Page des Sniffers tcpdump, der ebenso wie Wireshark auf die Capture-Bibliothek Libpcap zurückgreift.

Verwendung

Unter Ubuntu kann Wireshark nicht ohne weiteres über die Befehlszeile gestartet werden. Stattdessen kann es über das Menü "Internet > Wireshark" aufgerufen werden, bei Bedarf auch als Benutzer "root".

Beginn über das Menü "Capture > Interfaces" und dort über die Schaltfläche "Start" der gewünschten Schnittstelle. Über "Options" erreicht man ein Konfigurationsfenster, in dem u. a. Filter gesetzt, Paketgrössen oder die Aufzeichnung beschränkt oder der Endpunkt eines Dumps festgelegt werden kann. Bei aktivierter Checkbox "Capture packets in promiscuous mode" wird nicht nur der Datenverkehr vom sowie zum eigenen Rechner aufgezeichnet, sondern (je nach Netzwerkanbindung des PCs) unter Umständen auch fremde Datenverbindungen. Nach einigen Minuten kann auf "Stop" geklickt werden, danach erfolgt eine Rückkehr zum Hauptbildschirm. Über die Schaltfläche "File > Open..." wird der gespeicherte Dump später wieder geladen.

Filter

Beim Aufzeichnen fällt eine Menge uninteressanter Daten an, die mit Hilfe der Filterfunktionen aussortiert werden können. Unter der Schalterleiste neben dem Icon "Filter:" findet sich ein Eingabefeld, ind das Suchbegriffe wie "http" oder "smtp" direkt eingetragen werden können, um den Datenbestand auf diese Paketart einzuschränken. Bei Klick auf die Schaltfläche "Filter:" wird eine Reihe vordefinierter Suchbegriffe angezeigt. Zum Anlegen eigener Filter wird im neuen Fenster auf die Schaltfläche "Expressions" geklickt - allerdings erfordert die Arbeit mit eigenen Filtern gute Kenntnisse über Netzwerkprotokolle und reguläre Ausdrücke.

Um nur die Pakete eines bestimmten Rechners anzuzeigen wird mit der rechten Maustaste auf ein Paket geklickt, das vom gewünschten Absender stammt. Aus dem Kontextmenü wird dann "Apply as Filter > Selected" gewählt. Umgekehrt blendet die Negierung "Not selected" diese Pakete aus.

Weil stets mehrere Pakete zu einer Unterhaltung zwischen Netzwerkstationen gehören, gibt ein einzelnes Paket meist zu wenig Aufschluss über deren Inhalt sowie Verlauf. Mit der Option "Follow TCP Stream" aus dem Kontextmenü wird die komplette Sitzung rekonstruiert und als ASCII-Text angezeigt.

Um ein im Verlauf der Sitzung übermitteltes Binärpaket (etwa ein Bild) wiederherzustellen, wird die Checkbox "Raw" angeklickt und die Daten mit der entsprechenden Endung (z. B. ".gif") gespeichert, die im Dateiheader steht.

Über den Menüpunkt "Analyze > Enable Protocols" kann die Anzeige auf bestimmte Protokolle eingeschränkt werden.

Zur Suche von Zeichenketten in den Paketen wird das Suchsymbol in der Schalterleiste verwendet. Dabei wird die Checkbox "String" aktiviert und im Textfeld der Suchbegriff eingegeben.

Statistik

Wireshark bringt auch einige Statistik- und Analysemodule mit.

Im Fenster "Analyse > Expert Info" und "Analyse > Expert Composite" wird der Status (Notes, Errors, Warnings) aller eingegangenen Pakete in einer Listenübersicht oder als Zusammenfassung angezeigt.

Im Fenster "Statistics > IO Graphs" wird eine grafischen Echtzeitanalyse der eingehenden Pakete gestartet. Im oberen Fensterteil wird die aktuelle Netzlast aller Pakete wahlweise als Linien- oder Balkendiagramm dargestellt. Über den Filter im unteren Fensterteil kann eingestellt werden, welchen Dienst oder weclhes Protokoll das Diagramm darstellt.Bei einer Mehrfachauswahl können die Daten verschieden eingefärbt werden.

Firewall-Regeln

Wireshark erzeugt auf Wunsch aus den Informationen der eingehenden Pakete direkt die passenden Firewall-Regeln. Dafür wird das Menü "Analyze > Firewall ACL Rules" angeklickt. Im neuen Fenster wird zunächst der verwendete Paketfilter (Normalerweise "Netfilter (iptables)") gewählt. Danach wird direkt eine fertig erzeugte Regel angezeigt, die über das Menü "Filter" weiter bestimmt werden kann. Die Checkboxen "Inbound" und "Deny" geben vor, für welche Richtung die Regel gelten soll und ob die betreffende Verbindung erlaubt oder abgelehnt wird.

Beispiel

Situation: Es ist unklar, ob E-Mails ankommen oder nicht. Vielleicht sieht der eigene Mail-Client nicht nach Post. Vielleicht ist die Adresse falsch, wo er die Post holen will. Vielleicht kann er die Post nicht abholen, weil er sich nicht ausweisen kann. Mit Wireshark kann das Problem geklärt werden.

Möglichkeiten: In einem gesharten LAN, in dem die Teilnehmer über einen Hub verbunden sind, ist die Frage gegenstandslos: hier kann jeder auch die Pakete einfangen, die für andere Teilnehmer im Netz bestimmt sind. Dafür muss nur die eigene Netzwerkschnittstelle in den Promiscuous Mode versetzt werden.

In einem geswitchten LAN sind zwischen den Rechnern virtuelle Exklusivverbindungen geschaltet. Hier gibt es mehrere Möglichkeiten:

  • Grössere Switches haben oft einen besonderen Monitor-Port, der wie der Port eines Hubs funktioniert. Dieser wird mit dem Rechner verbunden, auf dem die Netzwerkanalysesoftware läuft.
  • Bestimmte Hackertechniken, etwa Man-in-the-middle oder das erzwungene Umschalten des Switch auf Hub-Funktion mittels MAC-Flooding.

Falls einer der Kommunikationspartner unerreichbar im Internet residiert, so bleibt nur noch eine Möglichkeit: Wireshark muss auf einem der Endpunkte der Verbindung laufen und dort den Dialog mitschneiden.

Durchführung: Im Beispiel wird Wireshark als Benutzer "root" parallel zum Mail-Client aufgerufen. Seine Rechte werden benötigt, um einen Raw Socket (eine spezielle Schnittstelle zum Netzwerk) einzurichten, über den Wireshark dann Pakete sammelt und eventuell auch verschickt.

  • Auswahl des Menüs "Capture > Options", wo zuerst die Schnittstelle eingestellt wird, welche Pakete sammeln soll.
    • Zusätzlich zu den Hardwareschnittstellen wie "eth0", "ppp0" und "wlan0" lässt sich auch eine Pseudoschnittstelle einrichten, welche die Pakete auf allen verfügbaren Netzwerkschnittstellen gleichzeitig abgreift. Hier lässt sich auch der erwähnte Promiscuous Mode anwählen. Die Option "Limit each packet" beugt hier dem Überlaufen der Festplatte vor, indem von jedem Paket nur der für die Analyse notwendige Teil gespeichert wird, nicht aber die Nutzdaten.
    • Hinter den Capture-Filtern verbergen sich Datensiebe, die unmittelbar beim Sammeln wirken - dies unterscheidet sie von den ebenfalls verfügbaren Display-Filtern unterscheidet, die bloss ins Netz gegangene Pakete von der Anzeige ausschliessen. Beide Filter verwenden eine völlig unterschiedliche Syntax. Die Capture-Filter schränken Wiresharks Sammelwut in jedem Fall ein. Zur Definition eines Filterausdrucksgibt es drei Gruppen von Schlüsselwörtern (Qualifier):
      • Mögliche Typen sind "host", "net" und "port". Mit ihnen lassen sich Ausdrücke bilden, die zu bestimmten Netzen, Rechnern oder Diensten gehören. Beispielsweise bewirkt "host nemo and port 110", dass nur solche Daten eingefangen werden, die an den E-Mail-Dienst (POP3, Port 110) auf dem Rechner "nemo" gerichtet sind oder von da ausgehen.
      • Mögliche Richtungen des Datenverkehrs sind "dst" (destination) für das Ziel oder "src" (source) für die Quelle. Der Ausdruck "src my.mailserver.ch" lässt also nur Pakete Passieren, die vom Mailserver selber stammen.
      • Mögliche Protokolle sind: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp und udp, die alle mit dem Qualifier "proto" einstellen lassen.
      • Die Schlüsselwörter lassen sich mit den Booleschen Operatoren "and", "or" und "not" miteinander kombinieren. Auf die Paketgrösse kann mansich mit "less" oder "greater" beziehen.
  • Beginn des Datensammelns.
  • Aufruf des Mail-Clients, der nach Post suchen soll.
  • Nach dem Stoppen des Datensammelns zeigt das Hauptfenster nun eine numerierte Liste der gesammelten Pakete, wobei das aktuell untersuchte Paket blau hinterlegt ist. Sein Inhalt wird in den folgenden beiden Fensterdritteln dargestellt. Ganz unten findet sich auch eine ASCII-Darstellung des vollständigen Pakets. Der Header wird besser in der Darstellung des mittleren Fensterteils angesehen, der schematisch die ineinander verschachtelten Elemente des Pakets zeigt.
  • Um nicht jedes Paket einzeln untersuchen zu müssen kann diese Aufgabe über das Menü "Analyze > Follow TCP Stream" Wireshark übergeben werden: Der vollständige Dialog erscheint, gut lesbar dargestellt.
  • Daneben können über das Menü "Statistics" auch verschiedene Statistiken aus den gesammelten Paketen erzeugt werden: wer hat mit wem wie ausführlich gesprochen? Welche Datenmenge ist in welcher Richtung durch die Leitung gegangen? Welche Protokolle wurden in welchem Umfang benutzt?

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
Wireshark Foundation eng Wiresharkwbm
Ethereal Inc. eng Etherealwbm
Wikipedia ger Wiresharkwbm Enzyklopädischer Artikel

Anleitung von Chris Sanders (in Englisch)