|
|
(193 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| '''Wireshark''' ist eine freie Software zur Analyse und grafischen Aufbereitung von Datenprotokollen, die 2006 als Fork des Programms '''Ethereal''' (Anspielung auf Ethernet) entstanden ist. | | '''Wireshark''' - Analyse und grafischen Aufbereitung von Datenprotokollen |
| ==Vergangenheit und Zukunft==
| |
| * Vorläufer von Ethereal und Wireshark waren Netzwerk-Analyse-Produkte kommerzieller Hersteller.
| |
| * In Erscheinungsform und Wirkungsweise erinnert manches an diese Vorläufer.
| |
| * Einige sind inzwischen durch das erfolgreiche Open-Source-Projekt Ethereal/Wireshark vom Markt verdrängt und infolgedessen eingestellt worden.
| |
| * Wireshark ist ein paket- und nicht datenorientierter Sniffer.
| |
| * Schwerpunkt ist die Analyse punktueller Probleme.
| |
|
| |
|
| ==Einleitung== | | == Beschreibung == |
| * Solche Datenprotokolle verwenden Computer auf verschiedensten Kommunikationsmedien wie dem lokalen Netzwerk, Bluetooth oder USB.
| | [[Datei:Wireshark Logo.svg|mini|200px]] |
| * 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.
| |
|
| |
|
| ==Menü View==
| | '''Wireshark''' (Kabelhai) ist eine [[freie Software]] zur Analyse und grafischen Aufbereitung von Datenprotokollen ([[Sniffer]]), die 2006 als [[Abspaltung (Softwareentwicklung)|Fork]] des Programms '''Ethereal''' entstanden ist |
| * Im Menü View können einige Eigenschaften der Anzeige verändert werden. | | * [[Netzwerkprotokoll|Datenprotokolle]] verwenden Computer auf verschiedensten Kommunikationsmedien wie dem lokalen Netzwerk, [[Bluetooth]] oder [[USB]] |
| * Nützlich ist die Umschaltung des Formates der Zeitanzeige: '''View / Time Display Format'''. | | * Wireshark kann Administratoren, Netzwerk-Experten und Sicherheits-Experten bei der Suche nach Netzwerkproblemen, der Ermittlung von Botnet-Verbindungen oder beim Netzwerk-Management behilflich sein |
| * Über '''View / Colorize Packet List''' kann das Einfärben der Frames deaktiviert werden.
| | * Wireshark zeigt bei einer Aufnahme sowohl den Protokoll-[[Header|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 (Betriebssystem)|Solaris]], [[macOS|Mac]], [[Microsoft Windows|Windows]] und diversen [[Berkeley Software Distribution|BSD]]-Versionen |
| | * Programmiersprache: [[C (Programmiersprache)|C]] |
| | * Lizenz: [[GNU General Public License|GPL]] ([[freie Software]]) |
|
| |
|
| ==Technische Details==
| | ; Leistungsmerkmale |
| * '''Wireshark''' stellt entweder während oder nach der Aufzeichnung von Datenverkehr einer Netzwerk-Schnittstelle die Daten in Form einzelner Pakete dar.
| | Wireshark fügt bei verschiedenen Protokollen Metainformationen zu Paketen hinzu, die sich nur aus dem Kontext des Datenflusses ergeben |
| * Dabei werden die Daten übersichtlich mit entsprechend auf die jeweiligen Protokolle angepassten Filter aufbereitet.
| | * 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 kann der Inhalt der mitgeschnittenen Pakete betrachtet oder nach diesem gefiltert werden. | | * Diese speziellen Filter und Protokollmodule kann der Benutzer auch selber erstellen, um zum Beispiel selbst entworfene Übertragungsprotokolle mittels Wireshark effizient untersuchen zu können |
| * Wireshark kann auch Statistiken zum Datenfluss erstellen.
| |
| * Über spezielle Filter können gezielt binäre Inhalte wie Bilder u. a. extrahiert werden.
| |
| * Als Netzwerkschnittstellen, deren Datenverkehr analysiert werden kann, sind primär Ethernet mit den verschiedenen Internetprotokollfamilien wie TCP/IP zu nennen.
| |
| * Auch kann Wireshark 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.
| |
| * Unter Windows zeichnet Wireshark den Datenverkehr ab Version 3.0 transparent mit Hilfe von '''Npcap''' 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'''.
| |
| * '''Tshark''' wird über Kommandozeilen-Optionen gesteuert.
| |
| * Für beide Versionen wurde das Aufzeichnungsformat der Messdaten von '''tcpdump''' entlehnt bzw. übernommen.
| |
| * Wireshark kann zusätzlich die Formate anderer LAN-Analyzer einlesen.
| |
|
| |
|
| ==Besondere Leistungsmerkmale==
| | <noinclude> |
| * Wireshark fügt bei verschiedenen Protokollen Metainformationen zu Paketen hinzu.
| |
| * Diese ergeben sich nur aus dem Kontext des Datenflusses.
| |
| * So wird zu SMB-Paketen, die aus Operationen in Windows-Dateifreigaben stammen, der Datei- bzw. Verzeichnisname hinzugefügt.
| |
| ** Nur, wenn das Öffnen der Datei mit aufgezeichnet wurde.
| |
| * Diese speziellen Filter und Protokollmodule kann der Benutzer auch selber erstellen.
| |
| * Zum Beispiel um selbst entworfene Übertragungsprotokolle mittels Wireshark effizient untersuchen zu können.
| |
|
| |
|
| ==Ping und ICMP== | | == Anhang == |
| Netzwerkverkehr aufzeichnen, filtern und auswerten.
| | === Siehe auch === |
| | {{Special:PrefixIndex/{{BASEPAGENAME}}}} |
| | ==== Links ==== |
| | ===== Projekt ===== |
| | # https://www.wireshark.org |
| | ===== Weblinks ===== |
| | # https://de.wikipedia.org/wiki/Wireshark |
|
| |
|
| [[Datei:start_ws.png|zentriert|mini|Capture Interfaces]] | | [[Kategorie:Wireshark]] |
| | | </noinclude> |
| * 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|zentriert|mini|Protokollverteilung beim Aufzeichnen]]
| |
| | |
| * Datenübertragung stoppen.
| |
| | |
| ===Testdaten erzeugen===
| |
| * Beispiel:
| |
| ** Ping auf den Host www.google.de
| |
| ** In einer Shell oder Eingabeaufforderung das Kommando ping www.google.de eingeben.
| |
| C:\>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 im Capture-Fenster 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.
| |
| | |
| ===Filter===
| |
| * 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
| |
| [[Datei:ip_adr_ws.png|zentriert|Filtern]]
| |
| * Als IP-Adresse setzen wir die IP-Adresse des Sniffers ein (wurde unter Capture / Interfaces angezeigt).
| |
| * 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===
| |
| * 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
| |
| * Anzeige: alle ICMP-Pakete[[Datei:Icmp.png|zentriert|Alle ICMP-Pakete]]
| |
| * In der Anzeige sind jetzt nur noch ICMP-Pakete unserer eigenen IP-Adresse zu sehen.
| |
| | |
| ==Frames==
| |
| * Das Hauptfenster von Wireshark teilt sich in drei Bereiche:
| |
| ** die Paketliste (engl. packet list pane),
| |
| ** die Paketdetails (engl. packet details pane) und
| |
| ** die Hexadezimale Paketanzeige (engl. packet bytes pane).
| |
| * Die in der Paketliste angezeigten Spalten können über die Menüauswahl ''Edit / Preferences** ausgewählt werden.
| |
| ===Paketliste===
| |
| * Die Spalte No. zeigt die Nummer des Frames an.
| |
| * Durch den aktiven Filter müssen die Nummern jetzt nicht fortlaufend sein.
| |
| * Die Spalte ''Source'' zeigt den Absender eine Frames an.
| |
| * In der Spalte ''Destination'' steht der Empfänger des Frames.
| |
| * Die Spalte ''Protocol'' gibt das Protokoll in diesem Frame an.
| |
| * Die Spalte ''Info'' enthält zusätzliche Angaben zum Frame.
| |
| * Alle ICMP Echo Request sollten von unserer eigenen IP-Adresse zu einer IP-Adresse von Google laufen.
| |
| * Die ICMP Echo Replies sollten als Source die Google-IP enthalten.
| |
| ===Paketdetails===
| |
| * Im mittleren Teil des Bildschirm 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 vorgehenden 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-Layer 2 (Ethernet).
| |
| * Dort ist 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)
| |
| * Layer 3: 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 Kodierung 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
| |
| | |
| ==Capture Filter==
| |
| *Im Gegensatz zu einem Display Filter wirkt der Capture Filter schon beim Aufzeichen der Frames.
| |
| * Nur Traffic der dem Capture Filter entspricht, wird aufgezeichnet.
| |
| * Capture-Filter werden eingesetzt, wenn nur ein kleiner Teil des Datenverkehrs aufgezeichnet werden soll.
| |
| ===Syntax===
| |
| * Die grundsätzliche Syntax für Capture-Filter in Wireshark sieht wie folgt aus:
| |
| [not] Filterausdruck [and|or [not] Filterausdruck ...]
| |
| * Die folgenden Filterausdrücke stehen zur Verfügung:
| |
| [src|dst] host <host>
| |
| * Mit diesem Ausdruck kann der Traffic nach IP-Adressen gefiltert werden.
| |
| * Mit dem Zusatz '''src''' oder '''dst''' kann der Filter auf eine Absender- oder Empfänger-Adresse eingegrenzt werden.
| |
| ether [src|dst] host <host>
| |
| * Dieser Ausdruck grenzt den Trace auf bestimmte MAC-Adressen ein.
| |
| * Auch hier kann auf Absender und Empfänger eingeschränkt werden.
| |
| gateway host <host>
| |
| * Dieser Ausdruck filtert auf Packete, die host als Gateway/Router nutzen.
| |
| | |
| ===Operatoren===
| |
| * Auch in Capture Filtern erlaubt Wireshark die Nutzung einiger Operatoren.
| |
| {| class="wikitable"
| |
| |-
| |
| !Operator !!Beschreibung
| |
| |-
| |
| | ! oder not ||Negation
| |
| |-
| |
| |&& oder and||logische UND-Verknüpfung
| |
| |-
| |
| | ll oder or ||logische ODER-Verknüpfung
| |
| |-
| |
| |& ||bitweise UND-Verknüpfung
| |
| |}
| |
| | |
| ===Zugriff auf Inhalte ab einem Offset===
| |
| * Neben den vordefinierten Filterausdrücken erlaubt Wireshark den Zugriff auf alle Inhalte eines Frames.
| |
| * Dazu können Bytes ab einem Offset maskiert und verglichen werden.
| |
| * Die Syntax für diesen Zugriff lautet:
| |
| protokoll[Offset in Bytes vom Beginn des Headers:Anzahl der Bytes]
| |
| * Es können 1, 2 oder 4 Bytes verglichen werden.
| |
| * Wird keine Anzahl angegeben, wird nur 1 Byte verglichen.
| |
| * Der Vergleichswert kann dezimal oder hexadezimal (0x) angegeben werden.
| |
| {| class="wikitable"
| |
| |-
| |
| |ip[8] = 1 ||Filter auf das 8 Bytes des IP-Headers (TTL)
| |
| |-
| |
| |tcp[0:2] = 22|| Filter auf die ersten beiden Bytes des TCP-Headers (Port-Nummer)
| |
| |-
| |
| |tcp[13] = 2 ||Filter auf Byte 13 des TCP-Headers (Flags). Segemente die nur das SYN-Flag gesetzt haben passieren diesen Filter.
| |
| |-
| |
| |tcp[13] & 0x02 = 2 ||Hier wird das Byte 13 zuerst mit 0x02 maskiert. Dadurch passieren alle TCP-Segemente mit gesetztem SYN-Flag den Filter. Die anderen Flags sind ausgeblendet.
| |
| |}
| |
| | |
| ==Links==
| |
| ===extern===
| |
| * https://de.wikipedia.org/wiki/Wireshark?veaction=edit
| |
| * http://www.nwlab.net/tutorials/wireshark/wireshark-tutorial-2.html#ping
| |
| * http://www.nwlab.net/tutorials/wireshark/wireshark-tutorial-4.html#teil4
| |
| | |
| | |
| [[Category:Netzwerke]]
| |