Workshop: Sniffing mit Et hereal

26.04.2006
Von Mike Hartmann
Mit Netzwerk-Sniffern kann man Fehler im LAN aufspüren, aber auch Programme enttarnen, die Daten über den ahnungslosen Benutzer versenden. tecChannel.de zeigt, wie es geht.

Von Mike Hartmann, tecChannel.de

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 Internet Explorer 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 ge- sendeten und empfangenen Pa-kete 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.

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 Analysekomponente 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 beispiels-weise "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 5.000 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 "Ethereal" (www.ethereal.com). In der Linux-Variante greift Ethereal auf "libpcap" (www.tcpdump .org) zurück, unter Windows auf "WinPcap" (www.winpcap.org). Sollten Sie WLAN-Traffic inklu- sive aller Management-Frames sniffen wollen, raten die Ethereal-Entwickler zur Linux-Version, da unter Windows die meisten WLAN-Karten den Promiscuous Mode nicht oder nur unzureichend unterstützen.

Erste Schritte mit Ethereal

Am Beispiel von Ethereal 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 Ethereal 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 Filtervari- anten. 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 Dis-play-Filters muss Ethereal 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 Ethereal 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 Ethereal die Daten auf Festplatte schreiben muss. Ein höherer Wert emp-fiehlt 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 Ethereal unnötig eine Menge Systemressourcen nur dafür, jedes neue Paket anzuzeigen. Nach einem Klick auf Capture beginnt Ethereal mit der Datensammlung.

Erste Analyse

Da wir uns zunächst nur für den "normalen" Datenverkehr interessieren, lassen wir Ethereal 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 Ethereal 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.

In unserem 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 Ethereal 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 Kontextmenü, 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. Ethereal 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-Poi- soning 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.

E-Mail überwachen

Viele Internet-Protokolle wie POP3, SIP, SMTP oder FTP laufen unverschlüsselt über das Netzwerk. Und obwohl beispielsweise inzwischen fast alle E-Mail-Server und auch die Freemail-Anbieter eine verschlüsselte Übertragung bieten, nutzen nur wenige Anwender diese Möglichkeit. Kann man beim eigenen Mail-Server im LAN die Nutzung der verschlüsselten Kommunikation noch erzwingen, so lässt es sich nicht oder nur mit rigorosen Maßnahmen wie einem kompletten Verbot verhindern, dass die Anwender im LAN private Mail-Accounts unverschlüsselt abfragen.

So kann es dann passieren, dass einem Hacker die Sache leichter gemacht wird, etwa weil der Benutzer gleiche Passwörter für Firmen-Logins und seinen privaten Mail-Account hat oder weil er Firmeninformationen über den Mail-Account erhält und verschickt. Um zu ermitteln, ob ein User im Netz unverschlüsselte E-Mail-Kommunikation betreibt, reicht ein einfacher Capture-Filter:

tcp port 110 or tcp port 25 or tcp port 143

Mit diesem Filter erhalten Sie sämtlichen Datenverkehr an die drei nicht verschlüsselten Ports für E-Mail: POP3, SMTP und IMAP. Um zu testen, ob er auch erwartungsgemäß funktioniert, starten Sie einfach Ihren E-Mail-Client und lassen ihn Mails über POP3 abholen.

E-Mail verschlüsseln

Bei der ungesicherten Verbindung über den POP3-Port fällt bei der Paketanalyse gleich auf, dass das Passwort im Klartext übertragen wird: ein erhebliches Sicherheitsrisiko, da im Netz jeder einen Sniffer benutzen und so die Passwörter sammeln könnte. Sehr sicherheitsbewusste Administratoren setzen deshalb einen Sniffer auf POP3-Verbindungen an, damit sie ihre Benutzer vor diesem Risiko warnen können. Ähnlich sensitive Protokolle sind FTP, Telnet oder HTTP.

Die Fortsetzung dieses Beitrags finden Sie nächste Woche in der Computer- Partner-Ausgabe 19/06.

Zur Startseite