Make your own free website on Tripod.com


vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisnächstes Kapitel


26

Spoofing-Attacken

In diesem Kapitel lernen Sie etwas über Spoofing-Attacken: wie sie durchgeführt werden und wie Sie sie verhindern können.

26.1 Was ist Spoofing?

Spoofing läßt sich in einem Satz beschreiben: Es ist die fortgeschrittene Technik der Fälschung von Daten auf einem Netzwerk durch Vortäuschung einer falschen Absenderadresse, oft mit der Absicht, durch die gefälschte Absenderadresse authentifiziert zu werden.

An dieser Definition können Sie schon erkennen, daß Spoofing ein recht komplizierter Prozeß ist. Aber keine Sorge: Am Ende dieses Kapitels werden Sie verstanden haben, wie Spoofing funktioniert und wie Sie es verhindern können.

26.2 Grundprinzipien der Internet-Sicherheit

Es gibt zwei Grundbegriffe bei der Internet-Sicherheit:

Vertrauen ist die Beziehung zwischen Rechnern, die autorisiert sind, sich miteinander zu verbinden. Authentifizierung ist der Prozeß, den diese Rechner verwenden, um sich gegenseitig zu identifizieren.

Vertrauen und Authentifizierung stehen normalerweise im umgekehrten Verhältnis zueinander. D.h., wenn zwischen Rechnern ein hohes Vertrauen herrscht, ist keine strenge Authentifizierung erforderlich. Wenn andererseits wenig oder kein Vertrauen zwischen den Systemen besteht, ist eine rigorose Authentifizierung vonnöten.

Das sind eigentlich ganz ähnliche Regeln wie die, nach denen sich Menschen verhalten. Wenn z.B. Ihr bester Freund an Ihrer Haustür klingelt, lassen Sie ihn gleich herein. Warum auch nicht? Sie vertrauen ihm ja. Wenn jedoch ein Fremder anklopfen würde, würden Sie schon gerne zuerst wissen, um wen es sich handelt, bevor Sie ihn hereinlassen.

26.2.1 Authentifizierungsmethoden

Obwohl Sie es vielleicht gar nicht realisieren, werden Sie ständig authentifiziert. So müssen Sie wahrscheinlich bei den folgenden Diensten einen Benutzernamen und ein Paßwort angeben, um sie nutzen zu können:

Heutzutage fordern auch die meisten abonnierten Web-Sites einen Benutzernamen und ein Paßwort an. Sie werden jeden Tag ziemlich rigoros authentifiziert. Ihnen ist klar, was das bedeutet? Das Internet vertraut Ihnen nicht!

Die Authentifizierung von Menschen beinhaltet also ein Paßwort-Schema. (Einige Modelle verwenden einfache Benutzername/Paßwort-Schemata, während andere komplexer sind, wie z.B. auf Einmalpaßwörtern basierende Challenge-Response-Systeme. Das Resultat ist jedoch dasselbe - entweder hat der Benutzer das korrekte Paßwort oder nicht.)

Rechner können auf andere Weise authentifiziert werden, je nach ihrer Vertrauensstellung. Z.B. kann ein Rechner durch seinen Hostnamen oder seine IP-Adresse authentifiziert werden. Die Verwendung von RHOSTS-Einträgen ist ein übliches Verfahren, um dies zu realisieren.

26.2.2 RHOSTS

Das RHOSTS-System kann verwendet werden, um eine Vertrauensbeziehung zwischen Rechnern herzustellen. In der Solaris-Man-Page wird dies so beschrieben:

Die Dateien /etc/hosts.equiv und .rhosts bilden die Datenbank zur »Fern-Authentifizierung« für rlogin(1), rsh(1), rcp(1) und rcmd(3N). Die Dateien spezifizieren entfernte Hosts und Benutzer, die als »vertrauenswürdig« angesehen werden. Vertrauenswürdige Benutzer erhalten ohne Angabe eines Paßworts Zugriff auf das lokale System.

Hinweis:

hosts.equiv-Dateien sind im wesentlichen .rhost-Konfigurationsdateien für das gesamte System. Diese werden von Root gesetzt und gelten für den gesamten Host. .rhosts-Dateien sind dagegen benutzerbasiert und gelten nur für bestimmte Benutzer und Verzeichnisse. (Deshalb sollte Benutzern nicht erlaubt sein, ihre eigenen .rhosts-Dateien zu erzeugen. Diese öffnen im ganzen System kleine Sicherheitslöcher.)

Eine .rhosts-Datei könnte z.B. so aussehen:

node1.sams.hacker.net hickory
node2.sams.hacker.net dickory
node3.sams.hacker.net doc
node4.sams.hacker.net mouse

Diese Datei legt fest, daß den vier angegebenen Rechnern (und den Benutzern hickory, dikkory , doc und mouse) vertraut wird. Diese können über die r-Utilities auf das lokale System zugreifen, ohne eine Paßwort-Authentifizierung durchlaufen zu müssen.

Um diesen Prozeß zu vervollständigen (und eine bidirektionale Vertrauensbeziehung herzustellen) müssen auch auf den vier Rechnern jeweils die entsprechenden rhost-Einträge vorgenommen werden.

Hinweis:

Zu den r-Utilities zählen folgende Anwendungen:

· rlogin - remote login. Dies funktioniert auf ähnliche Weise wie Telnet und bietet eine entfernte Login-Sitzung an.

· rsh - remote shell. Dies ermöglicht den Benutzern, Shell-Befehle auf dem entfernten Rechner auszuführen.

· rcp - remote file copy. Benutzer können mit Hilfe dieses Utilities Dateien von lokalen auf entfernte Rechner kopieren und umgekehrt. rcp basiert auf rsh.

· rcmd - remote command. Dies ermöglicht privilegierten Benutzern, Befehle auf entfernten Hosts auszuführen.

Alle vier r-Utilities verwenden die Schemata aus /etc/hosts.equiv oder .rhosts zur Überprüfung der Vertrauensstellung. Wenn diese Dateien leer sind oder gar nicht existieren, bestehen keine Vertrauensbeziehungen, und somit kann auch keine Spoofing-Attacke (dieser Art) ausgeführt werden.

Die zum Zeitpunkt der Verbindung durchgeführte Authentifizierung basiert einzig und allein auf der IP-Adresse der Quelle. Es ist bekannt, daß dieses Modell fehlerhaft ist, wie Steve M. Bellovin in »Security Problems in the TCP/IP Protocol Suite« erläutert:

Wenn es verfügbar ist, ist der am einfachsten auszunutzende Mechanismus das IP- Source-Routing. Angenommen, der Zielhost verwendet die umgekehrte Source-Route, die in einer TCP-Anforderung für Return-Traffic zur Verfügung gestellt worden ist... Der Angreifer kann sich dann jede gewünschte IP-Adresse aussuchen, einschließlich der Adresse eines vertrauenswürdigen Rechners im lokalen Netzwerk des Zielsystems.

Wegweiser:

»Security Problems in the TCP/IP Protocol Suite« von Steve M. Bellovin finden Sie unter ftp://ftp.research.att.com/dist/internet_security/ ipext.ps.Z.

Bis jetzt haben wir folgendes festgestellt:

Sie können sich jetzt wahrscheinlich denken, warum IP-Spoofing in der Cracker-Szene einen Kultstatus erreicht hat. Die meisten Angriffe beruhten früher auf Paßwortschemata; ein Cracker hat die Datei /etc/passwd gestohlen und sie geknackt. Dann setzte er seine Arbeit fort, nachdem er das Root-Paßwort (und mindestens einen Benutzernamen mit Paßwort) herausgefunden hatte. Beim Spoofing werden jedoch während des Angriffs weder ein Benutzername noch ein Paßwort übermittelt. Die Sicherheitsverletzung erfolgt sehr diskret.

26.3 Die Technik einer Spoofing-Attacke

Die bloße Tatsache, daß die Authentifizierung mit Quelladressen Schwachstellen hat, macht noch kein IP-Spoofing möglich. Denn der Aufbau einer Verbindung erfordert mehr als nur die richtige IP-Adresse. Dazu ist ein vollständiger, bestätigter Dialog zwischen den Rechnern nötig.

Sie können den Vorgang besser verstehen, wenn wir ihn in die folgenden Schritte unterteilen:

Die Fehlerprüfung von TCP erfolgt sequentiell. Wenn fünf Pakete gesendet werden, werden die Pakete 1, 2, 3, 4 und 5 in der Reihenfolge bearbeitet, in der sie erhalten worden sind. Jedem Paket wird zu seiner Kennzeichnung eine Nummer zugewiesen. Beide Hosts verwenden diese Nummer zur Fehlerprüfung und Berichterstattung.

In seinem Artikel »Sequence Number Attacks« hat Rik Farrow die Benutzung von Sequenznummern erläutert:

Die Sequenznummer wird verwendet, um den Erhalt der Daten zu bestätigen. Am Anfang einer TCP-Verbindung sendet der Client ein TCP-Paket mit einer Anfangssequenznummer, aber keine Bestätigung (da es noch keine geben kann). Wenn am anderen Ende der Verbindung eine Server-Applikation läuft, sendet der Server ein TCP- Paket mit seiner eigenen Anfangssequenznummer aus und einer Bestätigung: die Anfangssequenznummer des Pakets vom Client plus eins. Wenn das Client-System dieses Paket erhält, muß es seine eigene Bestätigung zurücksenden: die Anfangssequenznummer des Servers plus eins. Also sind drei Pakete erforderlich, um eine TCP- Verbindung herzustellen....

Wegweiser:

»Sequence Number Attacks« von Rik Farrow finden Sie online unter http:// www.madness.org/hack/docs/sequence_attacks.txt.

Der Angreifer sieht sich mit zwei Problemen konfrontiert. Erstens muß er die Quelladresse fälschen, und zweitens muß er einen Sequenzdialog mit dem Zielrechner führen. Diese zweite Aufgabe macht den Angriff so kompliziert, da dies kein willkürlicher Dialog ist. Das Ziel legt die Anfangssequenznummer fest, und der Angreifer muß mit der korrekten Antwort reagieren.

Das Komplizierte daran ist, daß der Angreifer die korrekte Antwort erraten muß, da er nie wirkliche Pakete von dem Zielrechner erhält. Robert Morris erläutert dies in seinem Artikel »A Weakness in the 4.2BSD UNIX TCP/IP Software« folgendermaßen:

4.2BSD hat eine globale Anfangssequenznummer, die jede Sekunde um 128 erhöht wird, und um 64, nachdem jede Verbindung gestartet worden ist; jede neue Verbindung beginnt mit dieser Nummer. Wenn ein SYN-Paket mit einer gefälschten Adresse von einem Host gesendet wird, wird der Zielhost die Antwort natürlich an den Host senden, den er als die Quelle vermutet, und nicht an den Host, der die Adresse gefälscht hat. Dieser muß daher herausfinden oder erraten, welche Sequenznummer dieses verlorengegangene Paket hatte, um es bestätigen zu können und den Ziel-TCP- Port in den Zustand ESTABLISHED (Verbindung hergestellt) zu versetzen.

Wegweiser:

Morris' Artikel finden Sie unter ftp://ftp.research.att.com/dist/
internet_security/117.ps.Z
.

Da das alles vielleicht ein bißchen verwirrend ist, möchte ich Ihnen den Vorgang noch einmal an einem fiktiven Beispiel erklären. Nehmen wir einmal folgendes an:

Das Problem ist, daß alle Antworten von 207.171.0.111 an 199.171.190.9 geleitet werden (und nicht an den Rechner des Crackers). Deshalb kann der Cracker den Paketverkehr nicht sehen. Er fährt sozusagen blind.

Diese Situation legt dem Cracker ein ernstzunehmendes Hindernis in den Weg. Was passiert, wenn 199.171.190.9 auf die Pakete des Ziels antwortet, während der Cracker noch dabei ist, seinen Angriff durchzuführen? Das würde die ganze Operation gefährden. Deshalb muß der Cracker noch eine letzte Vorbereitung treffen, bevor er mit dem eigentlichen Angriff beginnt: Er muß 199.171.190.9 lahmlegen.

Hinweis:

199.171.190.9 lahmzulegen ist einfach. Dazu setzt der Cracker 199.171.190.9 einer syn-flood-Attacke aus. Diese bombardiert 199.171.190.9 mit Verbindungsanforderungen, so daß dieser Rechner zeitweilig nicht mehr in der Lage sein wird, ankommende Verbindungsanforderungen zu bearbeiten. (Das funktioniert aufgrund der Art und Weise, wie die Verbindungsanforderungen bearbeitet werden. Jedesmal, wenn eine Verbindungsanforderung erhalten wird, versucht das Ziel, den dreistufigen Handshake zu vervollständigen. Schließlich läuft die vorgegebene Zeitspanne für die Anforderung ab, und das Ziel versucht, die nächste Anforderung zu bearbeiten. Alle Verbindungsanforderungen werden in der Reihenfolge bearbeitet, in der sie empfangen werden. Wenn das Ziel also mit Hunderten solcher Anfragen bombardiert wird, verstreicht einige Zeit, bis dieser Host neue Verbindungsanfragen bearbeiten kann.)

An dieser Stelle will ich noch einmal rekapitulieren, was ich bis jetzt geschildert habe.

26.4 Schritte einer erfolgreichen Spoofing-Attacke

Dies sind die wesentlichen Schritte, die unternommen werden müssen:

26.5 Erraten der Sequenznummer

Die ersten vier Schritte sind einfach. Der schwierige Teil ist das Erraten der korrekten Sequenznummer. Dazu muß der Cracker einen Testlauf durchführen:

Als nächstes untersucht der Cracker die aufgezeichneten Sequenznummern, die er vom Zielrechner erhalten hat. Bei seiner Analyse versucht er, ein Muster zu erkennen. Er weiß z.B., daß diese Sequenznummern einheitlich durch einen Algorithmus inkrementiert werden, der speziell zu diesem Zweck entwickelt wurde. Seine Aufgabe ist es nun, diesen Algorithmus herauszufinden oder zumindest die Zahlenwerte, um welche die Nummern inkrementiert werden. Sobald er dies herausgefunden hat, kann er zuverlässig vorhersagen, welche Sequenznummern für die Authentifizierung erforderlich sind.

Jetzt ist er bereit, seine Spoofing-Attacke zu starten. Insgesamt ist Spoofing eine außergewöhnliche Technik. Noch außergewöhnlicher ist jedoch, daß den Sicherheitsexperten bereits seit 1985 bekannt ist, daß Spoofing möglich ist.

26.5.1 Öffnen eines geeigneteren Sicherheitslochs

Sobald die Verbindungs- und Authentifizierungsverfahren abgeschlossen sind, muß der Cracker sich ein geeigneteres Loch suchen, um in das System einzudringen. (Er sollte nicht jedesmal auf Spoofing angewiesen sein, wenn er eine Verbindung herstellen will.) Deshalb baut er sich sein eigenes Loch. Die einfachste Methode ist, die Datei .rhosts so umzuschreiben, daß das nun offengelegte System Verbindungen von jeder Quelle akzeptiert, ohne eine zusätzliche Authentifizierung zu verlangen.

Sobald dies erledigt ist, kappt der Cracker die Verbindung und verbindet sich erneut. Jetzt kann er sich ohne Paßwort einloggen und hat freien Zutritt zu dem System.

26.5.2 Wer kann Opfer einer Spoofing-Attacke werden?

IP-Spoofing kann nur gegen Systeme angewendet werden, auf denen bestimmte Dienste laufen. Viele Unix-Arten sind vielversprechende Ziele. (Das soll jedoch nicht den Eindruck vermitteln, daß Nicht-Unix-Systeme nicht durch Spoofing-Attacken verwundbar seien. Darüber schreibe ich später in diesem Kapitel noch etwas.)

Von den folgenden Konfigurationen und Diensten ist bekannt, daß sie angreifbar sind:

Um dies zu relativieren, sollten Sie folgendes bedenken: Die meisten Netzwerke verwenden IP-basierte Authentifizierung, und obwohl RPC, X und die r-Utilities Probleme für Unix- basierte Betriebssysteme aufwerfen, sind auch andere Betriebssysteme nicht immun.

Windows NT z.B. ist ebenfalls anfällig für Sequenznummer-Attacken. Sitzungen können durch Erraten der TCP-Sequenznummer »entführt« werden. Im Grunde ist dies ein Spoofing-Problem. Es betrifft eine Vielzahl von Netzwerkdiensten, nicht nur RPC. Es betrifft sogar Net-Bios- und SMB-Verbindungen. Exploit-Code für den Angriff finden Sie hier:

http://www.engarde.com/software/seqnumsrc.c

Wegweiser:

Sun RPC bezieht sich auf Sun Microsystems' Standard für Remote Procedure Calls, die es Benutzern ermöglichen, Systemaufrufe auszugeben, die transparent über Netzwerke hinweg funktionieren. Das RFC, das sich mit RPC beschäftigt, hat den Titel »RPC: Remote Procedure Call Protocol Specification«, und Sie finden es unter http://info.internet.isi.edu:80/in-notes/ rfc/files/rfc1057.txt.

26.5.3 Wie verbreitet sind Spoofing-Attacken?

Früher kamen Spoofing-Attacken selten vor. Seit Januar 1995 traten sie jedoch verstärkt auf. Im Defense Data Network Advisory vom Juli 1995 heißt es:

ASSIST hat Informationen über eine Vielzahl kürzlich erfolgter Spoofing-Attacken erhalten, die gegen Internet-Sites auf der ganzen Welt gerichtet waren. Ein Großteil der Zielsysteme von IP-Spoofing-Attacken sind Name-Server, Router und andere Netzwerkbetriebssysteme, und die Angriffe waren größtenteils erfolgreich.

Wegweiser:

Das DDN-Bulletin finden Sie online unter ftp://nic.ddn.mil/scc/sec- 9532.txt.

Vor 1995 war Spoofing eine sehr basisnahe Attacke. Jeder, der einen Spoof probieren wollte, mußte ein sehr gutes Hintergrundwissen über TCP/IP, Sockets und Netzwerkprogrammierung im allgemeinen haben. Das ist heute nicht mehr so.

Als bewiesen war, daß Spoofing tatsächlich funktioniert (vorher war es nur Theorie), machte Spoofing-Code sofort die Runde. Heute sind vorgefertigte Spoofing-Utilities an jeder Ecke erhältlich. In den folgenden Abschnitten stelle ich Ihnen einige davon vor.

ipspoof

Autor: unbekannt

Sprache: C

Kompilierungsplattform: Unix

Ziel-Plattform: Unix

Voraussetzungen: C-Compiler, IP-Header-Dateien, Unix

URL: http://www.rootshell.com/archive-j457nxiqi3gq59dv/199707/ipspoof.c

rbone

Autor: unbekannt

Sprache: C

Kompilierungsplattform: Linux

Ziel-Plattform: Unix

Voraussetzungen: C-Compiler, IP-Header-Dateien, Linux

URL: http://www.net-security.sk/network/spoof/rbone.tar.gz

synk4.c (Syn Flooder von Zakath)

Autor: Zakath mit Ultima

Sprache: C

Kompilierungsplattform: Linux

Ziel-Plattform: Unix

Voraussetzungen: C-Compiler, IP-Header-Dateien, Linux

URL: http://www.rat.pp.se/hotel/panik/archive/synk4.c

1644

Autor: Vasim V.

Sprache: C

Kompilierungsplattform: FreeBSD

Ziel-Plattform: Unix

Voraussetzungen: C-Compiler, IP-Header-Dateien, FreeBSD

URL: http://users.dhp.com/~fyodor/sploits/ttcp.spoofing.problem.html

Spoofit

Autor: Brecht Claerhout

Sprache: C

Kompilierungsplattform: Linux

Ziel-Plattform: Unix

Voraussetzungen: C-Compiler, IP-Header-Dateien, Linux 1.3 oder höher

URL: http://www.asmodeus.com/archive/IP_toolz/SPOOFIT.H

Hinweis:

Es gibt auch ein UDP-Spoofing-Utility. Um es auszuprobieren, können Sie es sich von folgender Site herunterladen: http://www.asmodeus.com/archive/IP_toolz/ARNUDP.C .

26.6 Dokumente, die sich speziell mit IP-Spoofing beschäftigen

Es gibt viele Dokumente im Web, die sich mit IP-Spoofing beschäftigen. Ich kann Ihnen folgende empfehlen:

A Weakness in the 4.2BSD UNIX TCP/IP Software. Robert T. Morris. Technical Report, AT&T Bell Laboratories. ftp://research.att.com/dist/internet_security/117.ps.Z.

Sequence Number Attacks. Rik Farrow. (UnixWorld.) http://www.madness.org/hack/docs/ sequence_attacks.txt.

Security Problems in the TCP/IP Protocol Suite. Steve Bellovin. ftp://research.att.com/ dist/internet_security/ipext.ps.Z.

Defending Against Sequence Number Attacks. S. Bellovin; Request for Comments: 1948. AT&T Research. Mai 1996. http://info.internet.isi.edu:80/in-notes/rfc/files/ rfc1057.txt.

A Short Overview of IP Spoofing. Brecht Claerhout. http://www.unitedcouncil.org/c/IP- spoof.txt. (Ausgezeichnete Behandlung des Themas durch einen Freelancer.)

Internet Holes - Eliminating IP Address Forgery. Management Analytics. http:// solaris1.mysolution.com/~rezell/files/text/ipaddressforgery.txt.

Firewalls Mail Archive Discussion on IP Spoofing. Verschiedene Autoren. http:// solaris1.mysolution.com/~rezell/files/text/spoofing.txt.

Ask Woody about Spoofing Attacks. Bill Woodcock von Zocalo Engineering. http:// www.netsurf.com/nsf/v01/01/local/spoof.html.

IP-Spoofing Demystified Trust-Relationship Exploitation. route@infonexus.com (Michael Schiffman). http://www.fc.net/phrack/files/p48/p48-14.html.

TCP SYN Flooding and IP Spoofing Attacks. (Konfiguration von Filtern für Telebit-Produkt.) http://www.telebit.com/SupporT/tcpflood.html.

26.6.1 Wie kann ich Spoofing-Attacken verhindern?

Indem Sie Ihr Netzwerk so konfigurieren, daß es Pakete aus dem Internet abweist, die angeblich von einer lokalen Adresse stammen. Dies geschieht auf Router-Ebene.

Hinweis:

Obwohl Router eine Lösung des allgemeinen Spoofing-Problems darstellen, arbeiten auch sie auf Grundlage der Untersuchung der Quelladresse. Deshalb können sie nur vor ankommenden Paketen schützen, die vortäuschen, aus Ihrem internen Netzwerk zu kommen. Wenn Ihr Netzwerk (aus unerfindlichen Gründen) fremden Hosts vertraut, können Router nicht vor einer Spoofing-Attacke schützen, die durch die Vortäuschung der Adresse eines solchen Hosts erfolgt.

Es gibt mehrere Produkte, die Anti-Spoofing-Technologien beinhalten. Hier sind einige davon:

Einige Produkte können auch testen, wie verletzbar Ihr Netzwerk für Spoofing-Attacken ist. Internet Security Systems (ISS), http://iss.net/, bietet eine Testversion an, die man auf einem einzelnen lokalen Host verwenden kann. (In Kapitel 10, »Scanner«, finden Sie noch weitere Scanner, die diese Diagnose durchführen.)

Warnung:

Auch eine Firewall schützt Sie nicht automatisch vor Spoofing-Attacken. Wenn Sie erlauben, daß interne Adressen durch den äußeren Teil der Firewall zugreifen können, sind Sie immer noch verwundbar. Außerdem haben Sie ein Problem, wenn Ihre Firewall Proxies hat, die ihre Authentifizierung auf Grundlage der IP-Adresse vornehmen. (Diese Art der Authentifizierung unterscheidet sich nicht von anderen Arten der IP-basierten Authentifizierung.)

Eine weitere vorbeugende Maßnahme ist die genaue Überwachung Ihres Netzwerks. Versuchen Sie, Pakete zu identifizieren, die vorgeben, aus Ihrem Netzwerk zu stammen, und dennoch versuchen, durch die Firewall oder die erste Netzwerkschnittstelle Eintritt zu erhalten, der sie in Ihrem Netz begegnen. Der folgende Abschnitt ist ein Auszug aus dem Defense Information System Network Security Bulletin #95-29. Sie finden es unter ftp:// nic.ddn.mil/scc/sec-9532.txt.

Es gibt mehrere Arten von Paketen, nach denen Sie Ausschau halten sollten. Das simpelste ist jedes TCP-Paket, bei dem der Netzwerkteil (Klasse A, B oder C oder ein Präfix und eine Länge wie durch die Classless-Inter-Domain-Routing(CIDR)-Spezifikation festgelegt) der Quell- und Zieladressen derselbe ist, aber keine von Ihrem lokalen Netzwerk stammt. Diese Pakete würden normalerweise nicht aus dem Quellnetzwerk gelangen, es sei denn, es gäbe ein Routing-Problem, das weiter untersucht werden sollte, oder die Pakete stammten in Wirklichkeit von einer Quelle außerhalb Ihres Netzwerks. Letzteres könnte auch bei mobilem IP-Testen vorkommen, aber ein Angreifer, der die Quelladresse vortäuscht, ist der weitaus wahrscheinlichere Fall.

Wenn Sie es sich leisten können, gibt es außerdem noch die Möglichkeit, Spoofing durch Protokollierung (sogar in Echtzeit) aufzuspüren. Einen Vergleich von Verbindungen zwischen vertrauenswürdigen Hosts durchzuführen, ist ein guter Anfang. Nehmen wir z.B. an, daß die Hosts A und B eine aktive Sitzung haben. Normalerweise machen beide Angaben darüber, daß die Sitzung läuft. Wenn einer von beiden dies nicht tut, ist eine Spoofing- Attacke im Gange.

26.6.2 Andere seltsame und ausgefallene Spoofing-Attacken

IP-Spoofing ist nur eine Form des Spoofing. Es gibt noch andere Spoofing-Techniken, darunter ARP- und DNS-Spoofing. Wir wollen uns beide kurz ansehen.

26.7 ARP-Spoofing

ARP-Spoofing ist eine Technik, die den ARP-Cache ändert. Das funktioniert folgendermaßen: Der ARP-Cache enthält Informationen über das Hardware-IP-Mapping. Sie behalten Ihre Hardware-Adresse bei, geben aber vor, daß die IP-Adresse die eines vertrauenswürdigen Hosts ist. Diese Informationen werden gleichzeitig an das Ziel und den Cache gesendet. Von diesem Zeitpunkt an werden Pakete vom Ziel zu Ihrer Hardware-Adresse geleitet. (Das Ziel »glaubt« nun, Sie seien der vertrauenswürdige Host.)

Diese Art des Angriffs unterliegt jedoch mehreren Einschränkungen. Eine ist, daß der Trick schiefgehen könnte, wenn intelligente Hubs oder Router passiert werden müssen. Deshalb funktioniert ARP-Spoofing nur unter bestimmten Bedingungen zuverlässig, und selbst dann könnte es auf das lokale Netzwerksegment beschränkt sein. Außerdem verlieren Cache-Einträge bei manchen Betriebssystemen ziemlich schnell ihre Gültigkeit. Sie müssen also regelmäßig zurückgehen und die Cache-Einträge aktualisieren, während Sie den Angriff ausüben.

Es gibt verschiedene Möglichkeiten, ARP-Spoofing zu verhindern. Eine ist, Ihre Adreß- Mappings in Stein zu meißeln, was wiederum andere Nachteile hat. Paul Buis erläutert dies in »Names und Addresses« so:

Viele Betriebssysteme haben jedoch Vorkehrungen dafür, die Einträge in dem ARP- Cache »statisch« zu machen, so daß sie nicht alle paar Minuten ablaufen. Ich empfehle Ihnen, diese Eigenschaft zur Abwehr von ARP-Spoofing zu benutzen. Allerdings müssen Sie dann den Cache jedesmal manuell aktualisieren, wenn sich eine Hardware-Adresse ändert.

Wegweiser:

Das vollständige Dokument von Paul Buis finden Sie unter
http://www.cs.bsu.edu/homepages/peb/cs637/nameadd/.

Eine andere Möglichkeit ist die Verwendung von ARPWATCH. ARPWATCH ist ein Utility, das Änderungen Ihrer IP/Ethernet-Mappings überwacht. Wenn Änderungen festgestellt werden, erhalten Sie eine E-Mail, die Sie darüber informiert. (Außerdem werden die Informationen protokolliert, so daß Sie den Angreifer leichter aufspüren können.) ARPWATCH bekommen Sie unter:

http://ftp.su.se/pub/security/tools/audit/arpwatch/arpwatch-1.7.tar.gz

Hinweis:

Um ARPWATCH zu verwenden, benötigen Sie Unix, C und AWK. (Das Utility ist nur als Quellcode erhältlich.)

26.8 DNS-Spoofing

Beim DNS-Spoofing legt der Cracker den DNS-Server offen und ändert explizit die Tabellen zur Zuordnung von Hostnamen und IP-Adressen. Diese Änderungen werden in die Übersetzungstabellen-Datenbanken auf dem DNS-Server geschrieben. Wenn ein Client also eine Auflösung eines Hostnamens anfordert, erhält er eine gefälschte Adresse; diese Adresse ist die IP-Adresse eines Rechners, der sich komplett unter der Kontrolle des Crackers befindet.

Die Wahrscheinlichkeit, daß so etwas passiert, ist relativ gering. Aber wenn es passiert, könnte es zu einer großen Gefährdung führen. Man sollte sich aufgrund der Seltenheit solcher Angriffe nicht in Sicherheit wiegen. Weiter vorne in diesem Kapitel habe ich ein DDN- Advisory zitiert, das eine Vielzahl von Angriffen gegen DNS-Rechner dokumentiert hat. Auch ein wichtiges CIAC-Advisory greift dieses Thema auf:

Obwohl Sie vielleicht momentan bereit sind, die mit der Verwendung dieser Dienste verbundenen Risiken zu akzeptieren, sollten Sie die Auswirkungen berücksichtigen, die gefälschte DNS-Informationen haben könnten... Eindringlinge können BIND durch Spoofing-Attacken dazu bringen, falsche Namensdaten auszugeben. Einige Systeme und Programme sind für die Authentifizierung auf diese Informationen angewiesen, so daß es möglich ist, diese Systeme zu täuschen und sich unbefugten Zugriff zu verschaffen.

Wegweiser:

Der obige Abschnitt ist ein Auszug aus dem CIAC-Advisory mit dem Titel »Domain Name Service Vulnerabilities«. Sie finden es online unter http:// ciac.llnl.gov/ciac/bulletins/g-14.shtml.

DNS-Spoofing wurde zumindest auf einigen Plattformen inzwischen automatisiert. Es gibt ein Utility mit Namen Jizz, geschrieben von Nimrood (und basierend auf Code von Johannes Erdfelt). Sie können es sich von folgender Adresse herunterladen:

http://dewmed.ml.org/online/jizz.c

Es gibt ein interessantes Dokument, das eine mögliche neue Technik des DNS-Spoofing behandelt - »Java Security: From HotJava to Netscape and Beyond« von Drew Dean, Edward W. Felten und Dan S. Wallach. Bei dieser Technik ruft ein Java-Applet wiederholt den Rechner des Angreifers auf, der eigentlich ein geknackter DNS-Server ist. Auf diese Weise ist es schließlich möglich, DNS-Anfragen von dem Default-Name-Server an einen nicht vertrauenswürdigen umzuleiten. Von dort aus kann der Angreifer den Client oder das Netzwerk offenlegen. (Dieser Bug wurde Berichten zufolge in Version 1.02 behoben.)

Wegweiser:

»Java Security: From HotJava to Netscape and Beyond« finden Sie unter http://www.cs.princeton.edu/sip/pub/oakland-paper-96.pdf.

Es ist jedoch ziemlich leicht, DNS-Spoofing zu entdecken. Wenn Sie einen der DNS-Server unter Verdacht haben, sollten Sie die anderen maßgeblichen DNS-Server des Netzwerks pollen. Wenn der ursprünglich betroffene Server nicht bereits seit einiger Zeit offengelegt ist, wird es sofort Anzeichen dafür geben, daß er Opfer einer Spoofing-Attacke geworden ist. Andere maßgebliche Server werden Antworten geben, die von denen des geknackten DNS- Servers abweichen.

Das Pollen ist vielleicht nicht ausreichend, wenn der ursprünglich betroffene Server bereits seit geraumer Zeit offengelegt ist. Die gefälschten Adresse/Hostname-Tabellen könnten bereits an andere DNS-Server des Netzwerks weitergeleitet worden sein. Wenn Sie irgendwelche Unstimmigkeiten bei der Namensauflösung bemerken, können Sie ein Script-Utility namens DOC (domain obscenity control) einsetzen. In der Dokumentation dieses Utilities heißt es:

DOC ist ein Programm, das ein Fehlverhalten von Domains diagnostiziert, indem es Anfragen an die entsprechenden Domain-Name-Server aussendet und die daraufhin erfolgten Ausgaben einer Reihe von Analysen unterzieht.

Wegweiser:

DOC finden Sie unter ftp://coast.cs.purdue.edu/pub/tools/unix/
doc.2.0.tar.Z
.

Andere Techniken zur Abwehr von DNS-Spoofing-Attacken beinhalten die Verwendung von umgekehrten (reverse) DNS-Schemata. Dabei wird versucht, die umgekehrte mit der normalen Suche abzugleichen. Diese Technik hat jedoch wahrscheinlich nur begrenzten Nutzen. Aller Wahrscheinlichkeit nach hat der Cracker sowohl die normalen als auch die umgekehrten Tabellen verändert.

26.9 Zusammenfassung

Spoofing ist inzwischen eine beliebte Angriffsart, und wenn es von außerhalb des Netzwerks erfolgt, hinterläßt es relativ wenig Spuren. Sie sollten zumindest scheinbare lokale Anfragen abblocken, die von außerhalb Ihres Netzwerks stammen, und Sie sollten - wie immer - Utilities zur Protokollierung einsetzen. Schließlich empfehle ich Ihnen noch, immer die neuesten Advisories zu lesen - insbesondere die von Ihrem Router-Hersteller. Neue Spoofing- Attacken kommen alle paar Monate zum Vorschein.



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisKapitelanfangnächstes Kapitel