Wireshark ist ein freies Programm zur Analyse und grafischen Aufbereitung von Datenprotokollen (Sniffer). Solche Datenprotokolle verwenden Computer auf verschiedensten Kommunikationsmedien wie dem lokalen Netzwerk oder USB. Das Mitschneiden der Kommunikation kann bei der Fehlersuche oder bei der Bewertung des Kommunikationsinhalts sinnvoll sein.
Wireshark zeigt bei einer Aufnahme sowohl die Protokoll-Header als auch den transportierten 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. [wikipedia]
UI Übersicht
rot: Liste aller Frames
grün: Wireshark Zusammenfassung (kein Bestandteil des Frames)
orange: Frameheader
lila: IPV4 Protokoll Informationen
blau: ICMP Protokoll Informationen
Mitschnittfilter
Filter einrichten
request & response mitschneiden
Filter Beispiele:
- Filter um die ankommenden Frames von einer bestimmten IP-Adresse abzufangen: src host <ip number>
- Filter um die ausgehenden Frames an einer bestimmten IP-Adresse abzufangen: dst host <ip number>
- Im Falle von host <ip number> werden ankommende und ausgehende Nachrichten mitgeschnittten
- Filter um die ein- und ausgehenden Frames an einem bestimmten Port abzufangen: port <port number>
- Filter für UDP Pakete an einem bestimmten Port und an einer bestimmten IP-Adresse abzufangen: udp dst port <port number> and dst host <IP>
- ether host <MAC>
Zusätzlich zu der manuellen Eingabe können die Filter mit einem Editor zusammengebaut werden:
Bsp.: ICMP Frames via ‚tracert‘ Befehl erzeugen
UDP
Das ‚User Datagram Protocol‘, kurz UDP, ist ein minimales, verbindungsloses Netzwerkprotokoll, das zur Transportschicht der Internetprotokollfamilie gehört. UDP ermöglicht Anwendungen den Versand von Datagrammen in IP-basierten Rechnernetzen.
UDP verwendet Ports, um versendete Daten dem richtigen Programm auf dem Zielrechner zukommen zu lassen. Dazu enthält jedes Datagramm die Portnummer des Dienstes, der die Daten erhalten soll. Diese Erweiterung der Host-zu-Host-Übertragung des Internet Protocols auf eine Prozess-zu-Prozess-Übertragung wird als Anwendungsmultiplexen und -demultiplexen bezeichnet.
Zusätzlich bietet UDP die Möglichkeit einer Integritätsüberprüfung an, indem eine Prüfsumme mitgesendet wird. Dadurch können fehlerhaft übertragene Datagramme erkannt und verworfen werden. [wikipedia]
Unter anderem wird bei einer DNS Abfrage UDP verwendet. bei der Ausführung des obigen Beispiels und das Filtern nach ‚udp port 53‘ erhalten wir die folgende Ausgabe:
Wie man hier sehen kann, beinhaltet das UDP Protokoll lediglich folgende Angaben:
- Source port
- Destination
- Length
- Checksum
Die Angaben in den eckigen Klammern sind zusätzliche Informationen von Wireshark.
Weiterhin sehen wir den Aufbau des Frames nach OSI:
- DNS (OSI Layer: 5-7)
- UDP (OSI Layer: 4)
- IP V4 (OSI Layer: 3)
- Ethernet (OSI Layer: 1-2)
TCP Verbindungsaufbau (3 way handshake)
[wikipedia]
TCP Traffic Erzeugung via ‚dig www.aaron.de A +tcp‘ . Beim Aufruf einer Webseite kann es passieren, dass der Traffic seitens wireshark nicht in der richtigen Reihenfolge angezeigt wird.
Handshake Anzeige im Wireshark
tcp port filter
tcp host filter
Bei dem unteren Beispiel wird die Reihenfolge der Frames falsch angezeigt. D.h. die Angabe der Zeit (timestamp) ist nicht korrekt. Da wir wissen, dass der Verbindungsaufbau über TCP mit einem ‚ACK‘ beginnt, können wir in diesem Fall, dass entsprechende Frame erst einmal manuell suchen. Beim Öffnen des Frames ist unter ‚Sequence number: 0‘ zu sehen. Daher handelt es sich bei diesem Frame um das erste Frame.
Die folgende Abbildung zeigt den ersten TCP Frame. Beim ersten Frame handelt es sich um eine ’sync‘ Anfrage. Im Wireshark sieht man, wie der entsprechende Flag gesetzt wurde:
Die Gesamtlänge eines TCP Frames liegt bei 32 Byte:
Bei Auswahl der einzelnen Paket-Bestandteile z.B. ‚Source Port‘ oder ‚ Flags‘ sieht man die entsprechende Größe in Bytes. Bei UDP liegt die Gesamtlänge des Frames by 8 Bytes statt 32 Bytes.
Verbindung folgen
Wireshark bietet die Möglichkeit, dass der Anwender einem Protokoll folgt. In diesem Beispiel habe ich auf eine Webseite via HTTP mein Passwort verändert. Bei einem öffentlichen WLAN ohne entsprechende Sicherheitsvorkehrungen hätte ein Angreifer meinem Stream auf dieser Weise folgen können:
Das Ergebnis des Streams sieht wie folgt aus:
Wie man hier sehen kann, wurde die E-Mail Adresse und das Test-Passwort als Klartext übertragen. Daher sollte man z.B. bei einem öffentlichem Netzwerk keine Daten ohne eine entsprechende Verschlüsselung übertragen. Das gleiche Vorgehen kann entsprechend bei anderen unverschlüsselten Verbindungen wie z.B. FTP Anwendung finden.
Hingegen sieht der Mitschnitt einer SSL-Verbindung wie folgt aus:
Unterstützte Protokolle
Die Liste aller von Wireshark unterstützten Protokolle sind unter ‚Bearbeiten -> Einstellungen -> Protocols‘ zu finden:
Experteninformationen
Diese Anzeige zeigt Auffälligkeiten innerhalb der Datenübertragung und kann durch Auswahl des Kreises (unten links) angezeigt werden. Die Farbe des Kreises richtet sich nach dem Schweregrad.
Durch Auswahl von z.B. der Error Zeile, wird der entsprechende Frame im Frame-Fenster von Wireshark angezeigt und kann anschließend genauer untersucht werden.
Nutzung der Bandbreite
Durch Auswahl von ‚Statistics -> Conversations (de: Verbindungen) können wir den gesamten Traffic z.B. nach verbrauchten Bytes oder Anzahl Pakete auflisten.
In diesem Bespiel habe ich im Hintergrund einen Film gestreamt. Da bei einem Stream der Traffic hauptsächlich vom Server (B) zum Client (A) fließt, habe ich die Sortierung nach (Bytes B->A) vorgenommen.
Durch die unten aufgeführte Filterung werden anschließend nur noch die Frames angezeigt, die zum ausgewähltem Traffic gehören.