Angriffe von au�en

ArticleCategory:[Artikel-Kategorie]

SystemAdministration

AuthorImage:[Bild des Autors]

Eric Detoisien

TranslationInfo:[Autor und �bersetzer]

original in fr Eric Detoisien 

fr to de Viktor Horvath

AboutTheAuthor[�ber den Autor]

Eric Detoisien ist IT-Sicherheitsexperte, leidenschaftlich an allen Gebieten des Themas Sicherheit interessiert und einer der Fachleute der rstack-Gruppe - www.rstack.org -

Abstract[Zusammenfassung]

Dieser Artikel ist in einer Sonderausgabe zum Thema Sicherheit im Linux Magazine France erschienen. Der Herausgeber, die Autoren und die �bersetzer haben es freundlicherweise gestattet, da� alle Artikel dieser Ausgabe in loser Folge in LinuxFocus publiziert werden. So bietet Ihnen LinuxFocus diese Artikel einen nach dem anderen an, je nach ihrer �bersetzung ins Englische. Vielen Dank allen Personen, die sich mit dieser Arbeit besch�ftigen. Diese Zusammenfassung wird vor einem jeden dieser Artikel wiederholt.

Der Artikel beschreibt die verschiedenen Angriffsm�glichkeiten von au�en, die ein Pirat gegen ein Rechnernetzwerk benutzen kann. Wir kommen bei diesem Thema auf prinzipielle Netzattacken, auf Angriffe durch Programml�cken und auf Denial-of-Service-Attacken zu sprechen.

ArticleIllustration:[Titelbild des Artikels]

Attacks

ArticleBody:[Text des Artikels]

Angriffe auf ein Netzwerk

Netzattacken st�tzen sich auf Verwundbarkeiten, die direkt an die Protokolle oder an ihre Umsetzung gebunden sind. Davon gibt es eine gro�e Zahl. Dennoch sind die meisten von ihnen blo� Varianten der f�nf heutzutage bekanntesten Angriffe.

Fragment-Angriffe

Dieser Angriff umgeht den von IP-Filteranlagen angebotenen Schutz. Um ihn durchzuf�hren, benutzen Piraten zwei Methoden; die „Tiny Fragments“ und das „Fragment Overlapping“. Diese Attacken haben eine lange Geschichte, die heute verwendeten Firewalls ber�cksichtigen sie l�ngst.

Tiny Fragments

Gem�� RFC (Request For Comment) 791 (IP) m�ssen alle Internet-Knoten (Router) Pakete von 68 Bytes Gr��e �bertragen k�nnen, ohne sie der Optimierung wegen aufzusplitten. Tats�chlich betr�gt die minimale Headergr��e eines IP-Paketes 20 Bytes, wenn keine Optionen vorhanden sind, ansonsten ist das Maximum 60 Bytes. Das IHL-Feld (Internet Header Length) enth�lt die Headergr��e, gemessen in 32-Bit-Worten. Dieses Feld belegt 4 Bits, die Zahl der m�glichen Werte ist 2^4 - 1 = 15 (es darf den Wert 0000 nicht annehmen). Die Maximalgr��e des Headers betr�gt also wirklich 15*4 = 60 Bytes. Schlie�lich wird das Feld Fragment Offset, das den Abstand des ersten Bytes des Fragments vom vollst�ndigen Datagramm angibt, in Bl�cken zu 8 Byte geschrieben. Ein Datenfragment ist also mindestens 8 Bytes lang. Damit sind wir genau bei einer Gesamtsumme von 68 Bytes angekommen.

Die Attacke besteht darin, eine TCP-Verbindungsanfrage auf zwei IP-Pakete aufzuteilen. Das erste von 68 Bytes Gr��e enth�lt an Daten lediglich die ersten 8 Bytes des TCP-Headers (Herkunfts- und Zielport sowie die Sequenznummer). Die Daten des zweiten IP-Pakets enthalten folglich die TCP-Verbindungsanfrage (Flag SYN auf 1 und Flag ACK auf 0).

Nun wenden IP-Filter aber dieselbe Filterregel auf alle Fragmente eines Pakets an. Das Filtern des ersten Fragments (Fragment Offset gleich 0) bestimmt also die Regel, die auf die anderen (mit Fragment Offset gleich 1) angewandt wird, ohne jede weitere Art der Kontrolle. Bei der Zusammensetzung auf der IP-Ebene im Zielrechner wird so die Verbindungsanfrage wieder aufgebaut und an die TCP-Ebene geleitet. Die Verbindung kommt dann trotz des IP-Filters zustande.

Die Abbildungen 1 und 2 zeigen die beiden Fragmente, und die Abbildung 3 zeigt das auf dem Zielrechner zusammengesetzte Paket:

Abb. 1: Fragment 1
Tiny-Frag-1
Abb. 2: Fragment 2
Tiny-Frag-2
Abb. 3: Zusammengesetztes Paket
Tiny-Frag-3

Fragment Overlapping

Abermals gem�� RFC 791 (IP) l�scht, wenn sich zwei IP-Fragmente �berlagern, das zweite das erste. Die Attacke besteht darin, ein IP-Paket in zwei Fragmenten zu bilden. Der IP-Filter akzeptiert das erste von 68 Byte L�nge (siehe Tiny Fragments), weil es keine TCP-Verbindungsanfrage enth�lt (Flags SYN und ACK = 0). Diese Akzeptanzregel wird wie zuvor auf weitere Fragmente des Pakets angewandt. Das zweite (mit einem Fragment Offset von 1), das die tats�chlichen Verbindungsdaten enth�lt, wird nun vom IP-Filter akzeptiert. Bei der Defragmentierung l�schen so die Daten des zweiten Pakets diejenigen des ersten vom Ende des achten Bytes an (denn der Fragment Offset ist gleich 1). Das zusammengesetzte Paket stellt folglich f�r den Zielrechner eine g�ltige Verbindungsanfrage dar. Die Verbindung kommt trotz des IP-Filters zustande.

Die Abbildungen 4 und 5 zeigen die beiden Fragmente, und die Abbildung 6 zeigt das auf dem Zielrechner zusammengesetzte Paket:

Abb. 4: Fragment 1
Tiny-Frag-4
Abb. 5: Fragment 2
Tiny-Frag-5
Abb. 6: Zusammengesetztes Paket
Tiny-Frag-6

IP-F�lschung

Das Ziel dieser Attacke ist der Klau der IP-Adresse einer Maschine, der es dem Piraten erm�glicht, die Herkunft seines Angriffs zu verschleiern (wird in den Denial-of-Service-Attacken gemacht, �ber die wir sp�ter sprechen). Oder er kann Nutzen aus einer vertraulichen Verbindung zweier Rechner ziehen. Dar�ber werden wir an dieser Stelle also sprechen.

Das zugrundeliegende Prinzip dieses Angriffs besteht darin, da� der Pirat die eigenen IP-Pakete umformt (mit Programmen wie hping2 oder nemesis) zu solchen, in denen er u.a. die IP-Herkunftsadresse �ndert. Die IP-F�lschung wird auch oft ein „blinder Angriff“ („Blind Spoofing“) genannt. In der Tat k�nnen m�gliche Antworten der versandten Pakete nicht auf der Maschine des Piraten ankommen, da die Quelle ja verf�lscht ist. Sie richten sich also an den vorget�uschten Rechner. Dennoch gibt es zwei Methoden, die Antworten zu erhalten:

  1. das Source Routing: das I-Protokoll bietet eine Option namens Source Routing, die die Spezifikation des Weges der IP-Pakete erm�glichen. Dieser Weg ist eine Folge von Router-IP-Adressen, die die Pakete benutzen m�ssen. Es gen�gt dem Piraten, f�r die R�ckkehr der Pakete einen Weg zu einem von ihm kontrollierten Router anzugeben. Heutzutage weisen die meisten Implementationen des TCP/IP-Stacks Pakete mit dieser Option zur�ck;
  2. den Wiederversand: Router-Tabellen, die das Routing-Protokoll RIP verwenden, k�nnen ge�ndert werden, indem man ihnen RIP-Pakete mit neuen Routing-Informationen schickt mit dem Ziel, die Pakete noch einmal �ber einen Router zu senden, den der Pirat beherrscht.
Diese Techniken sind nicht mehr (oder nur noch m�hsam) benutzbar: die Attacke wird daher durchgef�hrt, ohne die Pakete zu kennen, die vom Zielrechner emittiert werden.

Das Blind Spoofing wendet sich gegen Dienste vom Typ rlogin oder rsh. Deren Authentifikationsmechanismus gr�ndet sich n�mlich einzig auf die IP-Absenderadresse des Client-Rechners. Dieser recht gut bekannte Angriff (vor allem dank Kevin Mitnick, der ihn 1994 gegen den Rechner von Tsutomu Shimomura benutzte) vollzieht sich in mehreren Etappen:

W�hrend der Attacke erh�lt der Pirat das vom Zielrechner geschickte SYN-ACK nicht. Damit die Verbindung hergestellt werden kann, sch�tzt er die Sequenznummer y, um ein Paket mit der richtigen ACK-Nummer (y+1) zu schicken. Die Verbindung wird dank der Authentifikation per IP-Adresse eingerichtet. Der Pirat kann so dem rsh-Dienst einen Befehl wie echo ++ >> /.rhosts schicken, um weitere Rechte zu erlangen. Daf�r baut er ein Paket mit dem Flag TCP PSH (Push): die empfangenen Daten werden unmittelbar an die h�here Ebene weitergereicht, hier an den rsh-Dienst, damit der sie verarbeitet. Es ist dem Piraten dann m�glich, sich direkt �ber einen Dienst wie rlogin oder rsh ohne IP-F�lschung mit dem Rechner zu verbinden.

Die Abbildung 7 fa�t die Schritte der IP-F�lschung zusammen:
Abb. 7: IP-F�lschung, angewendet auf den Dienst rsh
ip_spoof

Der Pirat benutzt den Rechner A, w�hrend C die vertraute Maschine bezeichnet. Die Notation A(C) bedeutet, da� das Paket von A mit der gef�lschten IP-Adresse von C geschickt wird. Erw�hnenswert ist die Existenz des Programms mendax, das diese verschiedenen Mechanismen der IP-F�lschung in die Tat umsetzt.

TCP Session Hijacking

Das „Entf�hren einer TCP-Verbindung“ erm�glicht die Umleitung eines TCP-Flusses. Ein Pirat kann dadurch einen Pa�wortschutz (wie telnet oder ftp) umgehen. Die Notwendigkeit des passiven Lauschens (sniffing) beschr�nkt den Einsatzbereich dieser Attacke auf das physische Netzwerk des Zielrechners. Bevor wir in die Details gehen, werden wir einige fundamentale Prinzipien des TC-Protokolls erkl�ren.

Wir werden hier nicht die Geheimnisse des TC-Protokolls offenbaren, sondern lediglich die essentiellen Punkte zum Verst�ndnis des Angriffs pr�zisieren. Der TCP-Header besteht aus mehreren Feldern:

Die Abbildung 8 stellt einen TCP-Verbindungsaufbau schematisch dar (Three Way Handshake):
Abb. 8 : Three Way Handshake
3way

In diesem Fall hat Rechner A eine TCP-Verbindung zum Rechner B angefordert. Dementsprechend zeigt die Abb. 9 einen TCP-Datentransfer:
Abb. 9 : Datenaustausch:
psh

Die Sequenznummern werden sich je nach der Bytezahl der gesendeten Daten �ndern. Die Sequenznummer wird durch Seq dargestellt, die Best�tigungsnummer findet sich nach den PSH- und ACK-Flags, und die Bytezahl der gesendeten Daten steht in Klammern.

Dieser Angriff erzeugt einen Zustand der Desynchronisation auf jeder Seite der TCP-Verbindung, der den Diebstahl der Sitzung erm�glicht. Eine Verbindung wird desynchronisiert, wenn die Sequenznummer des n�chsten vom Rechner A geschickten Bytes sich von derjenigen des n�chsten vom Rechner B empfangenen Bytes unterscheidet. Und umgekehrt gibt es ebenfalls eine Desynchronisation, wenn die Sequenznummer des n�chsten von B geschickten Bytes sich von derjenigen des n�chsten von A empfangenen Bytes unterscheidet.

Im Beispiel der Abbildung 9 erwartet A am Ende der ersten Etappe, wenn B sein Paket empfangen hat, eines mit der Best�tigungsnummer x+60 Wenn das n�chste Paket, das B schickt, eine andere Nummer enth�lt, werden A und B demnach als desynchronisiert bezeichnet.

Ein konkreter Fall: Ein Pirat mit dem Rechner C will eine zwischen A und B hergestellte Telnet-Sitzung stehlen. Zuerst belauscht C den Telnet-Verkehr zwischen A und B. Sobald der Pirat glaubt, da� A genug Zeit hatte, um sich bei dem Telnet-Dienst von B zu authentifizieren, desynchronisiert er A in seiner Kommunikation mit B, weswegen er ein Paket mit der IP-Quelladresse von A und der von B erwarteten TCP-Best�tigungsnummer schn�rt. B akzeptiert daraufhin dieses Paket. Au�er der Desynchronisation der TCP-Verbindung gestattet es dem Piraten, ein Kommando durch die zuvor von A initiierte Telnet-Sitzung zu geben. Denn das Paket kann Daten transportieren (PSH-Flag gleich 1).

Die Abbildung 10 fa�t den Angriff zusammen:
Abb. 10: TCP Session Hijacking
hijacking

B akzeptiert bereitwillig das von C geschickte Kommando, er quittiert den Paketempfang also mit einem Paket an A mit dem ACK-Flag. Wenn unterdessen A ein Paket an B geschickt hat, wird es nicht akzeptiert, da seine Sequenznummer nicht die von B erwartete ist.

Dann taucht ein Problem auf: der ACK-Sturm. Dabei handelt es sich um eine Masse ACKs, die erzeugt werden. Sie erscheinen, wenn A ein TCP-Paket mit ung�ltiger Sequenznummer schickt (denn A ist desynchronisiert), B es verwirft und A ein ACK mit der erwarteten Sequenznummer schickt. Auf seiner Seite empf�ngt A dieses ACK, und da die Sequenznummer nicht mit der erwarteten �bereinstimmt, schickt er seinerseits ein ACK an B, und B wiederholt das Ganze...

Das Problem des ACK-Sturms kann gel�st werden, wenn der Pirat die ARP-F�lschung benutzt. In diesem Fall verf�lscht er den ARP-Cache von B, indem er ihm sagt, da� die IP-Adresse von A von nun an zur MAC-Adresse von C geh�rt. Diese verschiedenen Techniken werden vom Programm hunt implementiert.

ARP-F�lschung

Dieser Angriff, auch ARP-Umleitung genannt, leitet den Netzverkehr einer oder mehrerer Maschinen zum Piratenrechner. Er vollzieht sich im physischen Netz des Opfers. Vorher erinnern wir uns des Nutzen und der Funktionsweise des AR-Protokolls.

Das AR-Protokoll (Address Resolution Protocol) f�hrt den Vorgang der Aufl�sung einer IP-Adresse in eine MAC-Ethernetadresse durch. Ger�te in einem Netzwerk kommunizieren, indem sie auf der Datenverbindungsebene Ethernet-P�ckchen austauschen (im Fall eines Ethernet-Netzes nat�rlich). Um diese Informationen austauschen zu k�nnen, m�ssen die Netzwerkkarten eine einzigartige Adresse auf Ethernet-Ebene besitzen; dabei handelt es sich um die MAC-Adresse (Media Access Control).

Sobald ein IP-Paket verschickt werden mu�, braucht der Absender die MAC-Adresse des Empf�ngers. Daf�r wird eine ARP-Anfrage an alle Maschinen des physischen lokalen Netzes rundgesendet. Diese Anfrage sagt: „Welche MAC-Adresse geh�rt zu dieser IP-Adresse?“. Die Maschine mit der zugeh�rigen IP-Adresse antwortet mit einem ARP-Paket, das dem Fragenden die gesuchte MAC-Adresse angibt. Von da an besitzt der Absender die MAC-Adresse, die mit der IP-Zieladresse des zu sendenden Pakets �bereinstimmt. Diese �bereinstimmung wird eine bestimmte Zeitlang in einem Puffer gespeichert (um zu vermeiden, f�r jedes zu sendende Paket eine neue Anfrage stellen zu m�ssen).

Dieser Angriff korrumpiert den Puffer des Opfers. Der Pirat schickt ARP-Antwortpakete zum Zielrechner, die besagen, da� die neue MAC-Adresse, die mit der IP-Adresse eines Gateways (z.B.) �bereinstimmt, die seinige sei. Der Piratenrechner empf�ngt demzufolge den ganzen Verkehr, der an das Gateway gerichtet wird, er braucht ihm dann also nur noch passiv zuzuh�ren (oder ihn zu modifizieren). Er leitet danach die Pakete zum tats�chlichen Bestimmungsort weiter.

Das ARP-F�lschen n�tzt dann, wenn ein lokales Netzwerk Switches benutzt. Diese leiten Ethernet-P�ckchen gem�� der MAC-Adresse auf die verschiedenen Ports um. Es ist also einem Lauscher unm�glich, P�ckchen jenseits seiner physischen Leitung zu fangen. Das ARP-F�lschen gestattet es damit, Verkehr zwischen Rechnern an verschiedenen Leitungen auf der Ebene des Switches abzuh�ren.

Um einen Angriff mittels ARP-F�lschung in die Tat umzusetzen, wird der Pirat einen ARP-Paketgenerator wie ARPSpoof oder nemesis benutzen. Sei das Opfer 10.0.0.171, sein Standard-Gateway 10.0.0.1 und der Piratenrechner 10.0.0.227. Vor dem Angriff gibt ein Traceroute folgendes Resultat:

[root@cible -> ~]$ traceroute 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets
 1  10.0.0.1  (10.0.0.1)  1.218 ms  1.061 ms  0.849 ms

Und der ARP-Cache des Zielrechners ist:

[root@cible -> ~]$ arp
Address		HWtype	HWAddress		Flags Mask	Iface
10.0.0.1	ether 	00:b0:c2:88:de:65	C		eth0
10.0.0.227	ether	00:00:86:35:c9:3f	C		eth0

Der Pirat startet dann ARPSpoof:

[root@pirate -> ~]$ arpspoof -t 10.0.0.171 10.0.0.1
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f

Was da geschickt wird, sind ARP-Pakete, die den ARP-Cache der Maschine 10.0.0.171 mit ARP-Antworten verf�lschen. Diese behaupten, da� die mit 10.0.0.1 assoziierte MAC-Adresse nunmehr 00:00:86:35:c9:3f sei.

Fortan ist der ARP-Cache der Maschine 10.0.0.171:

[root@cible -> ~]$ arp
Address		HWtype	HWAddress		Flags Mask	Iface
10.0.0.1	ether 	00:00:86:35:c9:3f	C		eth0
10.0.0.227	ether	00:00:86:35:c9:3f	C		eth0

Um zu pr�fen, ob der Verkehr jetzt �ber die Maschine 10.0.0.227 l�uft, gen�gt es, erneut eine Traceroute zum Gateway 10.0.0.1 aufzurufen:

[root@cible -> ~]$ traceroute 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets
 1  10.0.0.227  (10.0.0.227)  1.712 ms  1.465 ms  1.501 ms
 2  10.0.0.1  (10.0.0.1)  2.238 ms  2.121 ms  2.169 ms

Der Pirat kann k�nftig den Verkehr von 10.0.0.171 zu 10.0.0.1 abh�ren. Er darf nicht vergessen, das IP-Routing auf seinem Rechner 10.0.0.227 zu aktivieren (mittels IP-Forwarding - aktiviere den Schl�ssel net.ipv4.ip_forward in der /etc/sysctl.conf oder nimm fragrouter).

DNS-F�lschung

Das DNS-Protokoll (Domain Name System) konvertiert einen Dom�nennamen (z.B. www.test.com) in seine IP-Adresse (z.B. 192.168.0.1) und umgekehrt, d.h. eine IP-Adresse in ihren Dom�nennamen. Der Angriff besteht darin, falsche Antworten auf DNS-Anfragen, die ein Opfer schickt, ankommen zu lassen. Es gibt zwei prinzipielle Methoden, um das durchzuf�hren.

DNS ID-F�lschung

Der Header des DNS-Protokolls beinhaltet ein Identifikationsfeld, das es erlaubt, die Antworten passend zu den Anfragen zu machen. Ziel der DNS ID-F�lschung ist es, vor dem DNS-Server eine falsche Antwort auf eine DNS-Anfrage zu geben. Daf�r mu� er die ID der Anfrage vorwegnehmen. Lokal ist das einfach: man belauscht das Netz. Aus der Ferne gestaltet es sich komplizierter. Doch es gibt mehrere Methoden:

In allen F�llen ist es n�tig, vor dem DNS-Server zu antworten und ihn au�er Gefecht zu setzen - z.B. mit einem Denial-of-Service-Angriff.

Um sein Ziel zu erreichen, mu� der Angreifer einen DNS-Server kontrollieren (ns.attaquant.com), der wiederum die Dom�ne attaquant.com beherrscht. Der Ziel-DNS-Rechner (ns.cible.com) habe vorhersagbare Sequenznummern (Erh�hung um 1 bei jeder neuen Anfrage).

Die Attacke gliedert sich in vier Schritte:

  1. Der Angreifer schickt eine DNS-Anfrage f�r den Namen www.attaquant.com an den DNS-Server der Dom�ne cible.com, wie Abbildung 11 zeigt;
    Abb. 11: Senden einer DNS-Anfrage an ns.cible.com
    dnsspoof1

  2. Der Ziel-DNS-Server hat daraufhin die Anfrage an den DNS der Dom�ne attaquant.com �bertragen;
  3. Der Angreifer ist in der Lage, die Anfrage abzuh�ren, um ihre ID zu bekommen (in unserem Beispiel eine ID von 100);
  4. Der Angriff verf�lscht die IP-Adresse, die einem Rechnernamen zugeordnet ist, hier ist das Opfer www.spoofed.com, das normalerweise die IP-Adresse 192.168.0.1 hat. Der Pirat emittiert eine DNS-Anfrage zur Namensaufl�sung von www.spoofed.com an ns.cible.com. Sofort danach sendet er eine Menge falscher DNS-Antworten (die als IP-Adresse diejenige des Angreifers, 10.0.0.1, angeben) auf ebendiese Anfrage, wobei er als IP-Quelladresse diejenige des DNS-Servers der Dom�ne spoofed.com vort�uscht. Die ID einer jeden Antwort wird um 1 inkrementiert, beginnend mit derjenigen, die beim zweiten Schritt ermittelt wurde (ID = 100) - um die Chance zu vergr��ern, da� darunter die richtige Nummer der ID-Antwort f�llt, falls ns.cible.com auf weitere Anfragen geantwortet und so seine DNS-ID erh�ht hat. Die Abbildung 12 zeigt die Details dieses Schrittes.
    Abb. 12: DNS ID-F�lschung
    dnsspoof2

Der Cache des DNS-Zielservers ist damit verf�lscht, und die n�chste Maschine, die eine Aufl�sung des Namens www.spoofed.com verlangt, bekommt die IP-Adresse des Piratenrechners. Sie wird auf dessen Seite umgeleitet, die eine Kopie der echten Seite sein k�nnte, um Internet-Nutzer zu t�uschen und ihnen vertrauliche Informationen zu entlocken.

DNS Cache-Verf�lschung

DNS-Server haben einen Cache, der w�hrend einer bestimmten Zeit lokal die Antworten auf vergangene Anfragen speichert, um zu vermeiden, da� jedes Mal zeitaufwendig der Nameserver der gew�nschten Dom�ne gefragt werden mu�. In der zweiten Art der DNS-F�lschung wird dieser Cache mit falschen Informationen gef�llt. Hier ein Beispiel von Cache-F�lschung:

Gleiche Umst�nde wie beim vorherigen Beispiel. Das sind die verschiedenen Stufen des Angriffs:

Angriffe �ber Applikationen

Angriffe �ber Applikationen st�tzen sich im wesentlichen auf L�cken, die es in verwendeten Programmen gibt. Dennoch k�nnen bestimmte Attacken in Klassen eingeordnet werden.

Konfigurationsprobleme

Eines der ersten Sicherheitsprobleme, das Applikationen verursachen, ist das der Konfigurationsfehler. Wir unterscheiden zwei Arten von Fehlern: die Standard-Installationen und die schlechten Konfigurationen im eigentlichen Sinne.

Programme wie Webserver haben, wenn sie standardm��ig installiert sind, h�ufig Beispielseiten, die von den Piraten genutzt werden k�nnen, um an vertrauliche Informationen zu kommen. Zum Beispiel kann es dort Skripte geben, die es erm�glichen, die Quellen von dynamischen Seiten zu erhalten oder Informationen �ber das benutzte System. Dar�ber hinaus ist bei einer solchen Installation evtl. standardm��ig ein Interface zur Fernadministration mit einem Login/Pa�wortschutz verf�gbar (zu finden im Administrationshandbuch der Applikation). Der Pirat hat also die Seite zu fassen und kann sie nach seinem Gutd�nken ver�ndern.

Die meisten Fehler, die aus einer schlechten Konfiguration entstehen, sind Zugriffslisten mit falschen Parametern. Der Pirat hat dann Zugang zu privaten Seiten und Datenbanken.

Ein klassisches Beispiel von Konfigurationsproblemen sind die h�ufigen Fehler in den Parametern des Webservers Lotus Domino. Denn w�hrend der Installation dieses Servers sind die Konfigurationsdatenbanken von Lotus ohne jegliche Zugriffsliste zug�nglich. Wenn konkret die Lotus-Datenbank names.nsf �ber einen Web-Browser ohne Authentifikation zug�nglich ist, kann man dadurch zahlreiche Informationen erhalten, etwa die Namen s�mtlicher Lotus-Nutzer. Diese Datenbank ist nur ein Beispiel, und Lotus Domino enth�lt davon eine betr�chtliche Zahl mit sensiblen Daten.

Bugs

Schlechte Programmierung von Software f�hrt zwangsl�ufig zu Bugs. Sie sind die Quelle der wichtigsten Sicherheitsl�cken. Wenn diese Verwundbarkeiten entdeckt werden, erlauben sie es, nicht autorisierte Befehle auszuf�hren, den Quellcode dynamischer Seiten zu bekommen, einen Dienst auszuschalten, den Rechner zu �bernehmen etc. Die bekanntesten dieser Bugs und die interessantesten, was ihre Ausbeutung betrifft, sind die des Typs Buffer Overflow.

Buffer Overflow

Der Speicher�berlauf ist eine L�cke, an der schlechte Programmierung schuld ist. Ein Buffer Overflow ereignet sich dann, wenn eine Variable einer Funktion als Argument �bergeben und in einen Speicherplatz kopiert wird, ohne da� ihre Gr��e gepr�ft wird. Es gen�gt, da� die Variable gr��er als der reservierte Speicherbereich ist, damit ein Buffer Overflow entsteht. Er wird ausgebeutet, indem in der Variable ein Programmfragment abgelegt wird, das f�hig ist, freundlicherweise eine Shell starten zu lassen, falls hier ein Buffer Overflow aufgetreten ist. Falls der Pirat Erfolg mit diesem Angriff hat, erh�lt er also ein Mittel, aus der Ferne Kommandos auf dem Zielrechner auszuf�hren mit den Zugriffsrechten der angegriffenen Applikation. Der Buffer Overflow und seine Nutzung sind Gegenstand einer Serie von Artikeln �ber die sichere Programmierung:

Skripte

Schlechte Programmierung von Skripten schl�gt sich oft auf die Systemsicherheit nieder. Tats�chlich gibt es Wege, L�cken in Perl-Skripten auszunutzen, die es gestatten, Dateien aus dem Web-Wurzelverzeichnis zu lesen oder unerlaubte Programme auszuf�hren. Auf diese programmiertechnischen Probleme wird in einem der o.a. Artikel hingewiesen, der von den Fallen der Entwicklung in Perl und PHP handelt (Teil 6, „CGI-Skripte“).

Der Mann in der Mitte

Ziel dieses Angriffs ist die Umleitung des Verkehrs zwischen zwei Maschinen, um die im Laufe der Kommunikation �bertragenen Daten abzuh�ren, zu ver�ndern oder zu vernichten. Es handelt sich dabei mehr um ein Konzept als um eine vollst�ndige Attacke. Es gibt verschiedene Angriffe, die das Prinzip vom Mann in der Mitte umsetzen, etwa der DNS Man in the Middle, der DNS-F�lschung benutzt, um den Verkehr zwischen einem Client und einem Webserver umzulenken. Ebenso wurde k�rzlich eine Applikation erstellt, um SSH-Verkehr umzuleiten.

Denial-of-Service

Dieser Angriff tr�gt seinen Namen zu Recht, denn er f�hrt zur Ausschaltung eines Dienstes (einer bestimmten Applikation) oder eines Zielrechners. Wir unterscheiden zwei Arten von Denial-of-Service; die eine hat ihren Ursprung in der Ausnutzung eines Programmfehlers, die andere r�hrt von einer schlechten Implementation eines Protokolls oder dessen Schw�chen her.

Denial-of-Service bei Applikationen

Genau wie L�cken in einer Applikation die M�glichkeit der Kontroll�bernahme eines Rechners nach sich ziehen (z.B. Buffer Overflow), k�nnen sie auch einen Denial-of-Service herbeif�hren. Die Anwendung steht also nicht mehr zur Verf�gung, weil die ihr zugeordneten Ressourcen nicht mehr ausreichen oder weil sie abgest�rzt ist.

Denial-of-Service bei Netzwerken

Es gibt verschiedene Typen von Denial-of-Service, die die Protokollspezifikationen des TCP/IP-Stacks benutzen.

SYN-�berschwemmung

Wir haben gesehen, da� sich eine TCP-Verbindung in drei Phasen aufbaut (TCP Three Way Handshake). Die SYN-�berschwemmung nutzt diesen Mechanismus aus. Die drei Etappen sind die Aussendung eines SYN, der Empfang eines SYN-ACK und die Aussendung eines ACK. Das Prinzip ist, den Zielrechner auf eine gro�e Zahl von TCP-Verbindungen warten zu lassen. Daf�r schickt der Pirat sehr viele Verbindungsanfragen (SYN-Flag auf 1), der Zielrechner antwortet darauf mit SYN-ACKs. Der Pirat antwortet niemals mit einem ACK, und somit reserviert der Zielrechner f�r jedes empfangene SYN eine TCP-Verbindung. Weil diese halboffenen Verbindungen Speicherressourcen verbrauchen, ist der Rechner nach einer Weile belegt und kann keine Verbindungen mehr annehmen. Diese Art von Denial-of-Service beeinflu�t nur den Zielrechner.

Der Pirat benutzt einen SYN-Flooder wie synk4, w�hlt den anvisierten TCP-Port und ordnet die Verwendung zuf�lliger IP-Absenderadressen an, um jede Identifikation des Piratenrechners zu vermeiden.

UDP-�berschwemmung

Dieser Denial-of-Service nutzt den nichtverbundenen Modus des UD-Protokolls aus. Er erzeugt einen „UDP Packet Storm“ (gro�e Menge von UDP-Paketen), entweder in Richtung auf einen Rechner oder zwischen zwei Rechnern. Eine solche Attacke zwischen zwei Maschinen hat eine Netz�berlastung zur Folge sowie eine Ressourcens�ttigung der beiden Opfer. Die �berlastung ist wichtiger, da der UDP-Verkehr Priorit�t gegen�ber dem TCP-Verkehr hat. Wirklich besitzt das TC-Protokoll einen Mechanismus der �berlastungskontrolle; falls die Best�tigung eines Paketes erst nach einer langen Verz�gerung eintrifft, pa�t er die H�ufigkeit der TCP-Paketsendungen an, der Absatz sinkt. Das UD-Protokoll hat keinen solchen Mechanismus, nach einer Zeitlang besetzt der UDP-Verkehr die ganze Bandbreite und l��t nur eine winzige Menge TCP-Verkehr zu.

Das bekannteste Beispiel von UDP-�berschwemmung ist der Chargen Denial of Service Attack. Seine praktische Umsetzung ist einfach, es reicht aus, den Dienst chargen eines Rechners mit dem Dienst echo eines anderen kommunizieren zu lassen. chargen erzeugt Buchstaben, w�hrend echo sich damit begn�gt, die empfangenen Daten wieder zur�ckzuschicken. Der Pirat braucht also nur UDP-Pakete zum Port 19 (chargen) eines seiner Opfer zu schicken und seine IP-Adresse und Quellport zu f�lschen. In diesem Fall ist der Quellport der UDP-Port 7 (echo). Die UDP-�berschwemmung f�hrt zur Auslastung der Bandbreite zwischen den beiden Maschinen. Ein ganzes Netzwerk kann also Opfer einer UDP-�berschwemmung werden.

Packet Fragment

Denial-of-Services vom Typ „Packet Fragment“ nutzen die Schw�che einiger Implementationen des TCP/IP-Stacks auf der Ebene der IP-Defragmentation (Wiederzusammensetzung der IP-Fragmente) aus.

Eine bekannte darauf basierende Attacke ist Teardrop. Der Fragmentierungsabstand des zweiten Fragments ist kleiner als die Gr��e des ersten, ebenso der Abstand plus die Gr��e des zweiten, d.h. das zweite Fragment ist im ersten enthalten (overlapping). Bei der Defragmentation behandeln manche Systeme diese Ausnahmesituation nicht, und das f�hrt zum Denial-of-Service. Es gibt Varianten des Angriffs: bonk, boink und newtear zum Beispiel. Der Denial-of-Service namens „The Ping of Death“ nutzt ein schlechtes Verhalten der Defragmentation auf der ICMP-Ebene aus, indem er eine Datenmenge schickt, die gr��er ist als die Maximalgr��e eines IP-Pakets. Diese verschiedenen Denial-of-Service-Attacken enden in einem Absturz des Zielrechners.

Smurfing

Dieser Angriff verwendet das Protokoll ICMP. Sobald ein Ping (eine ICMP ECHO-Botschaft) an eine Rundsendungs-Adresse (z.B. 10.255.255.255) geschickt wird, wird sie �bersetzt und an jede Maschine des Netzwerks geschickt. Das Wesen der Attacke ist die F�lschung der gesendeten ICMP ECHO REQUESTs, indem als IP-Absenderadresse diejenige des Zielrechners benutzt wird. Der Pirat schickt einen kontinuierlichen Ping-Strom zur Rundsendungs-Adresse eines Netzes, und s�mtliche Rechner antworten mit einem ICMP ECHO REPLY an den Zielrechner. Der Strom wird also von der Zahl der Rechner im Netz vervielfacht. Hier erleidet das ganze Netz die Denial-of-Service-Attacke, weil die enorme Quantit�t des von ihr erzeugten Datenverkehrs das Netz verstopft.

Verteilter Denial-of-Service

Verteilte Denial-of-Services �berf�llen das Opfernetzwerk. Das Prinzip ist, verschiedene Quellen (Daemons) f�r die Attacken und h�here Instanzen (Master), die jene kontrollieren, zu benutzen. Die bekanntesten Werkzeuge des DDoS (Distributed Denial of Service) sind Tribal Flood Network (TFN), TFN2K, Trinoo und Stacheldraht. Die Abbildung 13 zeigt ein typisches DDoS-Netz:

Abb. 13: DDoS-Netz
ddos

Der Pirat benutzt „Dienstherren“, h�here Instanzen, um leichter die Quellen kontrollieren zu k�nnen. Denn er mu� sich mit den Dienstherren (mit TCP) verbinden, um sie zu konfigurieren und die Attacke vorzubereiten. Die Dienstherren begn�gen sich damit, Kommandos per UDP zu den Quellen zu senden. H�tte er die Dienstherren nicht, m��te sich der Pirat zu jeder Quelle verbinden. Der Ursprung der Attacke w�rde viel leichter entdeckt und ihre Umsetzung dauerte viel l�nger.

Jeder Daemon kommuniziert mit seinem Master, indem er spezifische Botschaften austauscht, je nach dem verwendeten Werkzeug. Diese Kommunikation kann sogar verschl�sselt oder authentifiziert erfolgen. Um die Daemons und Master aufzustellen, benutzt der Pirat bekannte L�cken (Buffer Overflow in den Diensten RPC, FTP oder anderen). Der Angriff selbst ist eine SYN-�berschwemmung, UDP-�berschwemmung oder sonstige Smurf-Attacke. Das Ergebnis eines Denial-of-Service ist es somit, das Netzwerk unzug�nglich zu machen.

Fazit

Heute verst�rkt sich die Sicherheit gegen entfernte Attacken mehr und mehr, im Gegensatz zur internen Sicherheit. Dieser „arme Verwandte“ der Schutzvorkehrungen gegen Piraten l��t immer noch lokalen Attacken wie dem TCP Session Hijacking, der ARP-F�lschung und der DNS-F�lschung gute Chancen. Zudem tauchen die Vorhersage von Sequenznummern (das Herzst�ck der IP-F�lschung) und die Varianten der Fragment Attacks einzig und allein wegen Fehlern auf Betriebssystemebene der Netzrechner auf. Was die Angriffe durch Applikationen betrifft, so haben jene noch gute Zukunftsaussichten dank der unaufh�rlich wachsenden Komplexit�t von Web-Applikationen und dank der immer k�rzer werdenden Fristen f�r Entwickler und Administratoren. Die Denial-of-Service-Attacken werden in ihrer verteilten Form ebenfalls sehr gef�hrlich bleiben, solange nicht alle auf den Schutz ihrer eigenen Rechner achten.


Links