Fehler im LAN aufspüren

Workshop: Sniffing mit Wireshark

15.02.2006 von Mike Hartmann
Mit Netzwerk-Sniffern kann man Fehler im LAN aufspüren, mehr über Netzwerkprotokolle lernen, aber auch Programme enttarnen, die Daten über den ahnungslosen Benutzer versenden. tecCHANNEL zeigt wie es geht.

So genannte "Phone Home"-Software macht immer mehr von sich reden. Programme also, die Daten über den Benutzer ausspähen und unbemerkt per Internet an den Hersteller weiterleiten. Weil das Ganze ohne Wissen der Anwender erfolgt, fühlen sich diese zu Recht ausspioniert. Dazu kommen noch böswillige Programme, die auf dem Rechner des Opfers Hintertürchen, Proxies, Spambots oder DDoS-Tools einrichten.

Mit Personal Firewalls wie Zone Alarm lässt sich zwar feststellen, ob eine Applikation heimlich Daten überträgt oder ein Angreifer von außen Kontakt herstellen will. Allerdings bleibt damit noch im Dunkeln, welche Daten tatsächlich fließen. Außerdem hilft eine Personal Firewall nicht bei Tools, die ohnehin dazu dienen, Daten über das Internet zu senden oder zu empfangen. Instant Messenger oder Webbrowser könnten ungestört Daten übermitteln, ohne dass die Personal Firewall Alarm schlägt. Und genau das ist der Ansatzpunkt vieler Spyware-Programme: Sie benutzen den IE zur Übermittlung Ihrer gesammelten Daten.

Um bei solchen Tools Unregelmäßigkeiten in der Datenübertragung auszumachen, muss man schwerere Geschütze auffahren und analysieren, welche Daten an welche Rechner geschickt werden. So genannte Sniffer (Schnüffler) klinken sich in den Datenverkehr ein und protokollieren alle gesendeten und empfangenen Pakete mit. Stück für Stück kann man dann den Datenstrom mit einem Analyse-Tool auseinander nehmen und so herausfinden, ob ein Programm unerlaubt Daten sendet.

Im ersten Teil dieses Workshops widmen wir uns den grundlegenden Einstellungen beim Sniffen. Der zweite Teil geht dann auf spezielle Protokolle ein und auf Besonderheiten in geswitchten und drahtlosen Netzwerken. Zudem zeigen wir Wege auf, Sniffer zu erkennen.

Sniffing-Grundlagen

Ein Netzwerk-Sniffer besteht aus einer Reihe von Komponenten. Der so genannte Capture Driver klinkt sich in den Treiber der Netzwerkkarte oder des DFÜ-Adapters ein und sorgt dafür, dass alle gesendeten und empfangenen Pakete in einem Buffer zwischengespeichert werden. Über eine Reihe von Filtern kann der Sniffer sich auf Pakete beschränken, die bestimmten Kriterien wie etwa Netzwerkprotokoll, Zieladresse oder TCP-Port genügen. Da beispielsweise bei einem LAN mit 100 Mbit/s bis zu 144.000 Pakete pro Sekunde ankommen können, ist in solchen Netzen ein schneller Rechner zum Sniffen erforderlich.

Eine Analyse-Komponente untersucht je nach Anwendungszweck die Pakete auf Fehler bei der Datenübertragung oder auf das Vorhandensein von Hackern. Mögliche Angriffe werden anhand bestimmter Muster wie beispielsweise Portscans entdeckt. Bei kommerziellen Sniffern erfolgt die Analyse in Echtzeit. Das setzt natürlich ein entsprechend leistungsfähiges System voraus.

Der wichtigste Schritt ist die Dekodierung der Netzwerkpakete. Dabei bereitet der Sniffer die Pakete so auf, dass der Administrator die einzelnen Bestandteile unterscheiden kann, ohne genau zu wissen, welche Bytes zum Beispiel bei einem TCP/IP-Paket für den Zielport zuständig sind. Komfortablere Systeme suchen auch per DNS-Abfrage den Hostnamen zu IP-Adressen und bauen nötigenfalls mehrere Pakete wieder zu einem Datenstrom zusammen. Das erspart dem Administrator auch das händische Zusammensuchen der Sequenznummern in diesem Datenstrom sowie die Zuordnung der einzelnen Pakete beim Three-way-handshake.

Sniffing-Tools

Normalerweise finden Network Sniffer oder Protocol Analyzer in großen Netzen Verwendung. Sie sollen dem Administrator dabei helfen, Schwachstellen aufzudecken oder Fehler zu finden. Dementsprechend sind diese Applikationen auch mit einer Vielzahl von Features und Verwaltungsmöglichkeiten ausgestattet, wie beispielsweise der Aufschlüsselung des Datenverkehrs nach Protokollen und Sender/Empfänger sowie Trendanalysen und Tools zur automatischen Fehlererkennung.

Diese Funktionsvielfalt hat ihren Preis. Ein leistungsfähiges Programm zur Protokollüberwachung und -analyse mit verteilten Agenten kostet etwa 5000 Euro. Das geht weit über das hinaus, was man für ein Home Office oder ein kleines LAN benötigt.

Um zu untersuchen, ob ein Programm unerlaubt Daten sendet und welche, sind umfangreiche Analyse-Tools jedoch nicht notwendig. Auch die Dekodierung muss nicht unbedingt jedes verfügbare exotische Protokoll, wie etwa DecNet, unterstützen. Da die großen Hersteller aber keine abgespeckte Version ihrer teuren Management-Suites im Angebot haben, kommen immer mehr Free- und Shareware-Tools auf den Markt, die genau dieses Segment abdecken.

Besonders beliebt, da für Windows und Unix/Linux verfügbar, ist Wireshark (ehemals Ethereal). In der Linux-Variante greift Wireshark auf libpcap zurück, unter Windows auf WinPcap. Sollten Sie WLAN-Traffic inklusive aller Management-Frames sniffen wollen, raten die Wireshark-Entwickler zur Linux-Version, da unter Windows die meisten WLAN-Karten den Promiscuous Mode nicht oder nur unzureichend unterstützen.

Erste Schritte mit Wireshark

Am Beispiel von Wireshark zeigen wir die ersten Schritte zu einer erfolgreichen Überwachung des lokalen Netzwerkverkehrs, etwa um eine "Phone Home"-Software zu entlarven oder IP-Verbindungen zu untersuchen, deren Ursache unklar scheint. Je nachdem, ob der Rechner in einem lokalen Netz hängt oder per DFÜ-Verbindung mit dem Internet verbunden ist, sollten Sie zunächst einige grundlegende Filter definieren, die nur den Internet-Traffic des eigenen Rechners akzeptieren. Ansonsten müssen Sie sich aus einem Wust von Protokollen und Broadcasts die Pakete heraussuchen, die von Ihrem System ins Internet gehen.

Bei Wireshark gibt es zwei verschiedene Arten von Filtern: Die Capture-Filter und die Display-Filter. Erstere legen fest, welche Pakete überhaupt mitprotokolliert werden. Aus diesen können Sie dann über die Display-Filter selektieren, welche jeweils für Ihre aktuelle Analyse relevant sind. Ein kleines Problem existiert allerdings bei den beiden Filtervarianten. Sie arbeiten nämlich mit einer komplett unterschiedlichen Syntax.

Beim Capture-Filter, der die Syntax von libpcap verwendet, filtern Sie beispielsweise mit folgender Zeile nach einer MAC-Adresse:

ether host 08:00:08:15:ca:fe

Wollen Sie erst bei der Anzeige nach dieser MAC-Adresse selektieren, definieren Sie dagegen im Display-Filter folgenden Befehl:

eth.addr==08.00.08.15.ca.fe

Der Vorteil des Display-Filters ist zudem, dass er deutlich flexibler ist. So lässt sich beispielsweise nach einzelnen Feldern in allen unterstützten Pakettypen selektieren. Ob Sie nun einen Capture- oder einen Display-Filter verwenden, hängt von einer Reihe von Faktoren ab.

Display vs. Capture Filter

Gründe für und gegen einen Capture-Filter

+ Wenn viele Pakete gespeichert werden müssen, kann es bei hoher Netzbelastung dazu kommen, dass Pakete verloren gehen.

+ Je mehr Pakete gespeichert sind, desto mehr Arbeit muss der Display-Filter leisten, um eine vernünftige Analyse des Datenstroms zu ermöglichen.

- Ein einmal ausgefiltertes Paket ist weg und lässt sich nicht mehr herstellen. Also lieber zu wenig als zu viel filtern.

Gründe für und gegen einen Display-Filter

+ Alle Pakete einer Session sind noch vorhanden, können je nach Bedarf ein- oder ausgeblendet werden - etwa wenn man auf einen neuen Aspekt stößt, den man nun untersuchen möchte.

- Bei jeder Änderung des Display-Filters muss Wireshark alle Pakete des Datenstroms neu überprüfen, ob sie anzuzeigen sind oder nicht.

Erstes Capture

Im ersten Schritt verschaffen wir uns einen Überblick über den „normalen“ Netzwerkverkehr im LAN, der bei der Station ankommt. Dazu sollten alle Browser-Fenster und andere Programme wie E-Mail-Client oder MSN Messenger, die regelmäßig über das Netz kommunizieren, abgeschaltet sein.

Starten Sie Wireshark und rufen das Menu „Capture / Options“ auf. In dem nun auftauchenden Dialog wählen Sie die Netzwerkkarte aus und erhöhen gegebenenfalls die Puffergröße. Diese bestimmt, wie viele Pakete im Speicher gesammelt werden können, bevor Wireshark die Daten auf Festplatte schreiben muss. Ein höherer Wert empfiehlt sich besonders bei Netzen mit hohem Datenaufkommen.

Da wir die Pakete komplett haben wollen, bleibt das Häkchen vor „Limit each Packet to“ abgeschaltet. Es kommt auch kein Capture-Filter zum Einsatz. Unter Display Options sollten Sie „Update list of packets in real time“ nicht einschalten, ansonsten verbraucht Wireshark unnötig eine Menge Systemressourcen nur dafür, jedes neue Paket anzuzeigen. Nach einem Klick auf Capture beginnt Wireshark mit der Datensammlung.

Erste Analyse

Da wir uns zunächst nur für den „normalen“ Datenverkehr interessieren, lassen wir Wireshark ein paar Minuten laufen. Währenddessen gibt ein Fenster Auskunft über die bisher mitprotokollierten Pakete und zu welchen Protokollgruppen sie gehören. Nach einer Weile klicken Sie auf Stop, und Wireshark zeigt die gesammelten Pakete an.

Je nach Aufbau und Stationen im Netzwerk findet sich in der Liste eine Reihe von regelmäßig wiederkehrenden Paketen. Das sind beispielsweise immer wieder ARP-Anfragen, über die Stationen die zu einer IP gehörende MAC-Adresse ermitteln. Sind Router im Netz integriert, finden sich auch häufig Pakete, die zum Austausch von Routing-Informationen dienen. Windows-Rechner versenden häufig BROWSE-Nachrichten, mit denen sie sich im Netz ankündigen.

Im Beispiel fällt allerdings gleich eines auf: Eine Station verschickt regelmäßig NetBIOS-over-IPX-Pakete. Das sollte eigentlich nicht vorkommen, da das IPX-Protokoll obsolet ist. Leider zeigt Wireshark für dieses Paket nur die IPX-Adresse des Absenders an. Wenn Sie nun das Paket abwählen, erscheint im mittleren Fenster eine Aufschlüsselung des Pakets. Hier ist vor allem der Teil „IEEE 802.3 Ethernet“ interessant. Ein Klick auf das Plus-Zeichen öffnet den Bestandteil des Pakets, und Sie erhalten die MAC-Adresse des Absenders.

Störenfried ermitteln

Ein Rechtsklick auf die Zeile mit der Quelladresse öffnet ein Kontextmenu, aus dem heraus sich direkt ein Display-Filter erstellen lässt. Da alle Pakete von oder an diese Station interessant sein könnten, ist die Option „Apply as Filter / Selected“ zu wählen. Wireshark zeigt nun alle Pakete von oder an diese Station an.

Wir haben Glück, und es finden sich noch zwei BROWSE-Pakete in der Liste, über die wir nähere Informationen zu dieser Station finden können. Diese enthalten unter anderem auch den Windows-Namen des Rechners im Netz - in diesem Fall PC1, der zur Domain OZIE gehört. Mit diesem Wissen lässt sich der Rechner leicht ausmachen und entsprechend neu konfigurieren.

Filtern nach Kriterien

Wenn Sie den Datenverkehr nicht filtern, erhalten Sie auch alle Management-Pakete wie ARP-Requests, STP-Nachrichten oder Ähnliches. Diese Informationen sind nur relevant, wenn Sie ARP-Poisoning oder einen Fehler beim Spanning Tree Protocol vermuten. Um diese Pakete und IP-Broadcasts auszufiltern, reicht ein Capture-Filter, der als Quell- oder als Ziel-IP nur die eigene IP-Adresse erlaubt. Rufen Sie also einfach den Dialog „Capture / Options“ wieder auf und tragen Sie im Feld neben dem Button Capture-Filter Folgendes ein:

host <IP-Adresse>

Ersetzen Sie dabei <IP-Adresse> durch die IP der Netzwerkkarte, mit der Sie den Datenverkehr protokollieren wollen. Bei bestimmten Verdachtsmomenten hinsichtlich verwendeter Ports lassen sich die Filter weiter eingrenzen, um das Datenaufkommen in Grenzen zu halten. So würde beispielsweise die folgende Zeile nur Pakete von oder an die eigene Station selektieren, die http-Traffic enthalten:

host <IP-Adresse> and tcp port 80

Wie bereits erwähnt, lassen sich entsprechende Pakete aber auch später noch in der Anzeige selektieren.

Fazit

Datenschutzexperten werden angesichts der Möglichkeiten des Sniffings die Hände über dem Kopf zusammenschlagen. Dennoch macht Sniffing Sinn und ist auch notwendig. Einerseits um Fehler im LAN aufzuspüren und andererseits, um Hacker oder "Phone Home"-Software aufzuspüren. Für Letzteres reicht Wireshark allemal aus. Es muss also nicht immer die Lösung für 5000 Euro und mehr sein.

Ein weiterer Vorteil der Analyse-Tools: Sie helfen ungemein beim Verständnis der verschiedenen Netzwerkprotokolle. So wird beispielsweise unser Grundlagenbeitrag TCP/IP um einiges einsichtiger, wenn man parallel mit einem Sniffer den Datenfluss verfolgt. Dennoch sollten alle Möchtegern-Sniffer an dieser Stelle vorgewarnt sein: Sniffing zum Zwecke der Datenausspähung ist strafbar.

Ausblick

Im nächsten Teil gehen wir auf spezielle Protokolle und auf Besonderheiten in geswitchten und drahtlosen Netzwerken ein. Zudem zeigen wir Wege auf, Sniffer zu erkennen. (mha)