|
|
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 23: |
Zeile 23: |
| * So wird zu [[Server Message Block|SMB]]-Paketen, die aus Operationen in Windows-Dateifreigaben stammen, der [[Datei]]- bzw. [[Verzeichnisstruktur|Verzeichnisname]] hinzugefügt, wenn das Öffnen der Datei mit aufgezeichnet wurde | | * So wird zu [[Server Message Block|SMB]]-Paketen, die aus Operationen in Windows-Dateifreigaben stammen, der [[Datei]]- bzw. [[Verzeichnisstruktur|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 | | * Diese speziellen Filter und Protokollmodule kann der Benutzer auch selber erstellen, um zum Beispiel selbst entworfene Übertragungsprotokolle mittels Wireshark effizient untersuchen zu können |
|
| |
| == Installation ==
| |
| # '''apt install wireshark'''
| |
|
| |
| == Wireshark ausführen ==
| |
| ; Zugriff auf Netzwerkschnittstellen
| |
| Mit User-Rechten hat Wireshark keinen Zugriff auf Netzwerkschnittstellen
| |
| * Erfordert standardmäßig Root-Rechte
| |
|
| |
| Starten mit Root-Rechten
| |
| WIRESHARK ENTHÄLT ÜBER EINE MILLION ZEILEN QUELLCODE. FÜHREN SIE IHN NICHT ALS ROOT AUS!
| |
|
| |
| Wireshark ist anfällig für manipulierten Datenverkehr
| |
| * Aufgrund seiner Komplexität und der großen Anzahl an Protokoll-Dissektoren
| |
| ** Denial-of-Service
| |
| ** Ausführung von beliebigem Code
| |
|
| |
| === Capabilities ===
| |
| ; Privilegierte Prozesse (Effektive Benutzer-ID 0)
| |
| * Privilegierte Prozesse umgehen alle Berechtigungsprüfungen des Kernels
| |
|
| |
| ; Unprivilegierte Prozesse (Effektive UID ungleich Null)
| |
| * Unprivilegierte Prozesse unterliegen einer vollständigen Berechtigungsprüfung
| |
| * Basierend auf den Anmeldedaten des Prozesses (normalerweise: effektive UID, effektive GID und zusätzliche Gruppenliste)
| |
|
| |
| ; Unterteillung von Privilegien
| |
| * Einheiten (Capabilities) von Privilegien, die andernfalls Root vorbehalten sind
| |
| * Können unabhängig voneinander aktiviert und deaktiviert werden
| |
| * 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
| |
|
| |
| ; Relevant für Wireshark
| |
| {| class="wikitable sortable options"
| |
| |-
| |
| ! 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
| |
|
| |
| === Aktivieren von Non-root Capture ===
| |
| ==== 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
| |
|
| |
| ==== Zugriffsrechte ====
| |
| ; Gewähren von Fähigkeiten mit setcap
| |
| # '''setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap'''
| |
|
| |
| ; Änderung prüfen
| |
| # '''getcap /usr/bin/dumpcap'''
| |
| /usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip
| |
|
| |
| === Wireshark starten ===
| |
| Führen Sie nun Wireshark als den Benutzer aus, den oben zur Wireshark-Gruppe hinzugefügt haben
| |
| $ '''wireshark &'''
| |
|
| |
| ; Vollständige Liste der Adapter
| |
| Andernfalls
| |
| * Prüfen, ob die Wireshark-Gruppe in der Ausgabe der Gruppen aufgeführt ist
| |
| * Möglicherweise müssen Sie sich ab- und wieder anmelden, damit die Gruppenzuweisung wirksam wird
| |
|
| |
| == Anwendung ==
| |
| === 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====
| |
| {| class="wikitable sortable"
| |
| |-
| |
| ! 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:
| |
| # Größe des Frames
| |
| # Aufgezeichnete Größe (Slicing)
| |
| # 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====
| |
| [[Datei:start_ws.png|mini|400px]]
| |
| 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
| |
|
| |
| [[Datei:stopp_ws.png|mini|400px]]
| |
|
| |
| Datenübertragung stoppen
| |
|
| |
| ===Filter===
| |
| [[Datei:ip_adr_ws.png|mini|500px|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====
| |
| [[Datei:icmp_ws.png|mini|600px|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
| |
|
| |
|
| <noinclude> | | <noinclude> |
|
| |
| == Technische Details ==
| |
| ; ''Wireshark'' stellt entweder während oder nach der Aufzeichnung von Datenverkehr einer Netzwerk-Schnittstelle die Daten in Form einzelner [[Datenpaket|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 [[Internetprotokolle]]n 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.<ref name="wireusb">{{Internetquelle |url=https://wiki.wireshark.org/CaptureSetup/USB |titel=USB capture setup |abruf=2018-06-17}}</ref> Unter [[Microsoft Windows|Windows]] zeichnet ''Wireshark'' den Datenverkehr ab Version 3.0 [[Transparenz (Computersystem)|transparent]] mithilfe von Npcap<ref>{{Internetquelle |url=https://www.wireshark.org/news/20190228.html |titel=Wireshark · Wireshark 3.0.0 Released |abruf=2019-05-15}}</ref> 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
| |
|
| |
|
| == Anhang == | | == Anhang == |
| === Siehe auch === | | === Siehe auch === |
| {{Special:PrefixIndex/{{BASEPAGENAME}}}} | | {{Special:PrefixIndex/{{BASEPAGENAME}}}} |
|
| |
| ==== Sicherheit ====
| |
| ==== Dokumentation ====
| |
| ===== Man-Pages =====
| |
|
| |
| ==== Links ==== | | ==== Links ==== |
|
| |
| ===== Projekt ===== | | ===== Projekt ===== |
| # https://www.wireshark.org | | # https://www.wireshark.org |
|
| |
| ===== Weblinks ===== | | ===== Weblinks ===== |
| # https://de.wikipedia.org/wiki/Wireshark | | # https://de.wikipedia.org/wiki/Wireshark |
|
| |
|
| [[Kategorie:Sniffing]] | | [[Kategorie:Wireshark]] |
| [[Kategorie:Linux/Befehl]]
| |
| [[Kategorie:Netzwerk/Befehl]]
| |
| | |
| </noinclude> | | </noinclude> |