Wireshark

Aus Foxwiki

Wireshark - Analyse und grafischen Aufbereitung von Datenprotokollen

Beschreibung

Wireshark Logo

Wireshark (Kabelhai“) ist eine freie Software zur Analyse und grafischen Aufbereitung von Datenprotokollen (Sniffer), die 2006 als Fork des Programms Ethereal entstanden ist.

  • Datenprotokolle verwenden Computer auf verschiedensten Kommunikationsmedien wie dem lokalen Netzwerk, Bluetooth oder USB.
  • Das Netzwerk-Analyse-Tool kann Administratoren, Netzwerk-Experten und Sicherheits-Experten bei der Suche nach Netzwerkproblemen, der Ermittlung von Botnet-Verbindungen oder beim Netzwerk-Management behilflich sein.
  • freie Software
Wireshark zeigt bei einer Aufnahme sowohl den Protokoll-Kopf als auch den übertragenen Inhalt an
  • Das Programm stützt sich bei der grafischen Aufbereitung auf die Ausgabe von kleinen Unterprogrammen wie pcap oder usbpcap, um den Inhalt der Kommunikation auf dem jeweiligen Übertragungsmedium mitzuschneiden.
  • Datenprotokolle verwenden Computer auf verschiedensten Kommunikationsmedien wie dem lokalen Netzwerk, Bluetooth oder USB.
  • Hilft bei der Suche nach Netzwerkproblemen, der Ermittlung von Botnet-Verbindungen oder beim Netzwerk-Management.
  • Wireshark zeigt bei einer Aufnahme sowohl den Protokoll-Kopf als auch den übertragenen Inhalt an.
  • Das Programm stützt sich bei der grafischen Aufbereitung auf die Ausgabe von kleinen Unterprogrammen wie pcap oder usbpcap.
  • Der Inhalt der Kommunikation auf dem jeweiligen Übertragungsmedium wird mitgeschnitten.
  • Hersteller: Wireshark-Community
  • Betriebssystem: Unix, Linux, Solaris, Mac, Windows und diversen BSD-Versionen
  • Programmiersprache: C
  • Lizenz: GPL (freie Software)
Besondere Leistungsmerkmale

Wireshark fügt bei verschiedenen Protokollen Metainformationen zu Paketen hinzu, die sich nur aus dem Kontext des Datenflusses ergeben.

  • So wird zu SMB-Paketen, die aus Operationen in Windows-Dateifreigaben stammen, der Datei- bzw. Verzeichnisname hinzugefügt, wenn das Öffnen der Datei mit aufgezeichnet wurde.
  • Diese speziellen Filter und Protokollmodule kann der Benutzer auch selber erstellen, um zum Beispiel selbst entworfene Übertragungsprotokolle mittels Wireshark effizient untersuchen zu können.

Technische Details

Das Werkzeug Wireshark stellt entweder während oder nach der Aufzeichnung von Datenverkehr einer Netzwerk-Schnittstelle die Daten in Form einzelner Pakete dar.
  • Dabei werden die Daten übersichtlich mit entsprechend auf die jeweiligen Protokolle angepassten Filtern aufbereitet.
  • So kann der Inhalt der mitgeschnittenen Pakete betrachtet oder nach diesem gefiltert werden.
  • Wireshark kann auch Statistiken zum Datenfluss erstellen oder über spezielle Filter gezielt binäre Inhalte wie Bilder u. a. extrahieren.
Als Netzwerkschnittstellen, deren Datenverkehr analysiert werden kann, sind primär Ethernet mit den verschiedenen Internetprotokollfamilien wie TCP/IP zu nennen.
  • Ferner kann Wireshark auch drahtlosen Datenverkehr im Wireless Local Area Network (WLAN) und Bluetooth-Verbindungen aufzeichnen und analysieren. Über entsprechende Module lassen sich weitere übliche Schnittstellen wie USB in Wireshark integrieren.[1] Unter Windows zeichnet Wireshark den Datenverkehr ab Version 3.0 transparent mithilfe von Npcap[2] auf.
  • Bis zur Version 3.0 wurde WinPcap verwendet.
  • Voraussetzung dafür ist immer, dass der jeweilige Rechner, auf dem Wireshark betrieben wird, über die entsprechenden physischen Schnittstellen verfügt und der Benutzer entsprechende Zugriffsberechtigungen auf diese Schnittstellen hat.
Neben der grafischen Wireshark-Version gibt es das auf demselben Netzwerkcode basierende Tshark, das über Kommandozeilen-Optionen gesteuert wird.
  • Für beide Versionen wurde das Aufzeichnungsformat der Messdaten von tcpdump entlehnt bzw. übernommen.
  • Gleichwohl kann Wireshark zusätzlich die Formate anderer LAN-Analyzer einlesen.

Wireshark als Nicht-Root-Benutzer

Wird Wireshark mit User-Rechten ausgeführt, ist kein Zugriff auf Netzwerkschnittstellen möglich
  • Den Zugriff auf Netzwerkschnittstellen erfordert standardmäßig Root-Rechte
Starten mit Root-Rechten

Schlechte Idee

  • Wie ein älteres Gentoo Linux ebuild von Wireshark warnt:
WIRESHARK ENTHÄLT ÜBER EINE MILLION ZEILEN QUELLCODE. FÜHREN SIE IHN NICHT ALS ROOT AUS.

Wireshark ist aufgrund seiner Komplexität und der schieren Anzahl seiner vielen Protokoll-Dissektoren anfällig für fehlerhaften Datenverkehr (versehentlich oder anderweitig), was zu Denial-of-Service-Bedingungen oder möglicherweise zur Ausführung von beliebigem Code führen kann.

Aktivieren von Non-root Capture

setcap installieren

Damit können granulare Fähigkeiten für Wiresharks dumpcap-Executable festgelegt werden.

  • setcap ist Teil des Pakets libcap2-bin
# apt install libcap2-bin

Erstellen einer Wireshark-Gruppe

Da die Anwendung, der wir erweiterte Fähigkeiten zugestehen, standardmäßig von allen Benutzern ausgeführt werden kann, möchten Sie vielleicht eine spezielle Gruppe für die Wireshark-Familie von Dienstprogrammen (und ähnliche Anwendungen) hinzufügen und ihre Ausführung auf Benutzer innerhalb dieser Gruppe beschränken.

# groupadd wireshark
# usermod -a -G wireshark user

Nachdem Sie sich selbst zur Gruppe hinzugefügt haben, muss sich Ihr normaler Benutzer möglicherweise ab- und wieder anmelden.

  • Sie können auch newgrp ausführen, um die neue Gruppe zu erzwingen (Sie müssen Wireshark in Schritt 3 aus derselben Terminalumgebung starten):
$ newgrp wireshark

Wir weisen dieser Gruppe die ausführbare Datei dumpcap anstelle von Wireshark selbst zu, da dumpcap für die gesamte Low-Level-Erfassung zuständig ist.

  • Durch Ändern des Modus auf 750 wird sichergestellt, dass nur Benutzer, die zu dieser Gruppe gehören, die Datei ausführen können.
# chgrp wireshark /usr/bin/dumpcap
# chmod 750 /usr/bin/dumpcap

Erteilen von Zugriffsrechten

Das Gewähren von Fähigkeiten mit setcap ist eine einfache Angelegenheit:

# setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap

Falls Sie sich wundern, das =eip-Bit nach der Liste der Fähigkeiten gewährt diese in den effektiven, vererbbaren bzw. erlaubten Bitmaps.

Änderung überprüfen

# getcap /usr/bin/dumpcap
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip

Führen Sie nun Wireshark als den Benutzer aus, den wir in Schritt 2 zur Wireshark-Gruppe hinzugefügt haben.

  • Sie sollten nun die vollständige Liste der verfügbaren Adapter sehen und können mit dem Sniffing beginnen. (Falls nicht, überprüfen Sie, ob die Wireshark-Gruppe in der Ausgabe der Gruppen aufgeführt ist.
  • Möglicherweise müssen Sie sich ab- und wieder anmelden, damit die neue Gruppenzuweisung wirksam wird).

Dateisystem-Fähigkeiten

Was sind Dateisystem-Fähigkeiten?

Um Berechtigungsprüfungen durchführen zu können, unterscheiden traditionelle Unix-Implementierungen zwei Kategorien von Prozessen: privilegierte Prozesse (deren effektive Benutzer-ID 0 ist und die als Superuser oder Root bezeichnet werden) und unprivilegierte Prozesse (deren effektive UID ungleich Null ist).

  • Privilegierte Prozesse umgehen alle Berechtigungsprüfungen des Kernels, während unprivilegierte Prozesse einer vollständigen Berechtigungsprüfung unterliegen, die auf den Anmeldedaten des Prozesses basiert (normalerweise: effektive UID, effektive GID und zusätzliche Gruppenliste).
  • Seit Kernel 2.2 unterteilt Linux die Privilegien, die traditionell mit dem Superuser verbunden sind, in verschiedene Einheiten, die als Capabilities bezeichnet werden und die unabhängig voneinander aktiviert und deaktiviert werden können.
  • Capabilities sind ein Attribut pro Thread.

Das Handbuch listet mehr als zwei Dutzend verschiedene POSIX-Fähigkeiten auf, die einzelnen ausführbaren Programmen gewährt werden können.

Für das Sniffing sind wir speziell an zwei interessiert
Option Beschreibung
CAP_NET_ADMIN Erlaubt verschiedene netzwerkbezogene Operationen (z.B. Setzen von privilegierten Socket-Optionen, Aktivieren von Multicasting, Schnittstellenkonfiguration, Ändern von Routing-Tabellen).
CAP_NET_RAW Erlaubt die Verwendung von RAW- und PACKET-Sockets.
  • CAP_NET_ADMIN ermöglicht es uns, eine Schnittstelle in den Promiscuous-Modus zu versetzen, und
  • CAP_NET_RAW erlaubt den Raw-Zugriff auf eine Schnittstelle, um direkt über die Leitung zu erfassen.

Diese Fähigkeiten werden mit dem Dienstprogramm setcap zugewiesen.

Anwendungen

Oberfläche

Hauptfenster von Wireshark

  • Paketliste (engl. packet list pane)
  • Paketdetails (engl. packet details pane) und
  • Hexadezimale Paketanzeige (engl. packet bytes pane).

Menü-Übersicht

  • Im Menü Ansicht können einige Eigenschaften der Anzeige verändert werden.
  • So kann die Anzahl und Art der Paketfenster bestimmt werden
  • Nützlich ist die Umschaltung des Formates der Zeitanzeige: Ansicht/Format der Zeitanzeige.
  • Über Ansicht/Paketliste einfärben kann das Einfärben der Frames aktiviert/deaktiviert werden.

Paketliste

Spalte Beschreibung
No Nummer des Frames
Source Absender eine Frames
Destination der Empfänger des Frames
Protocol Protokoll im Frame
Info zusätzliche Informationen zum Frame

Spalten der Paketliste können über die Menüauswahl Ansicht ausgewählt werden.

Paketdetails

Im mittleren Teil des Bildschirms werden die Details zum ausgewählten Frame angezeigt.

  • Zuerst ein ICMP Echo Request in der Paketliste auswählen.
  • In den Paketdetails werden die Layer (Schichten) des Datenframes angezeigt.
  • Durch Anklicken des Plus-Symbols kann der gewählte Layer erweitert werden.
  • Ganz oben in den Paketdetails findet man Informationen von Wireshark zum betreffenden Frame:
  1. Größe des Frames,
  2. Aufgezeichnete Größe (Slicing),
  3. Zeit und Zeitdifferenz zum vorhergehenden Frame.
Frame 6086 (74 bytes on wire, 74 bytes captured)
   Arrival Time: Feb 23, 2006 15:18:20.081749000
   Time delta from previous packet: 3211.323936000 seconds
   Time since reference or first frame: 3211.323936000 seconds
   Frame Number: 6086
   Packet Length: 74 bytes
   Capture Length: 74 bytes
   Protocols in frame: eth:ip:icmp:data
  • Die nächste Zeile liefert Informationen zum OSI-02 (Ethernet).
  • Dort sind die MAC-Adressen von Absender und Empfänger.
    • Die MAC-Adresse des Empfängers wird im Normalfall die MAC-Adresse des Default Routers sein.
Ethernet II, Src: 192.168.2.157 (00:30:f1:ee:90:7b), Dst: 192.168.2.1 (00:30:f1:f5:0e:5b)
   Destination: 192.168.2.1 (00:30:f1:f5:0e:5b)
   Source: 192.168.2.157 (00:30:f1:ee:90:7b)
   Type: IP (0x0800)
  • 03: Internet Protocol (IP).
  • Dort sind Angaben wie IP-Flags, die Time to live (TTL), das Protokoll und Absender- und Empfänger-IP-Adressen.
Internet Protocol, Src: 192.168.2.157 (192.168.2.157), Dst: 66.249.93.104 (66.249.93.104)
   Version: 4
   Header length: 20 bytes
   Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
       0000 00.. = Differentiated Services Codepoint: Default (0x00)
       .... ..0. = ECN-Capable Transport (ECT): 0
       .... ...0 = ECN-CE: 0
   Total Length: 60
   Identification: 0x0fd3 (4051)
   Flags: 0x00
       0... = Reserved bit: Not set
       .0.. = Don't fragment: Not set
       ..0. = More fragments: Not set
   Fragment offset: 0
   Time to live: 128
   Protocol: ICMP (0x01)
   Header checksum: 0xc747 [correct]
       Good: True
       Bad : False
   Source: 192.168.2.157 (192.168.2.157)
   Destination: 66.249.93.104 (66.249.93.104)
  • In der letzten Zeile in den Paketdetails wird das Internet Control Message Protocol (ICMP) dekodiert.
  • ICMP nutzt eine Codierung, bestehend aus Type und Code.
    • Type 8, Code 0 ist ein ICMP Echo Request.
Internet Control Message Protocol
   Type: 8 (Echo (ping) request)
   Code: 0
   Checksum: 0x475c [correct]
   Identifier: 0x0300
   Sequence number: 0x0300
   Data (32 bytes)
  • Im Hexdump des Frames ist zu erkennen, dass Windows beim Ping das Alphabet als Nutzlast (Payload) benutzt.
0000  00 30 f1 f5 0e 5b 00 30 f1 ee 90 7b 08 00 45 00   .0...[.0...{..E.
0010  00 3c 0f d3 00 00 80 01 c7 47 c0 a8 02 9d 42 f9   .........G....B.
0020  5d 68 08 00 47 5c 03 00 03 00 61 62 63 64 65 66   ]h..G\....abcdef
0030  67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76   ghijklmnopqrstuv
0040  77 61 62 63 64 65 66 67 68 69                                wabcdefghi

Display-Filter

Netzwerkverkehr aufzeichnen, filtern und auswerten.

  • Zeigt nur STMP (Port 25) und ICMP-Traffic
  • Schaltfläche ...mit diesem Filter: wird der Filter eingegeben, mit dem gesucht werden soll.
  • Anschließend die gewünschte (aktive) Verbindung auswählen.
  • Die Aufzeichnung der Datenübertragung starten.
  • Die Aufzeichnung läuft und Wireshark zeigt in einem Statusfenster die Anzahl der aufgezeichneten Frames (Captured Packets) an.
  • Datenübertragung stoppen.

Filter

Filtern

Das wichtigste Instrument zum Auswerten von Traces sind Filter.

  • Mit Filtern wird die Anzeige auf die interessanten Frames eingeschränkt.
  • Um nur noch Traffic von und zu unserer eigenen IP-Adresse zu sehen, geben wir im Eingabefeld Filter von Wireshark folgenden Ausdruck ein:
ip.addr == 192.168.1.2
  • Als IP-Adresse setzen wir die IP-Adresse des Sniffers ein, also unsere eigene.
  • Wireshark zeigt nun nur noch Frames an, die diese Filterbedingung erfüllen.
  • Mit der Schaltfläche Clear kann die Filterbedingung gelöscht werden.

Filter erweitern

ICMP-Pakete

Anzeige weiter einschränken:

  • Nur der Traffic des Ping-Kommandos ist interessant. Ping nutzt ein Protokoll namens ICMP.

Filterbedingung entsprechend erweitern:

ip.addr == 192.168.1.2 && icmp

Mit dem Operator && werden die einzelnen Filterbedingungen UND-verknüpft.

  • icmp schränkt die Anzeige auf das Protokoll ICMP ein
  • In der Anzeige sind jetzt nur noch ICMP-Pakete unserer eigenen IP-Adresse zu sehen.

Testdaten erzeugen

Beispiel
  • Ping auf den Host www.google.de
  • In einer Shell oder Eingabeaufforderung das Kommando ping www.google.de eingeben.
$ ping www.google.de
Ping www.google.de [66.249.93.104] mit 32 Bytes Daten:
Antwort von 66.249.93.104: Bytes=32 Zeit=76ms TTL=243
Antwort von 66.249.93.104: Bytes=32 Zeit=77ms TTL=243
Antwort von 66.249.93.104: Bytes=32 Zeit=75ms TTL=244
Antwort von 66.249.93.104: Bytes=32 Zeit=75ms TTL=243
Ping-Statistik für 66.249.93.104:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 75ms, Maximum = 77ms, Mittelwert = 75ms
  • Jetzt halten wir die Datenaufzeichnung im Wireshark mit der Schaltfläche Stop an.
  • Wireshark bereitet die aufgezeichneten Frames nun auf und zeigt sie an.
  • Da beim Aufzeichnen keinen Filter gesetzt wurde, ist sämtlicher Netzwerkverkehr mitgeschnitten worden.

Installation

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Anwendung

Fehlerbehebung

Konfiguration

Dateien

Sicherheit

Anhang

Siehe auch

Sicherheit

Dokumentation

Man-Pages

Links

Projekt
  1. https://www.wireshark.org
Weblinks
  1. https://de.wikipedia.org/wiki/Wireshark
  2. http://www.nwlab.net/tutorials/wireshark
  3. Netzwerkanalyse mit WiresharkAdmin-Magazin, aus der Ausgabe 05/2011
  4. Analyse mit tcpdump/wiresharkButschek.de, am 24. April 2009
  5. Wireshark – günstige Sniffer-AlternativeComputerwoche, am 11. Oktober 2006
  6. Ethereal (Wireshark) Tutorial – Seite bei Easy-Network
  7. Wireshark Tutorial Teil 1 – Seite bei Network Lab
  8. Wireshark-Homepage
  9. Packetyzer – alternative Oberfläche für Ethereal (Windows)