8 Denial of Service-Angriffe |
|
8.1 EinführungDenial of Service ist ein Synonym für die Kunst bzw. den Unsinn des Verhinderns eines Zugriffs oder Nutzens eines Computers oder eines davon zur Verfügung gestellten Dienstes. Denial of Service bedeutet soviel wie etwas unzugäglich machen, oder ausser Betrieb setzen, was in manchen Fällen für legitime Benutzer von Wichtigkeit sein kann. Diese Attacken nutzen immer Bugs und Schwachstellen von Programmen, Betriebssystemen oder Fehlimplementationen von Protokollen aus.8.2 Verschiedene AnsätzeJeder, der schon einmal ein wissenschaftlich fundiertes Buch über die Entstehung und Entwicklung des Internets gelesen hat, wurde im Eingangs-Kapitel damit konfrontiert, dass das Internet ursprünglich vom US-Militär für jenen Zweck entwickelt wurde ein möglichst stabiles dezentrales Netzwerk zu errichten, das sogar einen atomaren Schlag überstehen könnte. Gegen Ende des Jahres 1962 lieferte Paul Baran von der Rand Corporation einen ersten Entwurf, welcher 1969 in Tat und Wahrheit umgesetzt wurde. Während über 30-jährigen Geschichte des Internets traten jedoch vereinzelte Situationen in Kraft, die einem gesamthaften Zusammenbruch sehr nahe kamen. Der wohl mitunter bekannteste Vorfall dieser Sparte offenbarte 1988 seine destruktive Absicht, als der berühmt berüchtigte Internet-Wurm von Robert Tappan Morris mit seinem bösartigen Code rund 50'000 Rechner zum Stillstand brachte. Um jedoch zu den Wurzeln und indirekt der Entstehung von Denial of Service-Attacken zurückzugehen, müssen wir uns in unserer Phantasie einer Zeitreise ins Jahr 1980 bemächtigen. Als Ronald Reagan und Jimmy Carter im Oktober sich in den Präsidentschaftswahlen verstrikten, umfasste der Vorgänger des Internets, das ARPAnet, nur rund 200 Hosts und wurde vorwiegend von Forschern und Wissenschaftlern für ihre Arbeit genutzt. Am 27. Oktober 1980 gingen diese besagten Gelehrten an ihre Terminals, um mit Schrecken festzustellen, dass ein Grossteil des ARPAnets zum Erliegen gekommen war. Eine Welle von Anrufen überschwemmte das Network Control Center (NCC), und so wurde schnell klar, dass das Problem kein lokales war, sondern praktisch jedes Subnetz betreffen würde. Die Ursache für dieses Problem wurde auf mikroskopischer Ebene gefunden: Ein ziemlich seltsamer Hardware-Fehler generierte fehlerhafte Sequenzen von Netzwerk-Kontrollpaketen. Diese fehlerhafte Konstrukte beeinflussten die Distribution der Software-Ressourcen der Subnetze. Dies führte dazu, dass Prozesse zu viele Ressourcen belegten, so dass für andere Prozesse keine mehr verblieben. Nähere Informationen zu diesem historischen Vorfall finden sich in RFC 789 (Vulnerabilities of Network Control Protocols: An Example).
8.2.1 Belegung der Bandbreite8.3 Spezifische AngriffstypenSie erinnern sich bestimmt an die Sage, in welcher der kleine David gegen den grossen Goliath kämpfen musste. Der schmächtige David zieht jedoch bei der nun vorgestellten Angriffsmethode 99,9%ig den kürzeren: Leute mit einer langsamen Netzanbindung (z.B. Privatpersonen mit einem 56k-Modem) laufen Gefahr in ihrer Arbeitsweise negativ beeinträchtigt zu werden. Ein Besitzer einer T3-Standleitung wird ohne Probleme die Dial-Up-Verbindung seines Opfers so krass überfluten können, dass durch diese enorme Auslastung kein effizientes Arbeiten des Opfers über sein Modem mehr möglich ist.8.2.2 Ressourcen aufbrauchenDas Aufbrauchen der Bandbreite zielt auf das Überlasten der Netzwerkressourcen ab - Das Aufbrauchen der Ressourcen hingegen auf das Überlasten der Systemressourcen. Im Allgemeinen unterscheidet man hierbei zwischen Attacken auf die CPU-, Speicher- und Festplatten-Auslastung. In den meisten Fällen wird dem Angreifer ein gewisses Mass dieser Ressourcen zugeschrieben, die er dann hemmungslos für sein destruktives Treiben missbraucht. Dadurch können wichtige Teile des Systems den rechtmässigen Benutzern entzogen oder das Nutzen derer verhindert werden. Meistens gipfeln solche Angriffe darin, dass das System oder einzelne Komponente temporär unbrauchbar werden, da ein Absturz oder Einfrieren eintritt.8.2.3 Programmierfehler ausnutzenAls Programmierfehler bezeichnet man den Zustand der unfähigen Verarbeitung einer Eingabe. Dies kann eine Anwendung, das Betriebssystem oder ein Mikrochip betreffen. Solche Ausnahmebedingungen entstehen in der Regeln auf der Netzwerkebene bei der Übergabe von nicht RFC-konformen Paketen. Anwendungsprogramme dagegen reagieren typischerweise allergisch auf übertrieben lange oder kuriose Eingaben. Programmierfehler zudem meist für den Angreifer sehr konstruktiv genutzt werden, wie wir im Kapitel 9.2 (Bufferoverflows) besprechen werden.8.3.1 ICMP-Stürme8.4 Lokale Denial of Service-AttackenWas ist Smurf8.3.2 SYN-FloodingWenn man auf eine Broadcastadresse einen Ping schickt, erzeugt dieser je nach antwortendem Rechner eine beachtliche Anzahl an Antworten. Der Trick besteht darin, die Absenderadresse zu fälschen, so dass das Opfer die Antworten erhält. Sendet man nun rund 1'000 Pakete pro Sekunde, und 1'000 Rechner antworten darauf, bedeutet dies also, dass 1'000'000 Pakete pro Sekunde beim Opfer eintreffen. Die verursacht einen solchen Traffic, dass der Rechner des Opfers unter dem enormen Verkehr zusammenbricht. Dieses Problem war unter dem Namen "ICMP Storm" schon länger bekannt, gewann jedoch erst durch das im Oktober 1997 erscheinende Tool smurf.c an Bedeutung für Datenreisende, welches Nachzügler mit Exploits wie papasmurf.c hervorbrachte. Es wurde sogar ein Nachfolger des Originals mit der Versionsnummer 4 publiziert.
Das UNIX-Programm broadscan.c kann durch Angreifern genutzt werden, um möglichst potente Broadcastadressen zu finden.
Zahlreiche Provider wurden durch solche Attacken tagelang arg bedrängt. Dieses Problem lässt sich jedoch durch einen einfachen Trick beheben, indem man an den Routern die IP-Broadcasts nicht mehr in Ethernet-Broadcasts umsetzen lässt, und jene somit Aussen vor bleiben. Das Tool SmurfLogger erkennt Smurf-Attacken, und welche Broadcastsadressen missbräuchlich genutzt werden. Auch ICMP Watch aus dem 7th Sphere-Paket kann aufschlussreich über verdächtige ICMP-Aktivitäten informieren:
![]()
ICMP Watch aus dem Paket von 7th Sphere überwacht die ICMP-Aktivitäten.Die TCP/IP-Protokollarchitektur ist bei ihrer Konzipierung und Realisierung nicht mit dem Hintergedanken solcher Extremsituationen vorgelegt worden. Aus diesem Grund kann protokolltechnisch nicht viel den besagten Problemen entgegengehalten werden. Lediglich eine durchdachte Netzstruktur (gut platzierte Router, Hubs, Switches und Firewall-Systeme) kann das Problem ganz oder wenigstens teilweise einschränken.
Was ist SYN-Flooding8.3.3 OOB-AngriffeTCP-Verbindungen werden nach einem Drei-Wege-Handshake aufgebaut, indem zuerst ein SYN-Pakete gesendet wird, darauf mit einem SYN/ACK-Paket geantwortet wird, und anschliessend die Bestätigung mittels eines ACK Bestätigung findet. Nun besteht die SYN-Flood-Attacke daraus dem Opfer beim Handshake eine falsche Absenderadresse zu übermitteln. Das SYN/ACK-Antwortpaket wird also ins Nirgendwo beantwortet. Wenn nach einiger Zeit keine Rückantwort des ACK-Paket erfolgt, wird der Verbindungsversuch als erfolglos abgebrochen. Nutzt man jedoch nun die Zeit bis zum Abbruch damit, dem Opfer eine Unmenge von SYN-Paketen zu schicken, und ihn somit zu überfluten, wird der Rechner des Opfers in die Knie gehen.
Hier ein Beispiel einer solchen Konversation:
Diese DoS-Attacke erlebte besonders im Herbst 1996 grossen Aufschwung. Eine sehr mächtige Portierung für Solaris wurde unter dem Namen synsol.c herausgegeben. Auch Macintosh-Systeme waren von SYN-Flood-Attacken betroffen.Der Angreifer sendet das Paket SYN 1 an sein Opfer. Das Opfer antwortet automatisch auf SYN 1 und wartet auf ACK 1. Der Angreifer sendet SYN 2. Das Opfer antwortet auf SYN 2, wartet nun auf ACK 1 und ACK 2. Der Angreifer sendet nun Paket SYN 3. usw. ... FreeBSD reagierte mit einem Patch, wie dies auch andere Hersteller getan haben. Bei der Kompilierung eines aktuellen Linux-Kernels zum Beispiel, können Gegenmassnahmen aktiviert werden, um SYN-Flooding entgegenzuwirken. Die dahintersteckende Technik ist gleichermassen einfach als wie auch effizient: Nur eine gewisse Anzahl halboffener Verbindungen mit vertrauenswürdigen Hosts, mit denen ein Cookie ausgehandelt wurde, werden angenommen.
Was sind OOB-Angriffe8.3.4 IP-FragmentierungOOB (Out of Band) ist ein Feature von TCP, das es erlaubt, Daten ausserhalb der Reihenfolge (engl. out of band) zu senden. Dies ist zum Beispiel nützlich für die Behandlung von [Ctrl]+[C] in Telnet-Verbindungen, was eine sofortige Terminierung des Dialogs zur Folge hat. Weniger produktiv genutzt kann das ganze werden, wenn am anderen Ende was ausreichend altes von Microsoft hängt - dieses mag OOB-Daten an vielen Stellen gar nicht. Schuld an der Möglichkeit einer solchen Attacke war die fehlerhafte Implementierung von NetBEUI durch Microsoft: Sobald über die Ports135 und 139 ein paar Daten oder wirre Zeichen eintrafen, die nicht der Norm entsprachen, stürzte das betroffene System ab.
Das erste OOB-Tool war WinNuke, welches laut verschiedenen Quellen am 7. Mai 1997 das Licht der binären Welt als C-Source für Linux erblickte. Eine Portierung für Win32 liess nicht lange auf sich warten und wurde unter dem treffenden Namen WinNuke 95 publiziert. Durch den IRC (Internet Relay Chat) und verschiedene Newsgroups erreichte WinNuke bald eine gewisse Popularität und Verbreitung. Erschreckend ist ganz sicher die unglaubliche Einfachheit und Primitivität dieses Fehlers und seiner Ausnutzung, der dazu führte, dass es in kürzester Zeit eine Unmenge von OOB-Nuke-Tools gab. Die OOB-Nuker wurden stetig perfektioniert: So konnte man neben Massen-Nuke auch "Abschiessgründe" senden und anschliessend sogar verifizieren lassen, ob der Rechner des Opfers tatsächlich crashte, indem versucht wurde der Zielrechner mit einem ICMP-Ping zu erreichen.
Das am meisten eingesetzte Programm mit der OOB-Funktionalität war unumstritten WinNuke 95. Das Nuke-Tool war sehr einfach zu bedienen, da lediglich die IP-Adresse des Opfers ausfindig gemacht und in die Maske des Utilities eingetragen werden musste.
![]()
WinNuke im Einsatz gegen das eigene System: Sind wir verwundbar?Durch den Druck auf den Nuke-Knopf wurde die tödliche Sequenz abgeschickt und innerhalb weniger Sekunden der Angreifer über den Verbleib des attackierten Systems informiert.
OOB-Attacken verlieren jedoch zunehmends an Bedeutung, da Windows 98 und 2000 gegen solche Angriffe bereits gefeit sind. Bei Windows 95 und NT mussten noch Updates installiert werden, um diese Attacke wirkungslos erscheinen zu lassen.
In grösseren Netzwerke, in denen zwingend gegen OOB-Angriffe verwundbare Rechner an ein externes Netz gebunden werden müssen, empfiehlt sich der Einsatz von NAT (Network Adress Translation - IP Masquerading), welches durch ein Firewall-System realisiert wird. Dadurch sind keine direkten Verbindungen zu den verwundbaren Hosts mehr möglich, und nicht nur OOB verliert dadurch seine Bedrohlichkeit.
Was ist IP-Fragmentierung (Ping of Death)Ein einzelnes IP-Paket ist inklusive Header maximal 65'535 Bytes lang, Ethernet-Pakete können jedoch maximale 1'500 Bytes Daten übertragen. Grössere Pakete werden fragmentiert und beim Empfänger wieder defragmentiert, wobei die Zusammensetzung anhand eines Offset-Wertes erfolgt. Dies wird gemacht, um Netzwerkabschnitte zu überwinden, welche lediglich eine maximale Paketlänge unterstützen. Jedes Paketfragment erhält neben dem Offset-Wert auch noch eine Identifikationsnummer, aber nur das erste enthält den TCP-Header und damit die Portnummer. Dieser Offset-Wert bestimmt für jedes Fragment, wohin es gehört oder wohin es soll. Dadurch ist es möglich, dem letzten Fragment einen Offset zu geben, der inklusive Fragmentgrösse einen grösseren Wert als die maximalen 65'535 Bytes ergibt. Dieses übergrosse Ping-Paket erzeugt anschliessend einen Bufferoverflow. Dieser Angriff funktioniert nicht nur mit ICMP und Ping, sondern auch mit UDP und TCP. Obwohl ein ordentlicher Ping-Befehl keine Pakete grösser als 65'507 Bytes (65'535 Bytes abzüglich 20 BytesIP-Header und 8 Bytes ICMP-Header) zulässt, bot bei den ersten Versionen von Windows 95 (a und b) der dort implementiertePing-Befehl das entsprechende Feature in Form eines Parameters. Einfach "ping -l 65510 zielhost" eingeben, und der Todes-Ping wird ausgeführt. Anfang 1997 war von dieser Attacke durch das Tool jolt.c so ziemlich alles betroffen, was einen IP-Stack hatte. Von der Workstation bis zum Drucker war damals praktisch nichts dagegen gewappnet. Sie gilt auch als eine der erfolgreichsten Angriffsmöglichkeiten gegen Sniffer: TCP-Filter können auch in der Regel nicht mehr sicher unterscheiden, ob die Paket ins interne Netz gelassen werden dürfen, da die Port-Information bei den meisten Paketen fehlt. Wenn die Zielstation nun auch noch unvollständige Paketfragmentfolgen auswertet - und jene auch nicht verwirft - kann eine Firewall ohne grössere Probleme umgangen werden. Dies war bei einer Linux-Box mit ipfwadm und ipchains, Conseal PC Firewall und McAfee PC Firewall möglich. Diese DoS-Attacke konnte auch bei der Checkpoint-1-Firewall Fuss fassen, wie Lance Spitzner in seinem Bericht demonstrierte: Eine grosse Anzahl fragmentierter Pakete trieb die Prozessorauslastung bis auf 100 %. Mit jolt2.c wurde ein gebührender Nachfolger publiziert, den es gleichermassen für Windows 2000 und Linux x86 mit glibc2 gibt.
Was ist Fragment Overlapping (Teardrop)
Ein einfacher aber wirkungsvoller Angriff, der IP-Fragmentierung ähnlich wie der "Ping of Death" ausnutzt, ist die sogenannte "overlapping fragment attack" nach RFC 1858 (Security Considerations for IP Fragment Filtering); Auch diese Attacke wurde gegen Ende 1997 besonders oft gesichtet und wurde als teardrop.c bekannt. Die derzeitige Internet Protokoll-Spezifikation RFC 791 (Internet Protocol) beschreibt einen Reassemblierungs-Algorithmus, der neue Fragmente produziert und dabei jeden überlappenden Teil der zuvor erhaltenen Fragmente überschreibt. Wird ein solcher Algorithmus angewendet, so kann ein Angreifer eine Folge von Paketen konstruieren, in denen das erste Fragment (mit einem Offset der Länge Null) harmlose Daten beinhaltet (und dadurch von einem Paketfilter weitergeleitet werden kann). Ein beliebiges nachfolgendes Paket mit einem Offset, der größer als Null ist, könnte TCP-Header-Informationen (z.B. destination port) überlappen. Diese würden durch den Algorithmus modifiziert (überschrieben). Dieses zweite Paket wird von vielen Paketfiltern nicht gefiltert. Gegenmaßnahme hierzu ist, Paketfilter zu verwenden, die ein Minimum an Fragment Offset für Fragmente verlangen. Nur wenige neuere TCP/IP-Stacks erkennen dieses Problem und korrigieren dieses. Ältere Router lassen sich mit diesem Trick einfach durchtunneln, sie bieten keinen Schutz. Besonders aber Firewalls, die auf der Basis der Stateful Paket Filterung (SPF) arbeiten, wie z.B. Raptor Eagle und Firewall-1 liessen sich so durchtunneln. Content-Anbieter im Internet und ISPs, die mit diesen FirewallsNT-Server schützen wollten, wurden so Ziel der unzähligen Angreifer, die neue Exploits mal testen wollten.
Der Exploit fawx.c funktioniert da etwas anders: Ähnlich wie ssping.c sendet das Utility übergrosse fragmentierte IGMP-Pakete auf eine Windows-Maschine, um sie dadurch einfrieren zu lassen.
IP-Fragmentierung: Gegenmassnahmen
Abhilfe schafft nur eine vollständige Reassemblierung der TCP/IP-Pakete bzw. ein Patch oder der Einsatz eines Proxy. Nachteil der zweiten Lösung ist ein enormer Einbruch in der Performance, der den Vorteil der SPF-Firewalls völlig zunichte macht. Dies zeigt aber wieder einmal deutlich, dass Firewalls keineswegs perfekt sind. Will man solchen Angriffen zuvorkommen, so ist man als Betreiber eines mission critical Systems auf die ständige Betreuung eines Experten angewiesen. Da von diesem Angriff nur spoofende Versionen existieren, können die Täter oft nicht aufgespürt werden.
Die Medien haben einen Hang Denial of Service-Attacken auf Distanz praktisch zu glorifizieren: Eingeschüchtert sollen sich die Leser der Zeilen mit dem Thema auseinandersetzen - Die Angst mit dem Unbekannten Bösewicht aus dem Netz der Netze. Verloren geht, vielen unbewusst, dass stets auch lokale Angriffe diesen Ursprungs eine nicht zu unterschätzende Gefahr in sich bergen. Viele Eindringlinge "verschrotten" ein kompromittiertes System nach dessen Einnahme, starten also eine lokale DoS-Attacke. Dieses Vorgehen basiert in den meisten Fällen auf dem Verschlingen von Systemressourcen oder Programmierfehlern. Findet eine Penetration dieser Form statt, so wird berechtigten Benutzern das Nutzen der betroffenen Ressourcen erheblich erschwert oder gar verunmöglicht. Ein Nachteil von Windows NT ist gleichermassen sein Vorteil: Das besagte Betriebssystem wurde nicht für die Fernarbeit konzipiert. Ein Remote-Login an einem solchen System ist also nicht vorgesehen und daher auch seltenst genutzt. Somit wird ein schelmischer Bösewicht lokalen Zugriff aufsuchen, um seine destruktive Ader in dieser Hinsicht zu Tage zu fördern.8.5 ZusammenfassungVon einem imposanten Beispiel ist Windows NT 4.0 in nahezu allen Versionen betroffen: Eine korrupte Anfrage beim LSA-Service (Microsoft Local Security Authority) kann durch einen lokalen Angreifer genutzt werden um den Computer aufhängen zu lassen. Mit folgender Fehlermeldung entgegnet ein solches System:
Sorry! The Microsoft Exchange Server is down or the HTTP service has been disabled by an administrator. Please try your request again later.Lediglich ein Neustart des Computers führt zu einem Normalzustand des Hosts. Der Grund für das Bestehen dieses Fehlers liegt darin, dass dubiose API-Aufrufe durch den LSA-Service nicht immer korrekt gehandhabt werden können. Microsoft hat mit einem Patch reagiert. Mehr Informationen zu diesem Angriff findet sich unter http://support.microsoft.com/support/kb/articles/Q231/4/57.ASP.Wir haben gesehen, dass es eine Unmenge von differenten Möglichkeiten gibt, Elemente in einem Computer-Netzwerk in ihrer Funktionsweise negativ zu beeinträchtigen. Das Aufbrauchen der gesamten Bandbreite stellt die mitunter primitivste Möglichkeit dar, und wird daher von Angreifern mit beschränkten Fähigkeiten genutzt. Zwar ist relativ viel Rechenpower und eine angemessene Netzanbindung von Nöten, doch kann ein für eine Distributed Denial of Service-Attacke (DDoS) zusammengeschlossener Verbund von Computern in seiner vollen Mächtigkeit erschaffen werden: Die wenigsten Netzwerke und Computer werden gegen solche Ressourcen-Angriffe gewappnet sein.Viel gefährlicher sind jedoch Anomalien, die schon bei geringem Aufkommen eine destruktive Wirkung mit sich ziehen können. Ich spreche hier beispielsweise von Angriffen, basierend auf OOB, Smurf und IP-Fragmentierung, die es primär auf Programmierfehler abgesehen haben. Solche Deformationen und Anomalien sind von Angreifern sehr beliebt, da sie mit relativ geringem Aufwand bei ihrem zwielichtigen Ziel ankommen werden.
Weitaus komplexer sind Denial of Service-Angriffe, die sich dem Routing in einem Netzwerk annehmen. Ein kleiner Teil der gehobeneren Schicht der Angreifergilde befindet sich im Besitz des Wissens um das Nutzen dieser potenten Angriffsform.
Viele Unternehmen stehen und fallen mit dem Zustand ihres Netzwerks, besonders in der heutigen Zeit, wo ein Grossteil der Geschäfte mit der Hilfe von Computern und Netzwerken getätigt werden. Die Vergangenheit hat erahnen lassen, dass eine Firma durchaus böswillig ihre Konkurrenz durch gezielte DoS-Angriffe dem Erdboden gleichmachen kann. Auch grosse Firmen sind vor solchen Angriffen nicht gefeilt: Denken Sie an die historischen Angriffe im Jahre 1998 auf AOL, Yahoo und Ebay. Denken Sie daher über das Gefahrenpotential von Denial of Service-Attacken nach und erarbeiten Sie einen Notfallplan, der die Wucht eines Ernstfalls dämmen können sollte. Bestmöglich klären Sie schon im Vorfeld die Belastbarkeit des Netzwerks und der darin befindlichen Hosts ab, um kritische Elemente stärken oder auswechseln zu können.