Workshops bei Wireshark

Julia Evans, die Autorin des Materials, das wir heute veröffentlichen, hat beschlossen, über eines ihrer bevorzugten Netzwerk-Tools namens Wireshark zu sprechen. Dies ist ein leistungsstarkes und komplexes Programm, das mit einer grafischen Oberfläche ausgestattet ist, um den Verkehr in Computernetzwerken zu analysieren. Julia sagt, dass sie in der Praxis nur einige der Funktionen von Wireshark verwendet, aber diese sind normalerweise nützlich. Hier möchte sie mit allen teilen, die eine Geschichte über die nützlichsten Methoden der Arbeit mit dem Programm wünschen, und hofft, dass sie nicht nur für sie, sondern auch für alle nützlich sind, die Netzwerkprobleme lösen müssen.



Installieren Sie Wireshark


Wireshark-Distributionen für verschiedene Betriebssysteme finden Sie hier . Um das Programm zu installieren, können Sie die entsprechende Datei herunterladen und installieren. Wenn Sie Linux-Distributionen verwenden, die auf Debian basieren, können Sie sudo apt install wireshark Befehl sudo apt install wireshark . Wenn Sie die neueste Version des Programms finden möchten, können Sie sich auf das persönliche Archiv der wireshark-dev- Pakete beziehen.

So sieht die Programmoberfläche aus.


Wireshark-Schnittstelle

Auf den ersten Blick mag dies alles zu kompliziert erscheinen: eine lange Liste von Paketen, ein mysteriöses Feld für die Eingabe von Anfragen ... Wie arbeite ich mit Wireshark?

Analyse von PCAP-Dateien


Normalerweise benutze ich Wireshark, um die Ursachen von Netzwerkproblemen herauszufinden. Die Abfolge der Aktionen, die zur Lösung solcher Probleme ausgeführt werden, sieht folgendermaßen aus:

  1. Erfassen Sie Pakete mit tcpdump (normalerweise mit einem Befehl wie sudo tcpdump port 443 -w output.pcap ).
  2. Kopieren der pcap-Datei auf einen funktionierenden Laptop ( scp host:~/output.pcap . ).
  3. Öffnen einer pcap-Datei mit Wireshark ( wireshark output.pcap ).

Wie Sie sehen können, ist alles sehr einfach. Nachdem die pcap-Datei im Programm geöffnet wurde, haben Sie möglicherweise eine logische Frage, was Sie mit all dem tun sollen. Reden wir darüber.

TCP-Verbindungsanalyse


Wenn ich eine bestimmte Situation in Wireshark analysiere, muss ich häufig eine bestimmte TCP-Verbindung überprüfen, mit der aus irgendeinem Grund etwas nicht stimmt. Dank Wireshark können Sie den gesamten Lebenszyklus einer einzelnen TCP-Verbindung analysieren und die Ursachen für falsches Systemverhalten herausfinden.

Klicken Sie dazu mit der rechten Maustaste auf das gewünschte Paket und wählen Sie im Kontextmenü den Befehl Conversation filter > TCP .


Starten Sie die TCP-Verbindungsanalyse

Danach zeigt Wireshark andere Pakete von derselben TCP-Verbindung an, zu der das Paket gehört, auf das Sie geklickt haben. In der folgenden Abbildung sehen Sie ein Beispiel für eine erfolgreiche SSL-Verbindung: Es gibt client hello , service hello , certificate und server key exchange , die zum Herstellen von SSL-Verbindungen verwendet werden.


TCP-Verbindungsanalyse

Die hier beschriebene TCP-Paketanalysetechnik musste ich an dem Tag anwenden, an dem dieser Artikel bei der Arbeit geschrieben wurde. Einige Verbindungen wurden getrennt, und ich bemerkte, dass der client hello nach dem Senden des client hello Pakets das FIN ACK Paket gesendet hat, wodurch die TLS-Verbindung beendet wurde. Was ich herausfinden konnte, erwies sich als nützlich, da klar wurde, dass der Client und nicht der Server die Verbindung beendeten. Infolgedessen stellte ich sofort fest, dass das Problem beim Kunden liegt, und ich muss darauf achten.

Das Obige ist ein für mich sehr typisches Schema für die Arbeit mit Wireshark. Normalerweise sind Client und Server an der Verbindung beteiligt, und entweder auf dem Client oder auf dem Server ist ein Fehler aufgetreten. Dies kann beispielsweise ein Fehler in den Systemeinstellungen sein. Infolgedessen bietet uns Wireshark eine unschätzbare Hilfe bei der Identifizierung des Täters der Probleme und hilft herauszufinden, ob es sich um einen Client oder einen Server handelt.

Als Team dekodieren


Um zu verstehen, was genau ein bestimmtes Paket ist, verwendet Wireshark Portnummern, und dieser Ansatz funktioniert normalerweise. Wenn ein Programm beispielsweise Datenverkehr auf Port 80 sieht, entscheidet es, dass es sich um HTTP-Datenverkehr handelt, und normalerweise ist dies der Fall.

Manchmal verwenden HTTP-Verbindungen jedoch ungewöhnliche Ports. Daher benötigt Wireshark Hinweise, um sie zu erkennen. Solche Hinweise können dem Programm gegeben werden, indem das Paketkontextmenü aufgerufen und dort der Befehl Decode as . Außerdem können Sie Wireshark mitteilen, welches Protokoll zum Übertragen von Paketen über einen bestimmten Port verwendet wird. Diese Hinweise vereinfachen die Datenanalyse.

Paketinhalt anzeigen


In Wireshark gibt es einfach einen reizvollen Modus zum Anzeigen detaillierter Informationen zu einem Paket, mit dem Sie den Inhalt jedes Pakets verstehen können. Nehmen Sie zum Beispiel das Paket mit der client hello Nachricht aus dem vorherigen Beispiel. Dies ist das erste Paket der SSL-Verbindung, der Client mit seiner Hilfe sagt: „Hallo! Hier bin ich! "

Wireshark bietet dem Netzwerkadministrator zwei unglaublich nützliche Tools zum Überprüfen des Paketinhalts. Der erste ist ein Anzeigemodus, in dem Sie die für das Paket verfügbaren Header (z. B. Ethernet-Header, IP-Header, TCP-Header) erweitern und deren Inhalt anzeigen können.


Paket-Header-Analyse

Die zweite Art, Pakete anzuzeigen, ist ein echtes Wunder. Hier sehen Sie die Rohpaketdaten als eine Folge von Bytes. Und was besonders schön ist, wenn Sie mit der Maus über ein Byte fahren (in der folgenden Abbildung befindet sich der Cursor beispielsweise auf dem in tiles.services.mozilla.com enthaltenen tiles.services.mozilla.com ), zeigt tiles.services.mozilla.com das Programm in der Statusleiste an, zu welchem ​​Feld es gehört dieses Byte (in diesem Fall das Feld ssl.handshake.extensions_server_name ) und den von Wireshark für dieses Feld verwendeten Codenamen (in diesem Fall - ssl.handshake.extensions_server_name )


Rohpaketdatenanalyse

Paketsuche


Wireshark unterstützt eine leistungsstarke Abfragesprache. Dies vereinfacht die Suche nach bestimmten Paketen in Listen erheblich. Normalerweise verwende ich bei der Arbeit mit einem Programm sehr einfache Abfragen. Hier einige Beispiele:

  • Der frame contains "mozilla" -Abfrage, mit der Sie an einer beliebigen Stelle im Paket nach der mozilla Zeile suchen und die gefundenen Pakete auflisten können.
  • Die tcp.port == 443 zeigt Pakete an, die den TCP-Port 443 verwenden.
  • Die Abfrage dns.resp.len > 0 zeigt alle DNS-Antworten an
  • Die ip.addr == 52.7.23.87 zeigt Pakete an, deren Quell- oder Ziel-IP-Adresse 52.7.23.87 lautet.

Die Wireshark-Abfragesprache verfügt über wesentlich größere Funktionen als die Abfragesprache tcpdump (und unterstützt außerdem die automatische Vervollständigung durch Drücken der TAB-Taste). Infolgedessen verwende ich häufig die folgende Abfolge von Aktionen: Ich erfasse eine große Menge von Paketen mit tcpdump (etwa alle Pakete von Port 443) und untersuche sie dann sorgfältig mit Wireshark.

Details zur Dauer der TCP-Verbindung anzeigen


Manchmal muss ich besonders auf das Studium langsamer TCP-Verbindungen achten. Wie geht das, vorausgesetzt, meine Datei enthält Aufzeichnungen von Tausenden von Paketen? Wie finde ich langsame TCP-Verbindungen?

Wenn Sie im Hauptmenü des Programms Statistics und im Befehl Conversations Option Statistics auswählen, stellt Wireshark uns wunderbare statistische Informationen zur Verfügung.


Statistische Informationen

Insbesondere können Sie hier in der Spalte Dauer die Dauer von TCP-Verbindungen anzeigen, die längste von ihnen identifizieren und sie sorgfältig untersuchen. Dies ist eine sehr nützliche Funktion.

Wireshark Update


Wenn Sie Wireshark schon lange nicht mehr aktualisiert haben, lohnt es sich, dies zu tun. Zum Beispiel habe ich kürzlich auf einem funktionierenden Laptop nach HTTP / 2-Paketen gesucht. Damals war es nicht einfach für mich und ich beschloss, mir die Dokumentation anzusehen. Wie sich herausstellte, hatte ich eine alte Version des Programms. In dem von mir installierten Update wurde die HTTP / 2-Unterstützung erheblich verbessert, dh es gab genau das, was ich damals brauchte.

Verwenden von Wireshark zum Erlernen von Netzwerkprotokollen


Dieser Artikel enthält einige Begriffe, die auf die Fachsprache der Netzwerkspezialisten zurückgeführt werden können. Beispiel: Frame, TCP-Port (TCP-Port), DNS-Antwort (DNS-Antwort), Quell-IP-Adresse (Quell-IP-Adresse), client hello Paket-SSL-Verbindungen (SSL-Client-Hallo). Einer der Gründe für ihre Verwendung ist die Tatsache, dass Wireshark definitiv nicht versucht, den Benutzer vor den Komplikationen der internen Struktur von Netzwerktechnologien zu schützen. Für einen Anfänger kann dieser Zustand zunächst den Eindruck erwecken, dass Wireshark kein Programm für ihn ist, sondern nur für erfahrene Netzwerkspezialisten.

Wiresharks Fokus auf Low-Level-Netzwerkmechanismen hat jedoch ein großes Plus. Tatsache ist, dass Sie mit diesem Programm etwas Neues über Netzwerkprotokolle lernen können. Zum Beispiel weiß ich nicht viel über die internen Mechanismen des TLS / SSL-Protokolls. Bei der Analyse des Datenverkehrs in Wireshark stellte ich jedoch fest, dass die ersten beiden Pakete der SSL-Verbindung client hello und server hello . Infolgedessen nimmt das Protokoll, das, wenn man sich nicht mit den Details seiner Arbeit befasst, mysteriös und für das Verständnis unzugänglich erscheint, eine verständlichere Form an und wird zu etwas, das verstanden und analysiert werden kann.

Zusammenfassung


Wireshark hat enorme Chancen. Hier haben wir nur über einige von ihnen gesprochen. Die hier diskutierten Arbeitsmethoden werden laut dem Autor des Materials jedoch in etwa 95% der Situationen verwendet, in denen Wireshark benötigt wird. Deshalb hoffen wir, dass auch das Wenige, das Sie heute gelernt haben, für Sie nützlich ist.

Liebe Leser! Verwenden Sie Wireshark?

Source: https://habr.com/ru/post/de416537/


All Articles