Die besten Pen-Tester-Tools: Sniffer und Arbeiten mit Paketen. Wireshark: Ein Klassiker der Netzwerkpaketanalyse. Anzeigen von Paketen im Netzwerk

Wireshark ist ein leistungsstarker Netzwerkanalysator, mit dem Sie den Datenverkehr analysieren können, der über die Netzwerkschnittstelle Ihres Computers läuft. Möglicherweise benötigen Sie es, um Netzwerkprobleme zu erkennen und zu lösen, Ihre Webanwendungen zu debuggen, Netzwerkprogramme oder Websites. Mit Wireshark können Sie den Inhalt eines Pakets auf allen Ebenen vollständig anzeigen, sodass Sie besser verstehen können, wie das Netzwerk auf niedriger Ebene funktioniert.

Alle Pakete werden in Echtzeit erfasst und in einem leicht lesbaren Format bereitgestellt. Das Programm unterstützt ein sehr leistungsfähiges Filtersystem, Farbhervorhebung und andere Funktionen, die Ihnen dabei helfen, die richtigen Pakete zu finden. In diesem Tutorial schauen wir uns an, wie Sie Wireshark zur Analyse des Datenverkehrs verwenden. Vor kurzem haben die Entwickler mit der Arbeit am zweiten Zweig des Wireshark 2.0-Programms begonnen, viele Änderungen und Verbesserungen wurden daran vorgenommen, insbesondere an der Schnittstelle. Das werden wir in diesem Artikel verwenden.

Bevor Sie Möglichkeiten zur Datenverkehrsanalyse in Betracht ziehen, müssen Sie genauer überlegen, welche Funktionen das Programm unterstützt, mit welchen Protokollen es arbeiten kann und was es tun kann. Hier sind die Hauptfunktionen des Programms:

  • Erfassen Sie Pakete in Echtzeit von kabelgebundenen oder anderen Netzwerkschnittstellen und lesen Sie sie aus einer Datei.
  • Die folgenden Capture-Schnittstellen werden unterstützt: Ethernet, IEEE 802.11, PPP und lokale virtuelle Schnittstellen;
  • Mithilfe von Filtern können Pakete anhand vieler Parameter gefiltert werden.
  • Alle bekannten Protokolle werden in der Liste hervorgehoben verschiedene Farben, wie TCP, HTTP, FTP, DNS, ICMP usw.;
  • Unterstützung für die Erfassung des VoIP-Anrufverkehrs;
  • Die Entschlüsselung des HTTPS-Verkehrs wird unterstützt, wenn ein Zertifikat verfügbar ist;
  • Entschlüsselung von WEP- und WPA-Verkehr drahtlose Netzwerke mit Schlüssel und Handschlag;
  • Statistiken zur Netzwerklast anzeigen;
  • Paketinhalte für alle Netzwerkebenen anzeigen;
  • Zeigt den Zeitpunkt des Sendens und Empfangens von Paketen an.

Das Programm verfügt über viele weitere Funktionen, aber diese sind die wichtigsten, die Sie interessieren könnten.

So verwenden Sie Wireshark

Ich gehe davon aus, dass Sie das Programm bereits installiert haben. Wenn nicht, können Sie es über die offiziellen Repositories installieren. Geben Sie dazu den Befehl in Ubuntu ein:

sudo apt installiere wireshark

Nach der Installation finden Sie das Programm im Hauptmenü der Distribution. Sie müssen Wireshark mit Superuser-Rechten ausführen, da es sonst keine Netzwerkpakete analysieren kann. Dies kann über das Hauptmenü oder über das Terminal mit dem Befehl für KDE erfolgen:

Und für Gnome/Unity:

Das Hauptfenster des Programms ist in drei Teile unterteilt: Die erste Spalte enthält eine Liste der zur Analyse verfügbaren Netzwerkschnittstellen, die zweite - Optionen zum Öffnen von Dateien und die dritte - Hilfe.

Analyse des Netzwerkverkehrs

Um die Analyse zu starten, wählen Sie eine Netzwerkschnittstelle aus, zum Beispiel eth0, und klicken Sie auf die Schaltfläche Start.

Danach öffnet sich das folgende Fenster, bereits mit einem Strom von Paketen, die die Schnittstelle passieren. Auch dieses Fenster ist in mehrere Teile unterteilt:

  • Oberer Teil- Dies sind Menüs und Bedienfelder mit verschiedenen Schaltflächen.
  • Liste der Pakete- Anschließend wird der Fluss der Netzwerkpakete angezeigt, die Sie analysieren werden.
  • Packungsinhalt- Direkt darunter finden Sie den Inhalt des ausgewählten Pakets. Er ist je nach Transportstufe in Kategorien unterteilt.
  • Echte Leistung- Ganz unten wird der Inhalt des Pakets sowohl in realer Form als auch in HEX-Form angezeigt.

Sie können auf jedes Paket klicken, um seinen Inhalt zu analysieren:

Hier sehen wir ein DNS-Anfragepaket, um die IP-Adresse der Site zu erhalten, in der Anfrage selbst wird die Domain gesendet und im Antwortpaket erhalten wir unsere Frage sowie die Antwort.

Für eine bequemere Ansicht können Sie das Paket in einem neuen Fenster öffnen, indem Sie auf den Eintrag doppelklicken:

Wireshark-Filter

Das manuelle Durchsuchen von Paketen, um die benötigten Pakete zu finden, ist sehr umständlich, insbesondere bei einem aktiven Thread. Daher ist es für diese Aufgabe besser, Filter zu verwenden. Für die Eingabe von Filtern gibt es unter dem Menü eine spezielle Zeile. Sie können klicken Ausdruck um den Filterdesigner zu öffnen, aber es gibt viele davon, also schauen wir uns die grundlegendsten an:

  • ip.dst- Ziel-IP-Adresse;
  • ip.src- IP-Adresse des Absenders;
  • IP-Adresse- IP des Absenders oder Empfängers;
  • ip.proto- Protokoll;
  • tcp.dstport- Zielhafen;
  • tcp.srcport- Absenderport;
  • ip.ttl- TTL-Filter, bestimmt die Netzwerkentfernung;
  • http.request_uri- die angeforderte Site-Adresse.

Um die Beziehung zwischen einem Feld und einem Wert in einem Filter anzugeben, können Sie die folgenden Operatoren verwenden:

  • == - gleich;
  • != - nicht gleich;
  • < - weniger;
  • > - mehr;
  • <= - weniger oder gleich;
  • >= - mehr oder gleich;
  • Streichhölzer- regulären Ausdruck;
  • enthält- enthält.

Um mehrere Ausdrücke zu kombinieren, können Sie Folgendes verwenden:

  • && - beide Ausdrücke müssen für das Paket wahr sein;
  • || - Einer der Ausdrücke könnte wahr sein.

Schauen wir uns nun einige Filter anhand von Beispielen genauer an und versuchen, alle Anzeichen von Zusammenhängen zu verstehen.

Lassen Sie uns zunächst alle an 194.67.215 gesendeten Pakete filtern. Geben Sie eine Zeichenfolge in das Filterfeld ein und klicken Sie Anwenden. Der Einfachheit halber können Wireshark-Filter über die Schaltfläche gespeichert werden Speichern:

ip.dst == 194.67.215.125

Und um nicht nur gesendete, sondern auch als Antwort von diesem Knoten empfangene Pakete zu empfangen, können Sie zwei Bedingungen kombinieren:

ip.dst == 194.67.215.125 || ip.src == 194.67.215.125

Wir können auch übertragene große Dateien auswählen:

http.content_length > 5000

Durch Filtern des Inhaltstyps können wir alle hochgeladenen Bilder auswählen; Lassen Sie uns den Wireshark-Verkehr analysieren, Pakete, die das Wort Bild enthalten:

http.content_type enthält ein Bild

Um den Filter zu löschen, können Sie die Taste drücken Klar. Es kommt vor, dass Sie nicht immer alle zum Filtern notwendigen Informationen kennen, sondern einfach nur das Netzwerk erkunden möchten. Sie können jedes Feld eines Pakets als Spalte hinzufügen und seinen Inhalt im allgemeinen Fenster für jedes Paket anzeigen.

Ich möchte beispielsweise die TTL (Time to Live) eines Pakets als Spalte anzeigen. Öffnen Sie dazu die Paketinformationen und suchen Sie dieses Feld im IP-Bereich. Dann ruf an Kontextmenü und wählen Sie die Option aus Als Spalte anwenden:

Auf die gleiche Weise können Sie einen Filter basierend auf jedem gewünschten Feld erstellen. Wählen Sie es aus, rufen Sie das Kontextmenü auf und klicken Sie dann Als Filter anwenden oder Als Filter vorbereiten, dann auswählen Ausgewählt um nur die ausgewählten Werte anzuzeigen, oder Nicht ausgewählt um sie zu entfernen:

Das angegebene Feld und sein Wert werden übernommen oder im zweiten Fall in das Filterfeld eingefügt:

Auf diese Weise können Sie dem Filter ein Feld eines beliebigen Pakets oder einer beliebigen Spalte hinzufügen. Diese Option gibt es auch im Kontextmenü. Um Protokolle zu filtern, können Sie mehr verwenden einfache Bedingungen. Lassen Sie uns beispielsweise den Wireshark-Verkehr für die HTTP- und DNS-Protokolle analysieren:

Ein weiteres interessantes Feature des Programms ist die Verwendung von Wireshark, um eine bestimmte Sitzung zwischen dem Computer des Benutzers und dem Server zu verfolgen. Öffnen Sie dazu das Kontextmenü des Pakets und wählen Sie es aus Folgen Sie dem TCP-Stream.

Anschließend öffnet sich ein Fenster, in dem Sie alle zwischen dem Server und dem Client übertragenen Daten finden:

Wireshark-Probleme diagnostizieren

Sie fragen sich vielleicht, wie Sie Wireshark 2.0 verwenden können, um Probleme in Ihrem Netzwerk zu erkennen. Dazu befindet sich in der unteren linken Ecke des Fensters ein runder Button, bei einem Klick darauf öffnet sich ein Fenster Expet-Tools. Darin sammelt Wireshark alle Fehlermeldungen und Netzwerkprobleme:

Das Fenster ist in Registerkarten wie Fehler, Warnungen, Hinweise und Chats unterteilt. Das Programm kann viele Netzwerkprobleme filtern und finden, und hier können Sie sie sehr schnell erkennen. Auch hier werden Wireshark-Filter unterstützt.

Wireshark-Verkehrsanalyse

Wenn die Verbindung nicht verschlüsselt war, können Sie sehr leicht nachvollziehen, was Benutzer heruntergeladen und welche Dateien sie angesehen haben. Das Programm leistet beim Extrahieren von Inhalten sehr gute Arbeit.

Dazu müssen Sie zunächst die Verkehrserfassung über das rote Quadrat auf dem Panel stoppen. Öffnen Sie dann das Menü Datei -> Objekte exportieren -> HTTP:

Netzwerkpaketanalysatoren oder Sniffer wurden ursprünglich als Mittel zur Lösung von Netzwerkproblemen entwickelt. Sie sind in der Lage, über das Netzwerk übertragene Pakete abzufangen, zu interpretieren und zur späteren Analyse zu speichern. Dies ermöglicht einerseits Systemadministratoren und Servicetechniker technische Unterstützung Beobachten Sie, wie Daten über das Netzwerk übertragen werden, diagnostizieren und beheben Sie auftretende Probleme. In diesem Sinne sind Paket-Sniffer leistungsfähiges Werkzeug Diagnose von Netzwerkproblemen. Andererseits wurden Sniffer, wie viele andere leistungsstarke Tools, die ursprünglich für die Verwaltung gedacht waren, im Laufe der Zeit für völlig andere Zwecke eingesetzt. Tatsächlich ist ein Sniffer in den Händen eines Angreifers ein ziemlich gefährliches Werkzeug und kann zum Erlangen von Passwörtern und anderen vertraulichen Informationen verwendet werden. Sie sollten jedoch nicht glauben, dass Sniffer eine Art magisches Werkzeug sind, mit dem jeder Hacker problemlos vertrauliche Informationen einsehen kann, die über das Netzwerk übertragen werden. Und bevor wir beweisen, dass die Gefahr, die von Schnüfflern ausgeht, nicht so groß ist, wie oft dargestellt wird, wollen wir uns die Prinzipien ihrer Funktionsweise genauer ansehen.

Funktionsprinzipien von Paket-Sniffer

Im weiteren Verlauf dieses Artikels betrachten wir nur Software-Sniffer, die für Ethernet-Netzwerke entwickelt wurden. Ein Sniffer ist ein Programm, das auf der Netzwerkadapterebene (Link Layer) der NIC (Network Interface Card) arbeitet und den gesamten Datenverkehr heimlich abfängt. Da Sniffer auf der Datenverbindungsschicht des OSI-Modells arbeiten, müssen sie sich nicht mehr an Protokollregeln halten. hohes Level. Sniffer umgehen die Filtermechanismen (Adressen, Ports usw.), die Ethernet-Treiber und der TCP/IP-Stack zur Interpretation von Daten verwenden. Paketschnüffler erfassen alles, was über die Leitung eintrifft. Sniffer können Frames im Binärformat speichern und später entschlüsseln, um darin verborgene Informationen auf höherer Ebene offenzulegen (Abbildung 1).

Damit der Sniffer alle passierenden Pakete abfangen kann Netzwerkadapter, muss der Netzwerkadaptertreiber den Betrieb im Promiscuous-Modus unterstützen. In diesem Betriebsmodus des Netzwerkadapters ist der Sniffer in der Lage, alle Pakete abzufangen. Dieser Modus Der Betrieb des Netzwerkadapters wird automatisch beim Start des Sniffers aktiviert oder manuell über die entsprechenden Sniffer-Einstellungen eingestellt.

Der gesamte abgefangene Datenverkehr wird an einen Paketdecoder weitergeleitet, der Pakete identifiziert und in die entsprechenden Hierarchieebenen aufteilt. Abhängig von den Fähigkeiten eines bestimmten Sniffers können die bereitgestellten Paketinformationen anschließend weiter analysiert und gefiltert werden.

Einschränkungen bei der Verwendung von Sniffern

Die größte Gefahr stellten Sniffer damals dar, als Informationen im Klartext (ohne Verschlüsselung) über das Netzwerk übertragen wurden und lokale Netzwerke auf Basis von Konzentratoren (Hubs) aufgebaut wurden. Diese Zeiten sind jedoch unwiderruflich vorbei und der Einsatz von Schnüfflern, um sich Zugang zu verschaffen, ist heutzutage nicht mehr möglich vertrauliche Informationen Die Aufgabe ist keineswegs einfach.

Tatsache ist, dass beim Aufbau lokaler Netzwerke auf Basis von Hubs ein bestimmtes gemeinsames Datenübertragungsmedium vorhanden ist ( Netzwerkkabel) und alle Netzwerkknoten tauschen Pakete aus und konkurrieren um den Zugriff auf dieses Medium (Abb. 2), und ein von einem Netzwerkknoten gesendetes Paket wird an alle Ports des Hubs übertragen und dieses Paket wird von allen anderen Netzwerkknoten abgehört, ist es aber wird nur von dem Knoten empfangen, an den es adressiert ist. Wenn außerdem ein Paket-Sniffer auf einem der Netzwerkknoten installiert ist, kann dieser alle Netzwerkpakete abfangen, die sich auf ein bestimmtes Netzwerksegment (das vom Hub gebildete Netzwerk) beziehen.

Switches sind intelligenter als Broadcast-Hubs und isolieren Netzwerktraffic. Der Switch kennt die Adressen der an jedem Port angeschlossenen Geräte und überträgt Pakete nur zwischen den erforderlichen Ports. Dadurch können Sie andere Ports entlasten, ohne jedes Paket an diese weiterleiten zu müssen, wie dies bei einem Hub der Fall ist. Somit wird ein von einem bestimmten Netzwerkknoten gesendetes Paket nur an den Switch-Port übertragen, an den der Paketempfänger angeschlossen ist, und alle anderen Netzwerkknoten können dieses Paket nicht erkennen (Abb. 3).

Wenn das Netzwerk also auf der Basis eines Switches aufgebaut ist, kann ein auf einem der Netzwerkcomputer installierter Sniffer nur die ausgetauschten Pakete abfangen dieser Computer mit anderen Netzwerkknoten. Um Pakete abfangen zu können, die der für den Angreifer interessante Computer oder Server mit anderen Netzwerkknoten austauscht, ist es daher notwendig, auf diesem bestimmten Computer (Server) einen Sniffer zu installieren, was eigentlich nicht so einfach ist. Sie sollten jedoch bedenken, dass einige Paket-Sniffer von hier aus gestartet werden Befehlszeile und verfügt möglicherweise nicht über eine grafische Oberfläche. Solche Sniffer können grundsätzlich aus der Ferne und unbemerkt vom Benutzer installiert und gestartet werden.

Darüber hinaus sollten Sie bedenken, dass Switches zwar den Netzwerkverkehr isolieren, alle verwalteten Switches jedoch über Portweiterleitungs- oder Portspiegelungsfunktionen verfügen. Das heißt, der Switch-Port kann so konfiguriert werden, dass alle an anderen Switch-Ports ankommenden Pakete auf ihm dupliziert werden. Wenn in diesem Fall ein Computer mit einem Paket-Sniffer an einen solchen Port angeschlossen ist, kann dieser alle Pakete abfangen, die zwischen Computern in einem bestimmten Netzwerksegment ausgetauscht werden. Die Möglichkeit, den Switch zu konfigurieren, steht jedoch in der Regel nur dem Netzwerkadministrator zur Verfügung. Das bedeutet natürlich nicht, dass er kein Angreifer sein kann, aber es gibt viele andere Möglichkeiten für einen Netzwerkadministrator, alle Benutzer zu kontrollieren lokales Netzwerk, und es ist unwahrscheinlich, dass er Sie auf so raffinierte Weise überwachen wird.

Ein weiterer Grund, warum Sniffer nicht mehr so ​​gefährlich sind wie früher, liegt darin, dass die meisten sensiblen Daten heute verschlüsselt übertragen werden. Offene, unverschlüsselte Dienste verschwinden rasant aus dem Internet. Beispielsweise beim Besuch von Websites wird es zunehmend genutzt SSL-Protokoll(Secure Sockets Layer); Anstelle von offenem FTP wird SFTP (Secure FTP) verwendet, und für andere Dienste, die standardmäßig keine Verschlüsselung verwenden, werden zunehmend virtuelle private Netzwerke (VPNs) verwendet.

Wer sich also Sorgen über die Möglichkeit eines böswilligen Einsatzes von Paket-Sniffer-Programmen macht, sollte Folgendes im Hinterkopf behalten. Um eine ernsthafte Bedrohung für Ihr Netzwerk darzustellen, müssen sich die Sniffer zunächst im Netzwerk selbst befinden. Zweitens machen es die heutigen Verschlüsselungsstandards äußerst schwierig, sensible Informationen abzufangen. Daher verlieren Paket-Sniffer derzeit allmählich ihre Relevanz als Hacker-Tools, bleiben aber gleichzeitig ein effektives und leistungsstarkes Werkzeug zur Netzwerkdiagnose. Darüber hinaus können Sniffer nicht nur zur Diagnose und Lokalisierung von Netzwerkproblemen, sondern auch zur Überprüfung der Netzwerksicherheit erfolgreich eingesetzt werden. Insbesondere der Einsatz von Paketanalysatoren ermöglicht es Ihnen, unbefugten Datenverkehr zu erkennen, unbefugten Datenverkehr zu erkennen und zu identifizieren Software, ungenutzte Protokolle identifizieren, um sie aus dem Netzwerk zu entfernen, Datenverkehr für Penetrationstests (Penetrationstest) generieren, um das Sicherheitssystem zu überprüfen, mit Intrusion Detection Systemen (IDS) arbeiten.

Übersicht über Softwarepaket-Sniffer

Alle Software-Sniffer lassen sich in zwei Kategorien einteilen: Sniffer, die den Start über die Befehlszeile unterstützen, und Sniffer, die den Start über die Befehlszeile unterstützen GUI. Wir stellen jedoch fest, dass es Sniffer gibt, die diese beiden Fähigkeiten kombinieren. Darüber hinaus unterscheiden sich Sniffer durch die von ihnen unterstützten Protokolle, die Tiefe der Analyse abgefangener Pakete, die Möglichkeit, Filter zu konfigurieren und die Möglichkeit der Kompatibilität mit anderen Programmen.

Normalerweise besteht das Fenster eines Sniffers mit grafischer Oberfläche aus drei Bereichen. Der erste von ihnen zeigt die zusammenfassenden Daten der abgefangenen Pakete an. Normalerweise werden in diesem Bereich nur wenige Felder angezeigt, nämlich: Paketabfangzeit; IP-Adressen des Paketsenders und -empfängers; MAC-Adressen des Absenders und Empfängers des Pakets, Quell- und Zielportadressen; Protokolltyp (Netzwerk-, Transport- oder Anwendungsschicht); einige zusammenfassende Informationen zu den abgefangenen Daten. Im zweiten Bereich wird es angezeigt statistische Informationüber das einzelne ausgewählte Paket, und schließlich wird im dritten Bereich das Paket in Hexadezimal- oder ASCII-Zeichenform dargestellt.

Fast alle Paket-Sniffer ermöglichen die Analyse dekodierter Pakete (weshalb Paket-Sniffer auch Paketanalysatoren oder Protokollanalysatoren genannt werden). Der Sniffer verteilt abgefangene Pakete über Schichten und Protokolle. Einige Paket-Sniffer sind in der Lage, das Protokoll zu erkennen und die erfassten Informationen anzuzeigen. Diese Art von Informationen werden normalerweise im zweiten Bereich des Sniffer-Fensters angezeigt. Beispielsweise kann jeder Sniffer das TCP-Protokoll erkennen und fortgeschrittene Sniffer können feststellen, welche Anwendung diesen Datenverkehr generiert hat. Die meisten Protokollanalysatoren erkennen über 500 verschiedene Protokolle und können diese namentlich beschreiben und entschlüsseln. Je mehr Informationen ein Sniffer entschlüsseln und auf dem Bildschirm anzeigen kann, desto weniger muss manuell entschlüsselt werden.

Ein Problem, auf das Paketschnüffler stoßen können, ist die Unfähigkeit, ein Protokoll korrekt zu identifizieren, das einen anderen als den Standardport verwendet. Um beispielsweise die Sicherheit zu verbessern, können einige bekannte Anwendungen so konfiguriert werden, dass sie andere als die Standardports verwenden. Anstelle des herkömmlichen Ports 80, der für den Webserver reserviert ist, diesen Server Sie können es zwangsweise auf Port 8088 oder einen anderen umkonfigurieren. Einige Paketanalysatoren sind in dieser Situation nicht in der Lage, das Protokoll korrekt zu bestimmen und nur Informationen über das untergeordnete Protokoll (TCP oder UDP) anzuzeigen.

Es gibt Software-Sniffer, die Software-Analysemodule als Plugins oder integrierte Module enthalten, mit denen Sie Berichte mit nützlichen Analyseinformationen über den abgefangenen Datenverkehr erstellen können.

Ein weiteres charakteristisches Merkmal der meisten Paketanalysesoftware ist die Möglichkeit, Filter vor und nach der Erfassung des Datenverkehrs zu konfigurieren. Filter wählen bestimmte Pakete aus dem allgemeinen Datenverkehr nach einem bestimmten Kriterium aus, wodurch Sie bei der Analyse des Datenverkehrs unnötige Informationen entfernen können.

Allgemeines Schema

Die Reihenfolge der Schritte, die ein Programm, das die pcap-Bibliothek (von PacketCAPture) verwendet, ausführen muss, um seine Aufgabe abzuschließen, ist wie folgt:

  • Definieren Sie die Netzwerkschnittstelle, die abgehört werden soll. (Unter Linux könnte dies eth0 sein, unter BSD xl1).
  • PCAP initialisieren. In diesem Fall wird der Bibliothek mitgeteilt, auf welcher Schnittstelle wir die Daten abhören. Es ist möglich, mehrere Schnittstellen gleichzeitig (in verschiedenen Sitzungen) abzuhören.
  • Wenn es notwendig ist, einen Filter zu erstellen (wir sind beispielsweise nur an TCP-Paketen interessiert, die auf Port 23 ankommen), „kompilieren“ Sie diesen Filter und wenden Sie ihn auf eine bestimmte Sitzung an.
  • Gehen Sie zum Paketempfangszyklus. Danach wird jedes Mal, wenn ein weiteres Paket eintrifft und den angegebenen Filter passiert, eine Funktion aufgerufen, die im Voraus definiert werden muss. Diese Funktion kann jede gewünschte Aktion ausführen. Es kann das Paket analysieren und an den Benutzer weitergeben, es auf der Festplatte speichern oder überhaupt nichts tun.
  • Wenn Sie fertig sind, müssen Sie alle offenen Sitzungen schließen.

Betrachten wir die aufgeführten Schritte im Detail.

Schnittstellendefinition

Um die Schnittstelle zu bestimmen, die überwacht werden soll, können Sie zwei Methoden verwenden.

Der erste besteht darin, dass der Schnittstellenname vom Benutzer angegeben wird. Betrachten Sie das folgende Programm:

#enthalten #enthalten Int main(int argc, char *argv) ( char *dev = argv; printf("Gerät: %s\n", dev); return(0); )

Der Benutzer gibt die Schnittstelle an, indem er ihren Namen als erstes Argument an unser Programm übergibt. Natürlich muss die vom Benutzer angegebene Schnittstelle vorhanden sein.

Die zweite Möglichkeit besteht darin, den Schnittstellennamen aus der Bibliothek selbst herauszufinden:

#enthalten #enthalten Int main() ( char *dev, errbuf; dev = pcap_lookupdev(errbuf); printf("Gerät: %s\n", dev); return(0); )

In diesem Fall gibt uns pcap den Namen der Schnittstelle, die es besitzt. Die Zeile „errbuf“ enthält eine Beschreibung des Fehlers, falls dieser beim Ausführen des pcap_lookupdev()-Aufrufs auftritt.

Öffnen einer Schnittstelle zum Abfangen von Paketen

Um eine Sitzung zum Abfangen des Datenverkehrs zu erstellen, müssen Sie die Funktion pcap_open_live() aufrufen. Der Prototyp dieser Funktion (aus der pcap-Manpage) sieht folgendermaßen aus:

Pcap_t *pcap_open_live (char *device, int snaplen, int promisc, int to_ms, char *ebuf)

Das erste Argument ist der Gerätename, den wir im vorherigen Schritt definiert haben. snaplen ist eine Ganzzahl, die die maximale Anzahl an Bytes eines Netzwerkrahmens angibt, die von der Bibliothek erfasst werden. Wenn promisc auf true gesetzt ist, geht die Schnittstelle in den sogenannten Promiscuous-Modus (Pakete, die an andere Stationen im Netzwerk adressiert sind, werden abgefangen). to_ms – Zeitüberschreitung in Millisekunden (wenn der Wert auf Null gesetzt ist, erfolgt das Lesen bis zum ersten Fehler, wenn er auf minus eins eingestellt ist – unendlich). Schließlich ist errbuf die Zeile, in der wir die Fehlermeldung erhalten. Die Funktion gibt das Sitzungshandle (Deskriptor) zurück.

Schauen wir uns zur Veranschaulichung einen Code an:

#enthalten Pcap_t *handle; handle = pcap_open_live(somedev, BUFSIZ, 1, 0, errbuf);

Hier wird eine Schnittstelle geöffnet, deren Name in der Zeile somedev angegeben ist und angibt, wie viele Bytes des Pakets erfasst werden sollen (der BUFSIZ-Wert ist in pcap.h definiert). Die Netzwerkschnittstelle wechselt in den Promiscuous-Modus. Die Daten werden solange gelesen, bis ein Fehler auftritt. Im Falle eines Fehlers können Sie dessen Textbeschreibung mithilfe des errbuf-Zeigers auf dem Bildschirm anzeigen.

Ein Hinweis zum Abfangen von Datenverkehr im promiskuitiven und nicht-promiskuitiven Modus: Die beiden Methoden sind sehr unterschiedlich. Bei der Verkehrsüberwachung im nicht-promiskuitiven Modus empfängt der Knoten nur den Verkehr, der an ihn gerichtet ist oder mit ihm zusammenhängt. Nur der Datenverkehr zum, vom und durch den Host wird von unserem Programm abgefangen. Im Promiscuous-Modus akzeptiert die Netzwerkschnittstelle alle über das Kabel eingehenden Pakete. In einer nicht geswitchten Umgebung könnte dies der gesamte Netzwerkverkehr sein. Der klare Vorteil besteht darin, dass eine größere Anzahl von Paketen erfasst werden kann, was je nachdem, wofür Sie den Netzwerk-Stream erfassen, nützlich sein kann (oder auch nicht).

Allerdings kann eine Verkehrsüberwachung im Promiscuous-Modus erkannt werden; Ein anderer Knoten kann mit hoher Genauigkeit feststellen, ob wir den Promiscuous-Modus verwenden. Darüber hinaus funktioniert es nur in nicht geswitchten Umgebungen (z. B. Hubs oder Switches, die mit ARP-Paketen überflutet werden). Drittens: Wenn das Netzwerk stark ausgelastet ist, wird unser Programm eine große Anzahl davon verwenden Systemressourcen.

Verkehrsfilterung

Oft wird ein Paketabfanggerät benötigt, um nicht alle, sondern nur bestimmte Pakete abzufangen. Beispielsweise gibt es Zeiten, in denen wir auf der Suche nach Passwörtern den Datenverkehr auf Port 23 (Telnet) abfangen möchten. Oder vielleicht möchten wir eine Datei abfangen, die über Port 21 (FTP) gesendet wird. Möglicherweise möchten wir nur den DNS-Verkehr abfangen (UDP-Port 53). Allerdings ist es nur sehr selten erforderlich, alle Daten abzufangen. Die Funktionen pcap_compile() und pcap_setfilter() werden zum Filtern des Datenverkehrs verwendet.

Sobald wir pcap_open_live() aufgerufen haben und eine funktionierende Traffic-Capture-Sitzung haben, können wir unseren Filter anwenden. Natürlich können Sie den Filter manuell implementieren, indem Sie die ETH/IP/TCP-Header nach dem Empfang des Pakets analysieren, aber die Verwendung des internen PCAP-Filters ist effizienter und auch einfacher.

Bevor Sie einen Filter anwenden können, müssen Sie ihn „kompilieren“. Der Filterausdruck wird in einer gewöhnlichen Zeichenfolge (Zeichen-Array) gespeichert. Die Syntax solcher Ausdrücke wird ausführlich in der tcpdump-Manpage (man tcpdump) beschrieben.

Zum Kompilieren des Filters wird die Funktion pcap_compile() verwendet. Sein Prototyp sieht so aus:

Int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int Optimize, bpf_u_int32 netmask)

Das erste Argument ist das Handle (Deskriptor) unserer Sitzung (pcap_t *handle im vorherigen Beispiel). Das nächste Argument ist ein Zeiger auf den Speicherbereich, in dem wir die kompilierte Version unseres Filters speichern. Als nächstes kommt der Filterausdruck selbst in Form einer regulären Zeichenfolge. Der nächste Parameter bestimmt, ob unser Ausdruck optimiert werden muss oder nicht (wie üblich bedeutet 0 nein, 1 bedeutet ja). Der letzte Parameter ist die Netzmaske, auf die unser Filter angewendet wird. Im Fehlerfall gibt die Funktion -1 zurück, alle anderen Werte zeigen einen erfolgreichen Abschluss an.

Sobald der Ausdruck kompiliert ist, muss er angewendet werden, was mit der Funktion pcap_setfilter() erfolgt. Sein Prototyp ist dieser:

Int pcap_setfilter(pcap_t *p, struct bpf_program *fp)

Das erste Argument ist das Handle (Deskriptor) unserer Paketabfangsitzung, das zweite ist ein Zeiger auf die kompilierte Version des Ausdrucks für den Filter (normalerweise das zweite Argument der Funktion pcap_compile()).

Das folgende Beispiel demonstriert die Verwendung eines Filters:

#enthalten Pcap_t *handle; // Sitzungsdeskriptor char dev = "eth0"; // Schnittstelle, auf der wir lauschen werden char errbuf; // Zeile mit Fehler struct bpf_program filter; // Kompilierter Ausdruck für den Filter char filter_app = "port 23"; // Ausdruck für den Filter bpf_u_int32 mask; // Netzmaske unserer Schnittstelle bpf_u_int32 net; // IP-Adresse unserer Schnittstelle pcap_lookupnet(dev, &net, &mask, errbuf); handle = pcap_open_live(dev, BUFSIZ, 1, 0, errbuf); pcap_compile(handle, &filter, filter_app, 0, net); pcap_setfilter(handle, &filter);

Dieses Programm bereitet einen Interceptor für Pakete vor, die im Promiscuous-Modus an oder von Port 23 auf der eth0-Schnittstelle gehen. Das Beispiel enthält die Funktion pcap_lookupnet(), die die Netzwerkadresse und Netzmaske für das Gerät zurückgibt, dessen Name als Parameter an sie übergeben wird. Seine Verwendung ist notwendig, da wir zum Anwenden eines Filters die Adresse und die Netzwerkmaske kennen müssen.

Paketabfangen

Es gibt zwei Techniken zum Abfangen von Paketen. Sie können ein Paket nach dem anderen abfangen und verarbeiten oder Sie können mit einer Gruppe von Paketen arbeiten, indem Sie eine spezielle Schleife einrichten, die ausgeführt wird, bis pcap eine bestimmte Anzahl von Paketen abfängt. Um im ersten Modus zu arbeiten, wird die Funktion pcap_next() verwendet. pcap_next() Prototyp:

U_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h)

Das erste Argument ist das Handle unserer Sitzung, das zweite ist ein Zeiger auf eine Struktur, in der Informationen über das Paket gespeichert werden, wie zum Beispiel der Zeitpunkt, zu dem es abgefangen wurde, die Länge des Pakets und die Länge seines einzelnen Teils ( wenn das Paket beispielsweise fragmentiert ist). pcap_next() gibt einen u_char-Zeiger auf den Speicherort zurück, an dem das durch diese Struktur beschriebene Paket gespeichert ist.

Demonstration der Verwendung von pcap_next() zum Erfassen eines einzelnen Pakets:

#enthalten #enthalten int main() ( pcap_t *handle; char *dev; char errbuf; // Zeile, die den Fehler beschreibt struct bpf_program filter; // kompilierter Filter char filter_app = "port 23"; // filter bpf_u_int32 mask; // Netzwerkmaske bpf_u_int32 net ; // unsere IP-Adresse struct pcap_pkthdr Header; // Paket-Header, der pcap const u_char *packet; // das Paket selbst füllt // die Schnittstelle definieren dev = pcap_lookupdev(errbuf); // die Netzwerkadresse und Schnittstellenmaske abrufen pcap_lookupnet (dev, &net, &mask, errbuf); // eine Abfangsitzung im Promiscuous-Modus öffnen handle = pcap_open_live(dev, BUFSIZ, 1, 0, errbuf); // einen Paketfilter kompilieren und anwenden pcap_compile(handle, &filter, filter_app, 0, net); pcap_setfilter(handle, &filter); // das Paket abfangen packet = pcap_next(handle, &header); // seine Länge auf der Konsole ausgeben printf("Ein Paket mit einer Länge von [%d]\n gejackt" , header.len); // Sitzung schließen pcap_close(handle); return(0); )

Dieses Programm fängt Pakete auf dem Gerät ab, das pcap_lookupdev() zurückgibt, und versetzt es in den Pormiscuous-Modus. Es erkennt ein Paket, das über Port 23 (Telnet) eingeht, und zeigt seine Größe in Bytes an. Der Aufruf von pcap_close() schließt eine offene Capture-Sitzung.

Die alternative Methode ist zwar schwieriger zu verstehen, dürfte aber nützlicher sein. Es gibt (wenn überhaupt) nur sehr wenige Paketerfassungen, die pcap_next() verwenden. In den allermeisten Fällen verwenden sie pcap_loop() oder pcap_dispatch() (die wiederum pcap_loop() verwenden). Um die Verwendung dieser beiden Funktionen zu verstehen, müssen Sie die Idee der Rückruffunktionen verstehen.

Rückruffunktionen sind eine häufig verwendete Programmiertechnik. Das Prinzip ist ganz einfach. Nehmen wir an, Sie haben ein Programm, das auf ein Ereignis wartet. Zum Beispiel zur Verarbeitung eines Tastendrucks. Jedes Mal, wenn eine Taste gedrückt wird, möchte ich eine Funktion aufrufen, die dieses Ereignis verarbeitet. Die Funktion, die ich verwende, ist eine Rückruffunktion. Jedes Mal, wenn der Benutzer eine Taste drückt, ruft mein Programm eine Rückruffunktion auf. Rückruffunktionen werden in pcap verwendet, aber anstatt sie aufzurufen, wenn der Benutzer eine Taste drückt, ruft pcap sie auf, wenn es ein anderes Paket empfängt. pcap_loop() und pcap_dispatch() sind Funktionen, die den Callback-Funktionsmechanismus auf fast die gleiche Weise verwenden. Beide rufen jedes Mal eine Rückruffunktion auf, wenn pcap ein Paket abfängt, das den Filter passiert (es sei denn natürlich, der Filter wird kompiliert und auf die Sitzung angewendet, andernfalls werden alle abgefangenen Pakete an die Rückruffunktion übergeben).

Funktionsprototyp pcap_loop():

Int pcap_loop (pcap_t *p, int cnt, pcap_handler callback, u_char *user);

Das erste Argument ist unser Sitzungshandle. Die nächste Ganzzahl teilt pcap_loop() mit, wie viele Pakete insgesamt erfasst werden sollen (ein negativer Wert bedeutet, dass Pakete erfasst werden sollten, bis ein Fehler auftritt). Das dritte Argument ist der Name der Callback-Funktion (nur Name, keine Klammern). Das letzte Argument wird in einigen Anwendungen verwendet, normalerweise wird es jedoch einfach auf NULL gesetzt. pcap_dispatch() ist nahezu identisch, der einzige Unterschied besteht darin, wie die Funktionen mit dem Timeout umgehen, dessen Wert beim Aufruf von pcap_open_live() gesetzt wird. pcap_loop() ignoriert im Gegensatz zu pcap_dispatch() einfach Zeitüberschreitungen. Details finden Sie in man pcap.

Bevor wir ein Beispiel für die Verwendung von pcap_loop() geben, müssen wir uns das Format unserer Callback-Funktion ansehen. Wir können einen Callback-Funktionsprototyp nicht willkürlich definieren, da pcap_loop() nicht weiß, was er damit machen soll. Der Prototyp unserer Callback-Funktion sollte so aussehen:

Void got_packet (u_char *args, const struct pcap_pkthdr *header, const u_char *packet);

Schauen wir es uns genauer an. Zunächst gibt die Funktion einen leeren Wert (void) zurück. Dies ist sinnvoll, da pcap_loop() nicht wissen kann, was mit dem Rückgabewert geschehen soll. Das erste Argument ist dasselbe wie das letzte Argument von pcap_loop(). Der Wert, der als letztes Argument für pcap_loop() verwendet wird, wird bei jedem Aufruf von pcap_loop() als erstes Argument an die Rückruffunktion übergeben. Das zweite Argument ist der pcap-Header, der Informationen darüber enthält, wann das Paket erfasst wurde, seine Größe usw. Die Struktur pcap_pkthdr ist in pcap.h wie folgt definiert:

Struct pcap_pkthdr ( struct timeval ts; // Zeitstempel bpf_u_int32 caplen; // Länge des erfassten Teils des Pakets bpf_u_int32 len; // Gesamtlänge des Pakets );

Das letzte Argument der Callback-Funktion ist das interessanteste. Dies ist ein Zeiger auf einen Puffer, der tatsächlich das gesamte mit pcap_loop() erfasste Paket enthält.

Wie verwende ich die Paketvariable? Das Paket enthält viele Attribute. Wie Sie sich vorstellen können, handelt es sich also nicht um eine Zeichenfolge, sondern um eine Reihe von Strukturen (z. B. enthält ein TCP/IP-Paket einen Ethernet-, IP-, TCP-Header und die Daten selbst). Der Paketparameter vom Typ u_char ist eigentlich eine serialisierte Version dieser Strukturen. Um aus diesen Strukturen nützliche Daten zu erhalten, müssen wir einige Transformationen durchführen.

Zunächst müssen im Programm, das wir verwenden, Strukturen definiert sein. Wir werden die folgenden Strukturen verwenden (wir könnten sie eigentlich direkt aus den Header-Dateien übernehmen, aber die Feldnamen der Strukturen variieren von Plattform zu Plattform, daher werden diese zu Demonstrationszwecken verwendet):

Struct sniff_ethernet ( u_char ether_dhost; u_char ether_shost; u_short ether_type; /* IP? ARP? RARP? etc */ ); // IP-Header struct sniff_ip ( #if BYTE_ORDER == LITTLE_ENDIAN u_int ip_hl:4, ip_v:4; #endif #if BYTE_ORDER == BIG_ENDIAN u_int ip_v:4, /* version */ ip_hl:4; /* header length */ #endif /* not _IP_VHL */ u_char ip_tos; u_short ip_len; u_short ip_id; u_short ip_off; #define IP_RF 0x8000 /* reserviertes Fragment-Flag */ #define IP_DF 0x4000 /* dont fragment flag */ #define IP_MF 0x2000 /* weitere Fragmente flag */ #define IP_OFFMASK 0x1fff /* Maske zum Fragmentieren von Bits */ u_char ip_ttl; /* time to live */ u_char ip_p; /* Protocol */ u_short ip_sum; /* checksum */ struct in_addr ip_src,ip_dst; /* source und Zieladresse */ ); struct sniff_tcp ( u_short th_sport; u_short th_dport; tcp_seq th_seq; /* Sequenznummer */ tcp_seq th_ack; /* Bestätigungsnummer */ #if BYTE_ORDER == LITTLE_ENDIAN u_int th_x2:4, /* (unbenutzt) */ th_off:4; / * Datenoffset */ #endif #if BYTE_ORDER == BIG_ENDIAN u_int th_off:4, /* Datenoffset */ th_x2:4; /* (nicht verwendet) */ #endif u_char th_flags; #define TH_FIN 0x01 #define TH_SYN 0x02 #define TH_RST 0x04 #define TH_PUSH 0x08 #define TH_ACK 0x10 #define TH_URG 0x20 #define TH_ECE 0x40 #define TH_CWR 0x80 #define TH_FLAGS \ (TH_FIN|TH_SYN|TH_RST|\ TH_ACK|TH_URG|TH_ECE|TH_CWR) u_short th_win; /* window * / u_short th_sum; /* Prüfsumme */ u_short th_urp; /* dringender Zeiger */ );

Wenn Strukturbeschreibungen aus Standard-Header-Dateien verwendet werden, ist es manchmal erforderlich, das Symbol _BSD_SOURCE zu definieren, bevor die Header-Dateien eingebunden werden, damit ein Programm, das eine TCP-Header-Beschreibung verwendet, fehlerfrei kompiliert werden kann. Alternativer Weg- Definieren Sie Strukturen, die den TCP-Header manuell beschreiben.

pcap verwendet beim Erfassen von Paketen natürlich genau die gleichen Strukturen. Dann erstellt es einfach einen u_char-String (Puffer) und kopiert die Daten aus den Strukturen hinein. Wie kann man einen String wieder in Strukturen zerlegen? Dies lässt sich einfach mithilfe von Zeigern und Typkonvertierungen bewerkstelligen.

Lassen Sie uns zunächst die Variablen deklarieren, die wir zum Parsen des u_char-Pakets in separate Header benötigen:

Const struct sniff_ethernet *ethernet; const struct sniff_ip *ip; const struct sniff_tcp *tcp; const char *Nutzlast; int size_ethernet = sizeof(struct sniff_ethernet); int size_ip = sizeof(struct sniff_ip); int size_tcp = sizeof(struct sniff_tcp);

Jetzt führen wir die Typkonvertierung durch:

Ethernet = (struct sniff_ethernet*)(packet); ip = (struct sniff_ip*)(packet + size_ethernet); tcp = (struct sniff_tcp*)(packet + size_ethernet + size_ip); payload = (u_char *)(packet + size_ethernet + size_ip + size_tcp);

Danach können wir wie gewohnt auf die Felder aller Strukturen zugreifen, zum Beispiel:

If (tcp->th_flags & TH_URG) ( ... ); ... printf("TTL = %d\n", ip->ip_ttl);

Abschalten

Wenn Sie fertig sind, müssen Sie die Sitzung schließen. Dies geschieht mit der Funktion pcap_close().

SmartSniff ermöglicht es Ihnen, den Netzwerkverkehr abzufangen und seinen Inhalt in ASCII anzuzeigen. Das Programm erfasst Pakete, die den Netzwerkadapter passieren, und zeigt den Inhalt der Pakete an Textform(Protokolle http, pop3, smtp, ftp) und in Form eines hexadezimalen Dumps. Um TCP/IP-Pakete zu erfassen, verwendet SmartSniff die folgenden Techniken: Raw-Sockets – RAW-Sockets, WinCap Capture-Treiber und Microsoft Network Monitor-Treiber. Das Programm unterstützt die russische Sprache und ist einfach zu bedienen.

Sniffer-Programm zum Erfassen von Paketen


SmartSniff zeigt die folgenden Informationen an: Protokollname, lokale und entfernte Adresse, lokaler und entfernter Port, lokaler Knoten, Dienstname, Datenvolumen, Gesamtgröße, Erfassungszeit und letzte Paketzeit, Dauer, lokale und entfernte MAC-Adresse, Länder und Datenpaket Inhalte. Das Programm verfügt über flexible Einstellungen, es implementiert die Funktion eines Erfassungsfilters, entpackt http-Antworten, konvertiert IP-Adressen, das Dienstprogramm wird auf die Taskleiste minimiert. SmartSniff generiert im Formular einen Bericht über Paketströme HTML-Seiten. Das Programm kann TCP/IP-Streams exportieren.

Bei der Nutzung des Internets kommt es manchmal zu Situationen, in denen es zu Verkehrslecks oder einem unerwarteten Verbrauch von Systemressourcen kommt. Um die Ursache des Problems schnell zu analysieren und zu erkennen, kommen spezielle Netzwerk-Tools zum Einsatz. Einer davon, WireShark, wird in dem Artikel besprochen.

allgemeine Informationen

Bevor Sie WireShark verwenden, müssen Sie sich mit dessen Umfang, Funktionalität und Fähigkeiten vertraut machen. Kurz gesagt: Mit dem Programm können Sie Pakete in Echtzeit kabelgebunden und drahtlos abfangen Netzwerkverbindungen. Wird in Ethernet, IEEE 802.11, PPP und ähnlichen Protokollen verwendet. Sie können auch die Überwachung des VoIP-Anrufverkehrs nutzen.

Das Programm wird unter der GNU GPL-Lizenz vertrieben, was bedeutet, dass es kostenlos und Open Source ist. Quellcode. Sie können es auf vielen Linux-Distributionen und MacOS ausführen, und es gibt auch eine Version dafür Betriebssystem Windows.

Wie verwende ich WireShark?

Zunächst sollten Sie es auf dem System installieren. Da einer der am häufigsten verwendeten Linux-Distributionen Ist Ubuntu, dann werden alle Beispiele darin angezeigt.

Geben Sie zur Installation einfach den folgenden Befehl in die Konsole ein:

sudo apt-get install wireshark

Danach erscheint das Programm im Hauptmenü. Sie können es von dort aus starten. Es ist jedoch besser, dies vom Terminal aus zu tun, da es Superuser-Rechte benötigt. Dies kann folgendermaßen erfolgen:

Aussehen

Das Programm verfügt über eine komfortable grafische Oberfläche. Der Benutzer sieht ein benutzerfreundliches Fenster, das in drei Teile unterteilt ist. Die erste bezieht sich direkt auf die Erfassung, die zweite auf das Öffnen von Dateien und Beispielen und die dritte auf Hilfe und Support.

Der Capture-Block enthält eine Liste der für die Erfassung verfügbaren Netzwerkschnittstellen. Wenn Sie beispielsweise eth0 auswählen und auf die Schaltfläche „Start“ klicken, wird der Abhörvorgang gestartet.

Auch das Fenster mit den abgefangenen Daten ist logisch in mehrere Teile gegliedert. Oben befindet sich ein Bedienfeld mit verschiedenen Elementen. Nachfolgend finden Sie eine Liste der Pakete. Die Darstellung erfolgt in Tabellenform. Hier sehen Sie die Sequenznummer des Pakets, den Zeitpunkt des Abfangens sowie die Sende- und Empfangsadresse. Sie können auch Daten über die verwendeten Protokolle, die Länge und andere nützliche Informationen entfernen.

Unterhalb der Liste befindet sich ein Fenster mit dem Inhalt der technischen Daten des ausgewählten Pakets. Und noch weiter unten gibt es eine Anzeige in hexadezimaler Form.

Jede Ansicht kann in ein größeres Fenster erweitert werden, um das Lesen der Daten zu erleichtern.

Anwenden von Filtern

Während das Programm läuft, passieren immer Dutzende oder sogar Hunderte von Paketen den Benutzer. Sie manuell auszusortieren ist ziemlich schwierig und zeitaufwändig. Daher empfehlen die offiziellen WireShark-Anweisungen die Verwendung von Filtern.

Für sie gibt es im Programmfenster ein spezielles Feld – Filter. Um den Filter genauer zu konfigurieren, gibt es einen Ausdruck-Button.

In den meisten Fällen reicht jedoch ein Standardfiltersatz aus:

  • ip.dst – Paketziel-IP-Adresse;
  • ip.src – Absenderadresse;
  • ip.addr – einfach jede IP;
  • ip.proto – Protokoll.

Filter in WireShark verwenden – Anleitung

Um zu testen, wie das Programm mit Filtern arbeitet, müssen Sie einen bestimmten Befehl eingeben. Ein solcher Satz – ip.dst == 172.217.23.131 – zeigt beispielsweise alle fliegenden Pakete an die Google-Website an. Um den gesamten Datenverkehr – sowohl eingehenden als auch ausgehenden – anzuzeigen, können Sie zwei Formeln kombinieren: ip.dst == 172.217.23.131 || ip.src == 172.217.23.131. So stellte sich heraus, dass zwei Bedingungen gleichzeitig in einer Zeile verwendet werden mussten.

Sie können andere Bedingungen verwenden, zum Beispiel ip.ttl< 10. Dieser Befehl zeigt alle Pakete mit einer Lebensdauer von weniger als 10 an. Um Daten nach ihrer Größe auszuwählen, können Sie diesen Ansatz verwenden: http.content_length > 5000.

Zusatzfunktionen

Der Einfachheit halber bietet WireShark eine Möglichkeit, Paketparameter schnell als zu analysierendes Feld auszuwählen. Beispielsweise können Sie in einem Feld mit technischen Daten mit der rechten Maustaste auf das gewünschte Objekt klicken und Als Spalte übernehmen auswählen. Was bedeutet es, es als Spalte in den Feldbereich zu übertragen?

Ebenso können Sie einen beliebigen Parameter als Filter auswählen. Dazu gibt es im Kontextmenü den Eintrag Als Filter anwenden.

Separate Sitzung

Sie können WireShark als Monitor zwischen zwei Netzwerkknoten verwenden, beispielsweise einem Benutzer und einem Server. Wählen Sie dazu das Paket aus, das Sie interessiert, rufen Sie das Kontextmenü auf und klicken Sie auf TCP-Stream folgen. In einem neuen Fenster wird das gesamte Protokoll des Austauschs zwischen den beiden Knoten angezeigt.

Diagnose

WireShark verfügt über ein separates Tool zur Analyse von Netzwerkproblemen. Es heißt Expertentools. Sie finden es in der unteren linken Ecke in Form eines runden Symbols. Wenn Sie darauf klicken, wird ein neues Fenster mit mehreren Registerkarten geöffnet – Fehler, Warnungen und andere. Mit ihrer Hilfe können Sie analysieren, an welchen Knoten Ausfälle auftreten, Pakete nicht ankommen und andere Probleme im Netzwerk erkennen.

Sprachverkehr

Wie bereits erwähnt, kann WireShark abfangen und Sprachverkehr. Dem ist ein ganzes Telefonie-Menü gewidmet. Damit lassen sich Probleme bei VoIP finden und schnell beheben.

Über den Eintrag „VoIP-Anrufe“ im Menü „Telefonie“ können Sie abgeschlossene Anrufe anzeigen und anhören.

Objekte exportieren

Dies ist wahrscheinlich die interessanteste Funktionalität des Programms. Es ermöglicht Ihnen, WireShark als Abfanggerät für über das Netzwerk übertragene Dateien zu verwenden. Dazu müssen Sie den Abhörvorgang stoppen und HTTP-Objekte in das Menü „Datei“ exportieren. Das sich öffnende Fenster zeigt eine Liste aller während der Sitzung übertragenen Dateien an, die an einem geeigneten Ort gespeichert werden können.

Abschließend

Leider, aktuelle Version WireShark auf Russisch wird im Internet schwer zu finden sein. Am zugänglichsten und am häufigsten verwendeten ist die englische Sprache.

Das Gleiche gilt auch für detaillierte Anleitung von WireShark auf Russisch. Die offizielle Version des Entwicklers wird auf Englisch präsentiert. Es gibt online viele kurze WireShark-Tutorials für Anfänger.

Für diejenigen, die schon lange im IT-Bereich tätig sind, wird das Verständnis des Programms jedoch keine besonderen Schwierigkeiten bereiten. A tolle Möglichkeiten und umfangreiche Funktionalität werden alle Schwierigkeiten beim Lernen erleichtern.

Es ist erwähnenswert, dass die Verwendung eines Sniffers wie WireShark in einigen Ländern illegal sein kann.