Hier wird auch auf die einzelnen Beispiele speziell eingegangen. Es werden nur einige Angriffsmethoden erklären, damit man sich gegen diese schützen kann. Dieser Text soll keine Anleitung dazu sein, wahllos andere Rechner anzugreifen und eventuell zu schädigen. Er soll lediglich über verschiedene Angriffsmethoden aufklären. Im Nachwort stehen die Quellen dieses Tutorials. Wenn ihr Fragen, Anregungen oder Kritik zu diesem Tutorial utz habt, schickt mir einfach eine Mail (strcat@gmx.net).
Informationsbeschaffung
Wenn sich ein Angreifer einem Netzwerk nähert (egal, ob von innen oder von außen), ist sein erstes Ziel, so viele Informationen wie möglich zu beschaffen. Dabei spielen nicht nur die Passwörter eine Rolle, sondern auch Infos über die dort eingesetzte Hard- und Software. Wenn der Angreifer im "inneren" des Netzwerkes befindet, ist die Beschaffung dieser Infos einfacher, als wenn er von "außen" über eine Firewall zugreifen muss. Aber selbst dann können mit den entsprechenden Programmen aussagekräftige Daten über die Struktur gesammelt werden. Die hierzu benötigten Tools können über das Internet beschafft werden. Im einzelnen sind dies:
-
Adressscanner
-
Portscanner
-
Protokollanalysatoren
-
Bannertexte
-
Fingerprinting
-
Die allgemeinen Informationsdienste
Adress- und Portscanner
Um aus einem unbekannten Netzwerk eine möglichst vollzählige Liste aller Knoten zu gewinnen, muss jede potentielle Netzwerkadresse mit einem Paket angesprochen werden. Kommt ein solches Datenpaket zurück, kann mit hoher Wahrscheinlichkeit auf die "Anwesenheit" eines Gerätes geschlossen werden. Diese Aufgabe wird von Adressscannern wahrgenommen. Im IP - Bereich senden diese z. B. einen ICMP Echo - Request (Ping - Paket) an alle möglichen Adressen eines Subnetzes und warten auf die Antwortpakete vom Typ ICMP Echo - Reply.
Da viele Firewalls einen ICMP - Verkehr abblocken, versuchen gute Adressscanner auf mehreren Wegen an die gewünschten Informationen zu kommen. Alle denkbaren Protokolltypen werden ausprobiert um schließlich doch eine Antwort und damit die Information zu bekommen. Auch die Wahl einer falschen Absenderadresse (aus dem Adressbereich des Opfers) hilft manchmal weiter. Der Angreifer muss allerdings sicherstellen, dass die Antwortpakete bei ihm vorbeikommen.
Wenn dann eine Liste der aktiven Netzwerkknoten erstellt ist, ist die Suche nach wartenden Serverprozessen die nächste Aufgabe. Diese wird von den Portscannern erledigt, die meist als kombinierte Adress- / Portscanner auch die Suche nach den Knoten durchführen. Beim Portscan werden Wünsche nach TCP - Verbindungsaufnahmen oder UDP - Pakete an alle oder einen Teil der Ports gesendet und aus den Antworten Rückschlüsse auf aktive Dienste geschlossen.
Auch hier besteht bei Zugriffen vom Internet aus die Möglichkeit, dass Firewallsysteme die Pakete überwachen und es ggf. nicht weiterleiten. Bei UDP - Paketen sind die Möglichkeiten eine Firewall zu überlisten gering; aber beim TCP - Portscan gibt es eine Reihe von Varianten, die eine nähere Betrachtung wert ist. Die einfachst Variante des Scans empfindet eine gewöhnliche TCP - Verbindungsaufnahme nach. Dabei spielen die TCP - Flagge, die sog. Code - Bits SYN und ACK, die entscheidende Rolle. Diese Art der Kontaktaufnahme ist allerdings von Firewalls leicht festzustellen Du zu blockieren.
Der TCP SYN - Scan, auch half open Scan genannt, verzichtet auf den kompletten Dreiphasen - Handshake.
Es sendet ein SYN - Paket und wartet auf die Antwort. Kommt eine SYN / ACK - Antwort, ist ein Dienst gefunden. Das folgende Reset - Paket RST beendet diese Verbindung gleich wieder. Kommt allerdings keine Antwort oder ein RST - Paket, ist an dem angesprochenen Port kein Dienst aktiv oder eine Firewall blockt den Port ab.
Der TCP FIN - Scan nutzt eine Menge weitere TCP - Flagge, mit der das Ende einer bestehenden TCP - Verbindung angezeigt wird. Wartet am betreffenden Port kein Serverprozess, wird ein RST - Paket gesendet. Kommt hingegen keine Antwort, kann auf die Existenz eines Dienstes geschlossen werden, da in den TCP - Spezifikationen auf ein FIN - Paket bei nicht zuvor geöffneter Verbindung keine Antwort erfolgen darf. Firewalls lassen FIN - Pakete häufig passieren, so dass mit dieser Technik ein Blick hinter die Kulissen geworfen werden kann.
Die bisher angesprochenen Scan - Verfahren können bei Bedarf mit einer zusätzlichen Fragmentierung auf IP - Ebene durchgeführt werden. Fragmente sind von Paketfiltern nur schwer zu durchschauen weil die Pakete am Zielsystem zusammengebaut werden, und dann dort zu den oben beschriebenen Antworten führen.
Ein UDP - Scan ist bedeutend schwieriger durchzuführen als ein TCP - Scan, da ein aktiver Serverprozess nicht verpflichtet ist, ein Antwortpaket zu senden. Ebenso müssen inaktive Ports keine Fehlermeldung senden, doch in der Praxis kann aus dem Empfang eines ICMP Port unreachable - Paketes auf einen inaktiven Port geschlossen werden.
Die Ergebnisse eines Portscans können wichtige Aufschlüsse über das eingesetzte Betriessystem und die darauf laufenden Applikationen geben. So sind die Ports 135 - 139 wichtige Indizien auf Microsoftsysteme, wohingegen Portnummern ab 512 die unter Unix verbreiteten r - Dienst bedeuten. Auch Firewalls und sogar Intrusion - Detection - Systeme verraten sich durch ihre Administrations- und Kommunikationsports, wenn der Scan aus dem Intranet ausgeführt wird. Verantwortungsvolle Administratoren ändern deshalb grundsätzlich die Nummern dieser Ports, sofern die Konfiguration der Systeme das erlaubt.
Protokoll - Analysator
Protokoll - Analysatoren sind Geräte, die es Wartungstechnikern ermöglichen, den Netzwerkverkehr zu untersuchen und Fehler bei der Übertragung zu lokalisieren. Derartige Analysatoren gibt es als dedizierte Gerte, aber auch als Zusatzprodukte für die gängigen Betriebssysteme. Sie zeichnen nicht nur die bei der Suche nach Fehlern nötigen Header und Flaggen auf, sondern die gesamten Pakete inklusive Datenteil. Protokoll - Analysatoren können auf vielfältige Weise als Angriffstool missbraucht werden. sie liefern Informationen über
-
Geräte im Netz
-
Eingesetzte Netzwerkprotokolle
-
Dienste
-
Inhalte der Kommunikation (Daten)
Werden die Daten im Klartext übertragen, können wertvolle Informationen z. B. über Passwörter und Benutzernamen abgelesen werden. Die aufgezeichneten Inhalte von Telnet- oder Rlogin - Session geben direkt oder indirekt Auskunft über die Netzinfrastruktur des potentiellen Opfers, so dass der "Hacker" in Ruhe sein eigentliches Angriffsziel auswählen kann. Diese sogenannten Sniffer sind auf speziell konfigurierbare Netzwerkkarten angewiesen, da der gesamte Netzwerkverkehr aufgezeichnet werden muss. Die Interfaces müssen sich in den sogenannten Promiscuous Mode umschalten lassen. Werden Switches eingesetzt, so können Analyseprogramme nur einen kleinen Teil der im Segment enthaltenen Daten aufzeichnen. Die Verschlüsselung von Daten entwertet die gelesenen Informationen, doch ist diese Maßnahmen im Intranet, wo die meisten Sniffer eingesetzt werden, wegen der hohen Kosten kaum durchzusetzen.
Bannertexte und Informationsdienste
Banner sind diejenigen Texte, die ein Dienst bei der Anmeldung eines Clients diesem übersendet. Sie enthalten meist Informationen über Versionsnummern, so dass es für den Angreifer kein Problem ist, spezifische Angriffe einzusetzen. Bannertexte werden im ASCII - Format übermittelt und können mittels Telnet abgefragt werden:
$ telnet painless.tdl Welcome to SuSE Linux 6.2 (i386) - Kernel 2.2.10 (pts/0). login:
Aber auch andere Dienste können mittels Telnet ausgehorcht werden, zum Beispiel Mail- bzw. FTP - Server:
$ telnet painless.tdl 25 220 saturn.mac.ac ESMTP Sendmail 8.9.3/8.9.3; Sun, 19 Mar 2000-07-16 09:48:15 $ telnet painless.tdl 21 220 saturn Microsoft FTP Service /Version 3.0) $ telnet painless.tdl 21 220 ProFTPD 1.2.0pre3 Server (powered by SuSE Linux) [mars.mac.ac]
Der letzte Versuch (ProFTP - Server) offenbart eine höchst gefährdende Version. Ein im Internet verfügbarer Angriff verschafft dem entfernten Angreifer den vollen Zugriff auf die Maschine (mit Root - Rechten versteht sich). Bannertexte sind meist unveränderbar.. bietet der Dienst z. B. über die Konfigurationsdatei jedoch die Möglichkeit, diese Texte individuell anzupassen, sollte von dieser Möglichkeit auch Gebrauch gemacht werden.
Über die Bannertexte hinaus bieten die meisten Betriebssysteme ganz freiwillig weitere Daten über ihre interne Struktur an. Diese Informationsdienste laufen als Serverprozesse auf den Rechnern und warten an genau definierten Ports auf informationshungrige Clients. Beispiele sind hier die in der Unix - Welt wohlbekannten finger- und rwho - Dienst oder unter Windows NT das Programm nbstat. Wegen der Abhängigkeit vom Betriebssystem werden die Informationsdienst in den entsprechenden Kapiteln genauer behandelt.
Fingerprinting
Eine recht neue Art der Informationsgewinnung über fremde Systeme ist das sogenannte Fingerprinting. Die zugrundeliegende Theorie geht davon aus, dass die Netzwerkstacks von verschiedenen Systemen sich in einigen Kleinigkeiten unterscheiden, vor allem in Antworten auf ungenormte Fragen. Mit einem Bündel solcher Anfragen kann dann aus den gesammelten Antworten ein recht genaues Abbild des Systems gewonnen werden, das (analog zu einer Verbrecherkartei) einen Fingerabdruck ergibt. Dieser wird mit einer vorgegebenen Datenbasis verglichen.
Die in der Praxis verfügbaren Tools zum Fingerprinting nutzen in der Regel ungebräuchliche TCP - Flagge oder andere selten genutzte Protokollvarianten zur Generierung ihrer Abfragen:
-
TCP - Flaggen SYN, ACK, RST, FIN, URG (Urgent) und PSH (Push)
-
Die restlichen (reservierten) Flaggen im TCP - Header
-
Verschiedene ICMP - Anfragen
Aus den Antworten auf diese (und einigen anderen) Paketen ergibt sich ein recht genaues Bild des analysierten Systems:
# nmap -0 barfoo Remote operating system guess: Linux 2.1.122 - 2.1.132 # nmap -O foobar Remote operating system guess: Windows NT4/Win95/Win98
Account- und Passwortangriffe
Die häufigste Ursache für erfolgreiche Einbrüche in Computersysteme liegt im Versagen des Mechanismus für die Zugangsberechtigung (Authentifikation). Die Schlüsselrolle aller Authentifikationssysteme spielt dabei die Methode, mir der Identität eines Benutzers und damit verbunden die Nutzungsrechte, die ihm zugeteilt worden sind, überprüft werden (Authentifizierung + Identifikation = Authentifikation).
Die am meisten verbreitete Methode der Benutzerindentifikation basiert auf Passwörtern, die währen des Anmeldevorgangs eingegeben werden. dem Computer - System selbst müssen die betreffenden Kennwörter natürlich ebenfalls bekannt sein. Deshalb werden die verschlüsselten Kennwörter in verschlüsseltem Zustand auf den Systemen abgelegt. Zugangssysteme, die höheren Sicherheitsstandards genügen müssen, benutzen Einmalpasswörter, Smartcards oder personenbezogene Identifikationmerkmale (Fingerabdruck, Stimme, usw. usw.) zur Authentifikation. Um in den Besitz von Passwörtern zu kommen, werden von Angreifern fünf unterschiedliche Strategien angewandt:
-
Erraten des Passwortes (Passwort Guessing)
-
Systematisches Passwortraten unter Nutzung der Datei mit den Verschlüsselten Passwörtern (Passwort Cracking)
-
Protokollanalyse mit Passwortfiltern (Passwort Sniffer)
-
Login/Passwort - Monotoring mittels TSR - Programmen (Keylogger) und Trojanischen Pferden
-
Social Hacking.
Passwort Guessing
Die trivialste und in einigen Fällen auch die schnellste Methode, um Zugang zu einem Computersystem zu erreichen, ist das Erraten der Login/Passwortkombination. Dabei wird meist von bekannten oder häufigen Zugangskennungen (Logins) wie Admin, Guest, Field, Service und anderen ausgegangen und versucht, das dazu passende Passwort zu erraten. Mehrere Studien haben gezeigt, dass viele Benutzer von Computer - Systemen dazu neigen, außerordentlich leicht zu erratende Passwörter auszuwählen, da diese auch leicht in Erinnerung behalten werden können. Eine Untersuchung in großen Industrieunternehmen ergab, dass 10% aller Benutzer ihre Vornamen als Passwort verwenden.
Typische Login/Passwortkombinationen, die immer wieder auf Systemen gefunden werden, sind field/service, guest/guest oderadmin/admin. Solche Accounts werden in Benutzerhandbüchern oft als Beispiele verwendet oder sind auch nach der Installation als Standardkonfiguration vorhanden. Werden diese Sicherheitslöcher nicht erkannt, haben selbst unerfahrene "Hacker" leichtes Spiel.
Passwort Cracking
Die Methode des systematischen Passwortratens setzt voraus, dass Angreifer in der Lage ist, in Besitz einer Kopie der Passwortdatei zu kommen. Die Passworteinträge in dieser Datei sind so codiert, dass eine direkte Entschlüsselung nicht möglich ist (Hash). Mit Hilfe spezieller Programme kann aber zumindest ein Teil der Passwörter in relativ kurzer Zeit enttarnt werden. dabei werden Programme wie "Crack" oder "L0phtcrack" benutzt, die in der Lage sind Passwörter, die nach dem selben Algorithmus wie er vom Betriebssystem verwendet wird, zu entschlüsseln.
Wortbibliotheken, die Zehntausende von Wörtern enthalten, werden damit systematisch verschlüsselt und das jeweilige Ergebnis mit den codierten Einträgen der Passwortdatei verglichen. Ist die Bibliothek durchgearbeitet, schalten einige dieser Programme in den Brute - Force - Modus um, in dem die alle Kombinationen von Buchstaben, Ziffern und Sonderzeichen testen.
Daniel Klein ("Foiling the Cracker")zeigte schon 1990 anhand einer Untersuchung von 15000 Unix - User Accounts, dass etwa 25% der in Passwortdateien verschlüsselten Passwörtern mit einer solchen systematischen Ratestrategie enttarnt werden können. Die Entschlüsselung von 2,7% der Passwörter führte im Durchschnitt bereits nach einer Rechenzeit von 15 Minuten zum Erfolg. Das erste Passwort konnte schon nach 2 Minuten aufgedeckt werden. das Funktionieren dieser Methode basiert einzig und allein darauf, dass in überwiegenden Zahl von Netzwerken zumindest ein Teil der benutzten Passwörter aus Wörtern und/oder Namen besteht, die leicht zu erraten sind. Bereits bei einer Kombination von zwei kurzen, aus drei bis fünf Buchstaben bestehenden Zeichenkette, die durch ein Komma oder einen Punkt getrennt sind, wie z. B. Pass,sys wird das Erraten wesentlich schwerer. Bei der zusätzlichen Anwendung einer Kombination aus Sonderzeichen sowie abwechselnder Groß- und Kleinschreibung ist eine Entschleierung mit Wortlisten sehr Zeitaufwendig bzw. fast unmöglich.
Die große Zahl an erfolgreichen Passwortdatei - Entschlüsselungen mit Hilfe von umfangreichen Wortlisten wurde durch die heute bereits in PC?s vorhandene hohe CPU - Rechenleistung ermöglicht. Als der DES - Algorithmus Mitte der siebziger Jahre entwickelt wurde, benötigten die damals schnellsten Workstations vom Typ DEC - PDP - 11 noch an die 250 ms, um ein Unix - Passwort zu entschlüsseln. Pro Sekunde konnten also etas drei Passwörter codiert werden. heutige PC?s mit schnellen Pentium oder Athlon - CPU?s sind dagegen in der Lage, mehr als 1000 Passwörter pro Sekunde zu verschlüsseln. In fünf Stunden können also 18 Millionen Wörter und Wortkombinationen verschlüsselt und mit dem Code der Passwortdatei verglichen werden.
Mit zunehmender Rechenleistung wurden auch die Programme immer raffinierter. So verschlüsseln Cracker wie Cracker - Jack schon längst nicht mehr nur den unveränderten Inhalt von Wortlisten. Jeder Eintrag der Wirtliste wird auf Wunsch durch die unterschiedlichen Groß- und Kleinschreibungsreihenfolge, sowie durch Permutation der Buchstabenreihenfolge mehrfach getestet. So wird der Eintrag "michael" als Michael, miCael, micAel, micaEL, MicaeL, Michael verschlüsselt. Nun wird gezeigt anhand eines Beispiels, wie Cracker-Jack durch unterschiedliche Permutationen des User - Account - Eintrages ein verschlüsseltes Passwort angreift.
billy:EncrPassword:123:Billy The Kid:/ur/billy:/bin/csh There are 4 Levels of gecos manipulation 1: Each word e.g. "Billy", "The", "Kid" 2: Combination af any 2 words e.g. "BillyThe", "BillyKid", "TheBilly", "TheKid", ? 4: Combination of 1 word and up to 2 initials e.g. "BillyTK", "BillyKT", "TKBilly", "TbillyK", "Bkid", ? 8: Combination of substrings of to 3 words e.g. "BiThKid", "BillKi", "BilTheKi", "TheBillyK", "BTK", ? Level 1, 2 and 4 can added together.
Als Passwörter sind zu vermeiden: Namen
-
der eigene Name, inklusive Spitz- Nickname
-
der Name der Freundin, Verwandten, Kindern etc.
-
Ortnamen, Plätze, Länder
-
Romanhelden, Prominenten
-
Computersysteme, Autos etc.
Zahlen:
-
Telefonnummer
-
Geburtstage
-
Autokennzeichen
-
Führerscheinnummer
-
Adresse
-
Bekannte Zahlenfolgen wie 0815 etc.
-
Ziffernfolgen wie 12345, 11111 etc.
Benutzernamen in jeglicher Form wie
-
Mike_user
-
Mikeuser
-
Mike-user
Jegliche Wörter aus einem Wörterbuch, egal aus welcher Sprache. Wörter, von denen man nicht annimmt, dass sie in Wörterbüchern vorkommen wie: Schimpfwörter, Flüche, Technische Begriffe. Gleiches gilt für Phrasen wie Make my day, Willkommen an Bord, .., Passwörter, die aus einem Buchstaben bestehen wie yyyyyyyy, Tastaturfolgen wie asdf, qwertz, .., Tastenkombinationen, die man durch Beobachtung bei der Eingabe erkennen kann wie 163ß74 (außer man ist schnell im Schreiben), Begriffe und Vorliebe, für die man bekannt ist (Lieblingsfilm, Musikrichtung, Hobby, ..). Jegliches Objekt, dass vom Arbeitsplatz aus ins Auge fällt und Passwörter, die man in der Vergangenheit bereits benutzt hat sollte man auch vermeiden.
Richtlinien zur Passwortwahl
Werden bei der Auswahl der Passwörter bestimmte Richtlinien beachtet, so bedeutet dies bereits eine erhebliche Erhöhung der Sicherheit des Gesamtsystems. Da die Kosten für die damit verbundenen Maßnahmen vernachlässigbar sind, sollte kein Unternehmen darauf verzichten, diese - gegebenenfalls auch gegen den passiven Widerstand der Mitarbeiter - durchzusetzen.
Gut gewählte Passwörter machen ein Erraten, selbst wenn dem Eindringling die Passwortdatei in die Hände fällt, fast unmöglich. Im allgemeinen sollten für ein Passwort die vier folgenden Eigenschaften gelten:
-
schwierig, selbst mit umfangreichen Wortlisten nicht zu erraten
-
leicht zu merken
-
regelmäßig abgeändert
-
gut geschützt (verschlüsselt / unzugänglich) am Zielsystem gespeichert
Die regelmäßige Änderung von Passwörtern schützt gegen Brute - Force - Angriffe. Als allgemeine Faustformel kann gelten, dass sich ein Passwort signifikant häufiger ändern muss, als es durch einen Brute - Force - Angriff statistisch geknackt wird. In der nachfolgenden Auflistung sind konkrete Empfehlungen aufgelistet, die - werden sie befolgt - jedem Eindringling den Einbruch in das System enorm erschweren. Gegen Sniffer, die - einmal eingeschleust - in der Lage sind, jede Keyboard - Eingabe mitzulesen, bieten allerdings selbst die härtesten Passwörter und die am besten geschützten Passwortdateien keinen Schutz.
Folgende Richtlinien sollten bei der Passwortauswahl berücksichtigt werden:
-
Das Passwort sollte regelmäßig geändert werden
-
Das Passwort sollte sowohl Groß- als auch Kleinbuchstaben beinhalten
-
Das Passwort sollte Ziffern und Sonderzeichen enthalten
-
Erfindet einfach Abkürzungen als Gedächtnishilfe wie z. B. Iow2basN:t#1 I only want to be a small number: the number 1
-
Kombiniert mehrere Worte miteinander: AngstessenSeeleauf
-
Das Passwort sollte eine Mindestlänge von 6 Zeichen haben - je länger desto sicherer
Man sollte aber auch bedenken, dass die Benutzer durch den Zwang extremer oder zu langer Passwörter frustriert werden können. Die Passwörter werden dann nicht selten unter der Schreibunterlage versteckt oder kleben sogar manchmal direkt am Monitor. Hier muss ein Kompromiss zwischen Nutzbarkeit und Sicherheit getroffen werden, die User müssen sensibilisiert werden und vom Sinn und Zweck der komplizierten Passwörter überzeugt sein.
Test der Passwörter
Wie hoch die Qualität der Passwörter im eigenen Netzwerk ist, lässt sich am besten dadurch überprüfen, dass man versucht, ausgerüstet mit den Passwortcrackern und zahlreichen Wortlisten, die Passwortdateien zu entschlüsseln.
Es gibt aber auch die, zugegeben etwas außergewöhnliche, Methode, wie sie von einigen Firmen in der Vergangenheit angewendet wurde. Diese Firmen forderten die Hacker auf, ihr System zu knacken und versprachen bei Erfolg ein "Preisgeld". Diese Angriffe wurden protokolliert und ausgewertet. Anhand dieser Angriffe konnte man feststellen, welche Schwachstellen ein System hat bzw. auch welchen Wegen hauptsächlich versucht wird, in ein Computer - System einzudringen. Das ist zwar eine recht sichere Methode um Sicherheitslücken aufzudecken, allerdings rechnet sich der finanzielle Aufwand in den seltensten Fällen.
Passwort - Sniffing
Eine weitere Methode zur Ermittlung von Passwörtern und Benutzeridentifikationen ist die Überwachung der Datenpakete auf IP - Protokollebene, wie bereits im Kapitel "Informationsbeschaffung" angesprochen. Diverse Protokollanalyseprogramme, die teils mit Betriebssystemen mitgeliefert werden, teils als Freeware für diverse Plattformen verfügbar sind, ermöglichen oft die Nutzung einer gewöhnlichen Netzstation als LAN - Analysesystem. Vielfach versuchen "Hacker", solche Programmen in das Zielsystem einzuschleusen bzw. bereits dort vorhandene Programme zu starten und für ihre Zwecke zu missbrauchen. Gelingt dies, so gelangt der Eindringling in kürzester Zeit in den Besitz einer großen Zahl von Passwörtern und Usernamen. Grundsätzlich sollten sich solche Analyse - Programme weder auf Servern oder Gateways, noch auf den Systemen von gewöhnlichen Benutzern befinden. Mit Hilfe von Filtern und Trigger - Funktionen kann in weiterer Folge nicht nur auf Internet - Adressen, sondern auch auf die Inhalte der Datenpakete gefiltert werden (z.B. Zeichenketten wie "login" oder "password").
Selbst wenn die Passwörter mit eurem Hash verschlüsselt über die Leitung gehen, können sie gelesen und mit einem Passwortcracker entschlüsselt werden..
Passwort - Monitoring
Eine weitere äußerst gefährliche Einbruchsvariante besteht in der Installation von kleinen Programmen, die im Hintergrund laufend, jede Tastatureingabe überwachen (Keylogger). Wenn es dem Eindringling später gelingt, die Datei mit den erbeuteten Zugangserkennungen wieder abzuholen, steht ihm das System offen zur Verfügung. Es besteht bei einigen Keyloggern auch die Möglichkeit, sich die aufgezeichneten Daten per Email zuschicken zu lassen.
Trojaner
Eine weit verbreitete Methode, in den Besitz von Passwörtern zu kommen, ist der Einsatz von kleinen Programmen, die unter dem Namen "Trojaner" oder "Trojanische Pferde" bekannt sind. Diese Programme basieren darauf, als etwas anderes zu erscheinen, als sie tatsächlich sind. Im einfachsten Fall wird ein solches Programm vom ahnungslosen User gestartet und führt keine Funktion aus (es kann auch sein, dass sie mit anderen Programmen verbunden sind). Einfach programmierte Trojaner haben meistens nur eine Funktion. Sobald der User das Programm startet, wird eine Bildschirmmeldung ausgeworfen wie z.B.: Error: Incorrect password. Wenn der Benutzer dann dieser Meldung folge leistet und sein Passwort wiederholt eingibt, wird dieses gespeichert und per Mail an den Besitzer zurückgeschickt. Es gibt aber auch Trojaner, die - einmal gestartet - dem Versender die volle Kontrolle über den infizierten Computer ermöglichen.
Einmalpasswörter und Smartcards
Wirklichen Schutz gegen die bisher beschriebenen Methoden des Passwortdiebstahls bieten lediglich Authentifizierungsmethoden auf der Grundlage von Einmal - Passwörtern, wie sie bei Banken und Versicherungen üblich sind. Jeder Benutzter bekommt dabei regelmäßig einen Ausdruck mit mehreren Passwörtern. Bei jedem Anmeldevorgang wird ein anderes Passwort benutzt und danach von der Liste gestrichen (ähnlich wie beim TAN - Nummern - Verfahren).
Aufwendigere Schutzeinrichtungen benutzen kleine Hardware - Einheiten (Dongle) mit Displays, über die in Abhängigkeit von Datum und Uhrzeit zu jedem Zeitpunkt ein unterschiedliches Passwort ausgegeben wird. Das Server - System kann das Passwort prüfen, da es über einen synchronen Takt verfügt.
Andere Systeme basieren auf Einsteckkarten, die sog. Smart Cards. Diese sind in der Lage, in direkter Kommunikation mit dem Zielsystem den Authentifikationsprozess zu durchlaufen. Die Passwörter müssen dabei nicht manuell eingegeben werden und können ohne Beeinträchtigung der Handhabbarkeit mit langen Zugangscodes arbeiten.
Doch selbst Hochsicherheitssysteme, die auf Einmalpasswortsystemen in Kombination mit Zeitsynchronisation zwischen Client und Server basieren, können überwunden werden. Hacker versuchen dabei, mehrere Einmalpasswörter aufzuzeichnen und diese nach dem Zurückstellen der Systemzeit durch einen Angriff auf den Zeitserver (NTP - Angriff) nochmals zu verwenden.
Sicherheitslöcher im Netzwerk
Mit der Einführung des Internets für kommerzielle Anwendungen und der Einführung von Internet - Technologien in Unternehmensnetze (Intranets) setzte sich in den neunziger Jahren TCP/IP als das zentrale Transportprotokoll in der Datenverarbeitung durch. Proprietäre Protokolle wie SNA, IPX, DECnet oder Appletalk sind zwar nach wie vor im Einsatz, spielen allerdings eine zunehmend geringe Rolle.
TCP und IP wurden Ende der siebziger Jahre vom amerikanischen Verteidigungsministerium (Departmenr of Defense DOD) für das damalige ARPAnet, dem Vorläufer des Internets, entwickelt. Dort wird es seit 1983 als das offizielle Transportprotokoll benutzt, und hat sich seitdem auch für lokale Netze zum Industriestandart entwickelt. Heute werden beide Protokolle von der Internet Engineering Task Force (IETF) weiterentwickelt und für neue Technologie adaptiert (TCP/IP über ATM, digitale Kabelnetze, drahtlose Übertragung etc.). Da beim Design von TCP/IP die spätere kommerzielle Nutzung nicht vorsehbar war, besitzt TCP/IP eine Reihe von systemimmanenten Mängeln, die zum größten Teil mit der neuen IP - Version 6 (Ipv6) beseitigt werden können. Dazu gehören ein zu kleiner Adressraum, fehlende Möglichkeiten der Priorvisierung von Echtzeitdaten sowie keine praktikablen Mechanismen für Verschlüsselung und Authentifizierung. Ipv6 löst diese Probleme zwar im wesentlichen, es setzt sich allerdings nur sehr zögerlich durch, weshalb in nahezu allen Datennetzen heute noch immer mit der älteren IP - Version 4 (Ipv4) gearbeitet wird.
Obwohl sich TCP/IP während seines nunmehr über 24 jährigen Einsatzes in Datennetzen außerordentlich bewährte und letztlich in einem evolutionären Prozess alle Proprietären Transportprotokolle verdrängte, wurden immer wieder massive Sicherheitslücken in den TCP/IP - Mechanismen bekannt. Teilweise konnten sie zwar durch Hersteller von Routern- und Firewallsystemen geschlossen werden, allerdings besteht immer noch eine Vielzahl von Problemen. Neben dem systemimmatenenten Problemen liegt die Ursache eines Großteils von Einbrüchen auf der Basis der Transportprotokolle in der fehlerhaften Konfiguration von Computersystemen, Routern oder Firewalls. Lückenhafte Portfilterkonfigurationen, aktive ICMP - Optionen oder schlampig aufgesetzte Routing - Tabellen sind hier die "klassischen" Fehler, denen man immer wieder begegnet.
Viele Angriffsmethoden benutzten TCP/IP - Sicherheitslücken nur, um dann aufsetzend auf Anwendungsprotokollen wie FTP, DNS, SMTP oder NNTP den eigentlichen Angriff zu starten. Nachfolgend werden alle wichtigen auf Transport- und Anwendungsprotokollen basierenden Angriffsmethoden im Detail beschrieben sowie entsprechende Gegenmaßnahmen aufgeführt.
Dabei haben viele Angriffe nur das Ziel, Dienst oder gleich ganze Systeme das Opfers Lahmzulegen. Man spricht hier von Denial - of - Service - Angriffen. Ganz grob können die Angriffsszenarien im IP - Protokoll und den höheren Ebenen wie folgt eingeteilt werden:
IP - Ebene:
-
IP - Spoofing
-
ICMP - Angriffe
-
Routing - Angriffe
-
Broadcast - Stürme durch ARP - Missbrauch
-
IP - Fragmentierungsangriffe
-
Bombardierung mit Paketen
TCP - Ebene:
-
SYN - Flooding
-
TCP - Sequenznummern - Angriff
-
Abbruch von TCP - Verbindungen
-
Übernahme von TCP - Verbindungen (Hijacking)
UDP - Ebene:
-
UDP - Spoofing
Anwendungsebene:
-
Angriffe auf das DNS - System
-
Angriffe auf Mailsysteme
-
Telnet - Angriffe
-
FTP - Angriffe
-
Angriffe auf Newsserver
-
Angriffe auf Webserver
Die Angriffsmöglichkeiten auf Webserver werden wegen der zahlreichen Möglichkeiten in einem eigenen Kapitel beschrieben.
IP - Adress Spoofing
Die am häufigst verwendete Technik zur Überwindung von Firewall - Systemen und gleichzeitig die Grundlage für eine Reihe weiterer Angriffsmethoden stellt das Internet Adress Spoofing dar. Dabei werden vom Angreifer synthetische Datenpakete mit gefälschter IP - Senderadresse erzeugt, die das Pakte einer internen Station vortäuschen. Gefährlich ist diese Form des Angriffes vor allem dann, wenn als Firewall - System sogenannte Paketfilter zum Einsatz kommen, die lediglich in der Lage sind, am Ausgangsport von zu übertragenden Datenpaketen eine Filterung durchzuführen. Dabei geht die Information, ob es sich um ein externes gefälschtes handelt, verloren. Es wird, sobald die Sendeadresse als aus dem eigenen Adressbereich stammend erkannt wird, als Bestandteil von internen Kommunikationsbeziehungen behandelt und entsprechend weitervermittelt.
Der Angreifer aus dem Internet erzeugt dabei ein "Spoofing - Paket" mit der Sendeadresse 181.12.10.201. Als Zieladresse benutzt er die Adresse des Opfers, das sich im Netzwerk 181.12.11.0 befindet. Der Firewall - Router vermittelt zunächst das synthetische Paket an den gewünschten Ausgangs - Port (181.12.11.0) und überprüft erst hier anhand der Filtertabelle die Sendeadresse. Das Paket wird dabei vermeintlich als von einem aus dem internen Netzwerksegment 181.12.10.0 stammendem System behandelt und weitervermittelt.
Können von einem Angreifer mittels Adress - Spoofing erfolgreich IP - Pakete von außerhalb durch das Firewall - System hindurch in das interne Datennetz gesendet werden, kann dies als Ausgangspunk für eine Reihe von Angriffsvarianten über Source - Routing, RIP, ICMP, NNTP oder TCP - Sequenznummern genutzt werden.
ICMP - Angriffe
Das ICMP - Protokoll dient als integraler Bestandteil des Internet - Protokolls dazu, dem in einem Fehlerfall betroffenen Absender von IP - Datenpaketen das Auftreten von Netzwerkproblemen zu melden. Dieser hat dann die Aufgabe, entsprechende Maßnahmen zu ergreifen. Router oder Hosts werten solche Nachrichten allerdings häufig automatisch aus und führen entsprechende Rekonfigurationen durch. Durch das Versenden von manipulierten, künstlich erzeugten ICMP - Paketen sind Angreifer somit oftmals in der Lage, Computersysteme zu bestimmten Aktionen zu bewegen. Ziele von ICMP - Angriffen sind
-
Beeinträchtigung der Funktionsfähigkeit des Netzwerkes
-
Veränderung der Vermittlungspfade mit darauffolgendem Systemeinbruch
Obwohl ICMP - Nachrichten enkapsuliert innerhalb con IP - Paketen versendet werden, können sie nicht mit einem höheren Protokoll wie TCP oder UDP verglichen werden. Sie sind ein Teil des eigentlichen Internet - Protokoll, der nicht deaktiviert werden kann. Als Sendeadresse von ICMP - Datenpaketen wird die Adresse jener Station, von der der Fehler entdeckt wurde, angegeben. Empfänger ist der ursprüngliche Versender des fehlerhaften bzw. des den Fehler auslösenden Paketes. Das Auftreten eines Fehlers wird somit lediglich dem Absender mitgeteilt, nicht aber den eventuell dazwischen liegenden Vermittlungssystemen.
Mit Hilfe des Typenfeldes werden die unterschiedlichen ICMP - Nachrichten spezifiziert. Die Tabelle (Abb. 7) zeigt die wichtigsten Belegungen. Die häufigsten ICMP - Angriffe werden unter Benutzung der ICMP - Nachrichten - Typen 3 (Destination Unreachable), a (source Quench) und 5 (Redirect) vorgetragen.
0
|
Echo Reply |
1,2,7
|
Unassigned |
4
|
Source Quench |
5
|
Redirect |
6
|
Alternate Host Address |
8
|
Echo |
9
|
Router Advertisement |
10
|
Router Selection |
11
|
Time Exceeded |
12
|
Parameter Problem |
13
|
Timestamp |
14
|
Timestamp Reply |
15
|
Information Request |
16
|
Information Reply |
17
|
Address Mask Request |
18
|
Address Mask Reply |
19
|
Reserved (for Security) |
20-29
|
Reserved (for Robustness Experiment) |
30
|
Traceroute |
31
|
Datagram Conversion Error |
32
|
Mobile Host Redirect |
33
|
IPv6 Where-Are-You |
34
|
IPv6 I-Am-Here |
35
|
Mobile Registration Request |
37-255
|
Reserved |
Missbrauch der ICMP - Nachricht "Destination Unreachable"
Wenn ein Datenpaket nicht an die gewünschte Adresse vermittelt werden kann, so sendet das letzte aktive Vermittlungssystem die ICMP - Nachricht "Destination Unreachable (ICMP - Typ3). Die ICMP - Nachricht Typ 3: “Destination Unreachable”
0
|
Network Unreachable |
1
|
Host Unreachable |
2
|
Protocol Unreachable |
3
|
Port Unreachable |
4
|
Fragmentation Needed and DF set |
5
|
Source Route Failed |
6
|
Destination network unknown |
7
|
Destination host unknown |
8
|
Source host isolated |
9
|
Communication with destination network administratively prohibited |
10
|
Communication with destination host adminastratively prohibited |
11
|
Network unreachable for type of service |
12
|
Host unreachable for type of service |
Zusätzlich werden neben dem Paket - Header noch die ersten 64 Datenbytes des betreffenden Datenpaketes mit dem ICMP - Paket übertragen. Dies dient dazu, der Sendestation die Möglichkeit zu geben, genau zu erkennen, welche Verbindung abgebrochen werden muss. Vielfach besteht nämlich zwischen zwei Internet - Adressen eine Vielzahl von Verbindungen, die jeweils unterschiedliche Adressen ansprechen. Einige ICMP - Implementationen sind allerdings nicht in der Lage, die Port - Informationen der ICMP - Pakete zu analysieren, und unterbrechen alle Kommunikationsbeziehungen zwischen den beiden betroffenen Internet - Hosts. Angreifer können so mit geringem Aufwand in kürzester Zeit eine große Zahl von Internet - Verbindungen lahm legen.
Eine Störung des Netzbetriebes kann durch die permanente Versendung der Nachricht "Fragmentation Needed and DF set" verursacht werden. dadurch werden die betroffenen Systeme veranlasst, ihre Daten fragmentiert in kürzeren Paketen zu versenden, was einer Erhöhung der Netzlast resultiert.
Gegenmaßnahmen zu den beschriebenen Angriffen sind nicht ohne weiteres zu treffen, da ICMP eine notwendige Teilkomponente des Internet - Protokolls darstellt. Eine wichtige Maßnahme besteht jedoch darin, Router - Systeme so zu konfigurieren, dass nur eine bestimmte maximale Anzahl von ICMP - Nachrichten pro Zeiteinheit in das interne Netzwerk vermittelt werden können.
Im Normal - Betrieb sollte die Anzahl der ICMP - Pakete verhältnismäßig gering ausfallen. Die meisten Netzwerk - Management - Systeme sind in der Lage, die Anzahl der übertragenen ICMP - Pakete zu überwachen und bei einem außergewöhnlichem Anstieg einen entsprechenden Alarm auszulösen.
Missbrauch der ICMP - Nachricht "Source Quench"
Source - Quench - Nachrichten werden gewöhnlich nur von Gateway - Systemen dazu benutzt, die Übertragungsrate von Sendestationen zu reduzieren, um eine Überlastsituation zu verhindern bzw. zu beenden. Die betreffenden Empfängerstationen reduzieren daraufhin so lange ihre Übertragungsrate, bis keine "Source - Quench" - Nachrichten mehr empfangen werden. durch das missbräuchliche, exzessive Versenden von künstlich erzeugten Source - Quench - Paketen kann der Datenverkehr daher empfindlich gestört werden.
Missbrauch der ICMP - Nachricht "Redirect"
Diese Nachricht wird von Routern benutzt, Hosts, die mit minimaler Routing - Information neu am Netzwerk aktiv werden (und denen z. B. nur die Adresse eines einzigen Routers bekannt ist), zur Benutzung der optimalen Route zu veranlassen. Router selbst sollten allerdings im allgemeinen so konfiguriert werden, dass sie immun gegen solche ICMP - Redirect - Nachrichten sind, und in jedem Fall ausschließlich nach den Routern ihrer Routing - Tabellen vermitteln.
Angreifer von außerhalb sind sonst in der Lage, mit Hilfe von IP - Adress - Spoofing entsprechende ICMP - "Redirect" - Nachrichten in das Netzwerk einzuschleusen und Router so zu einer Änderung der Vermittlungswege über beliebige Stationen zu bewegen. Gelingt es so, Verbindungen über den externen Knoten des Angreifers selbst umzuleiten, ist ein massiver Netzeinbruch die unmittelbare Folge.
Ping of Death
Dieser Angriff basiert auf einem extrem langen ICMP Echo Request - Paket, welches in fragmentierter Form (aufgeteilt auf mehrere Teilpakete) an das Zielsystem gesendet wird. Normalerweise dient die Fragmentierung dazu, Netzwerkabschnitte deren maximale Paketlänge geringer ist als die eines bestimmten IP - Paketes zu überbrücken (IP-Pakete können bis maximal 65535 Bytes lang sein). Beim Ping of Death wird nun allerdings ein unzulässig langes Paket (>65535 Bytes) in fragmentierter Form übertragen. Nach dem Zusammensetzten des Paketes versuchen die Netzwerktreiber des Opfers dieses Paket zu verarbeiten, und verursachen dabei einen Systemabsturz.
Internet - Routing - Angriffe
IP - Pakete können durch Angaben im 8 Bit langem Optionsfeld verschiedene Zusatzfunktionen erfüllen. Diese werden im allgemeinen lediglich vom Systemadministrator für Test- und Überwachungszwecke genutzt. Routing - Optionen wie "Loose Source Routing" können allerdings auch zu Angriffen auf das interne Netzwerk von außerhalb verwendet werden.
Der Source - Routing - Angriff
Die einfachste Routing - Attacke benutzt die Internet - Protokolloption 9 (Strict Source Routing) bzw. 3 (Loose Source Routing). In beiden Fällen kann die Route durch das Netzwerk vom Sender des IP - Routing - Paketes bestimmt werden. Im Fall von "Strict Source Routing" muss dabei jeder Vermittlungsknoten in der richtigen Reihenfolge angegeben werden. Zwei als aufeinanderfolgend eingetragene Knoten müssen tatsächlich direkt miteinander verbunden sein. Ist dies nicht der Fall, erfolgt eine Fehlermeldung.
"Loose Source Routing" lässt hingegen auch zusätzliche Vermittlungen (Hops) zwischen zwei angegebenen IP - Adressknoten zu, ohne dass die komplette Route angegeben werden muss. Es bietet sich demnach geradezu an, als Hilfsmittel für einen Angreifer von außen missbraucht zu werden. Der Datenstrom der Zielstation kann damit problemlos an das Computersystem des Eindringlings "umgeleitet" werden. Dazu simuliert der Angreifer wiederum die IP - Adresse eines internen Systems (IP - Adress - Spoofing) und öffnet unter Aktivierung der Option "Loose Source Routing" eine Verbindung zur Zielstation, wobei als Route für die Antwortpakete ein Pfad, der über das angreifende System führt, angegeben wird. Damit stehen dem eingedrungenem System alle Möglichkeiten der simulierten, internen Station zur Verfügung.
Wieder liegt die Ursache für erfolgreiche Attacken nach der beschriebenen Methode in der Durchlässigkeit der Gateways des betroffenen Netzwerkes für IP - Pakete mit internen Adressen überexterne Datenleitungen. Die Aktivierung entsprechender Input - Filter bzw. die Filterung von IP - Paketen mit aktivierter Source Routing - Option schließt dies Lücke.
Der RIP - Angriff
Mit Hilfe des RIP - Angriffes ist es möglich, unbemerkt ganze Kommunikationsbeziehungen zwischen zwei internen Stationen über einen externen Angreifer "umzuleiten". Der Angreifer (X) simuliert dabei eine interne Station (A) und sendet modifizierte RIP - Pakete (Routing Information Protocol) an die zweite zugreifende Station (B) sowie an die Gateways, die zwischen X und B liegen. Diese Pakete weisen B sowie die Gateways an, jedes Paket von B nach A - entsprechend der gefälschten Routen - Information - nicht nach A, sondern nach X zu vermitteln. Der Angreifer X wertet die für A eingehenden Pakete aus (Passwörter, Logins, etc.) und sendet sie, versehen mit der "Source - Route - Option", weiter an ihren eigentlichen Bestimmungsort A. durch die Aktivierung der "Source - Route - Option" stellt X sicher, dass auch alle Antwortpakete von A nach B überwacht werden können. Ähnlich wie im Fall des Source - Route - Angriffs werden RIP - Angriffe durch Gateways verhindert, die IP - Adress - Spoofing - Pakete blockieren. Darüber hinaus sollten alle internen Router so konfiguriert sein, dass ohne weiteres eine Änderung der bestehenden Routen nicht möglich ist.
Das Exterior Gateway Protocol (EGP)
Dieses Protokoll wird dazu benutzt, um zwischen zwei autonomen Systemen Routing - Informationen auszutauschen. Im Internet werden damit beispielsweise sog. "Mid - Level - Netzwerke" an das Internet - Backbone angebunden. Die in Europa zur Kommunikation zwischen den Internetprovidern übliche EGP Variante ist BGP -4 (Boarder Gateway Protocol 4). Angriffe auf Basis dieser EGP können mit einem Schlag mehrere hundert Netzwerke betreffen. Eine Angriffsvariante besteht darin, ein anderes autonomes Gateway vorzutäuschen (EGP - Spoofing) und damit beispielsweise den gesamten Verkehr zwischen zwei Internetprovidern über das eigene System umzuleiten.
Broadcast - Stürme durch ARP - Missbrauch
Eine Angriffsvariante, die der massiven Beeinträchtigung der Betriebsbereitschaft des Zielnetzwerkes dient, sind ARP - Angriffe. Sie dienen dazu, Netzkomponenten gezielt in Überlastsituationen zu bringen, in der Hoffnung, undefinierte Zustände hervorzurufen und im Anschluss daran einen Angriff starten zu können. Normalerweise dient das Adress - Resolution - Protocol in Netzwerken dazu, die einer Internet - Adresse zugeordnete Hardware - Adresse zu finden. Dazu werden ARP - Pakete in Form von Broadcasts an alle Netzwerkteilnehmer versendet. Kann eine Adresse innerhalb eines Netzsegmentes nicht gefunden werden, leiten Gateways die ARP - Anforderung per Broadcast an alle angeschlossenen Netzwerke weiter. Wenn künstlich generierte ARP - Pakete zur Suche von nicht existierenden IP - Adressen generiert werden, so führt dies daher rasch zu einem "Broadcast - Sturm" der Gateways. "Verbessert" werden kann dieser Effekt noch, dass nach dem ersten Broadcast - Sturm synthetische "ARP - Replies" der nicht existierenden Adresse versendet werden, die von den Gateways wiederum per Broadcast weiterverbreitet werden. solche Broadcast - Stürme belegen rasch über längere Zeiträume den größten Teil der verfügbaren Übertragungsbandbreite und stören die Funktionsfähigkeit der betroffenen Netzwerke empfindlich. Wichtig ist es, in diesem Zusammenhang auch zu untersuchen, wie sich die eingesetzten Netzwerkkomponenten im Fall von extremer Überlast verhalten, um Angriffen während solcher Situationen vorzubeugen.
Der IP - Fragment - Angriff
Die Fragmentierung von IP - Datenpaketen dient gewöhnlich dazu, Netzwerkabschnitte, die lediglich eine bestimmte maximale Paketlänge unterstützen, zu überwinden. So liegt die maximale Nutzlast, die ein Ethernet - Paket übertragen kann, bei 1500 Bytes, während die maximale IP - Paketgröße 65535 Bytes beträgt. Die betroffenen Datenpakete werden deshalb (falls erforderlich) vom jeweiligen Gateway in Fragmente unterteilt. Nach der Übertragung werden die einzelnen Fragmente nicht sofort wieder reassembiert, , sondern zunächst an ihr endgültiges Ziel vermittelt. Erst dort erfolgt dann die Zusammensetzung zum ursprünglichem IP - Paket.
Jedes Paketfragment enthält im IP - Header eine Identifikationsnummer, eine Fragmentierungsflagge sowie einen Fragment - Offset, wodurch Identität und Reihenfolge der Fragmente eindeutig definiert sind. Für auf Paketfilterung basierende Firewall - Systeme, die Vermittlungsentscheidungen auf Basis von TCP - Portnummern treffen, stellen fragmentierte Pakete daher eine mögliche Gefährlichkeit dar, weil lediglich im ersten Fragment die TCP - Portnummer enthalten ist und Fragmente ohne TCP - Port nicht ausgefiltert werden können. Ist das erste IP - Paket allerdings so kurz, dass die TCP - Portnummer erst im zweiten Paket erscheint, haben Paketfilter große Probleme.
Paketfilter kontrollieren außer den Portnummer die TCP - Flaggen. So werden häufig ankommende Verbindungen (SYN - Flagge gesetzt) nur von bestimmten IP - Adressen erlaubt. Mit zwei sich überlappenden Fragmenten eines SYN - Paketes (negativer Offset) passieren die IP - Pakete das Firewall - System. Mit IP - Fragmenten kann außerdem eine Unzahl von Denial of Service Attacken ausgelöst werden. einer dieser Angriffe ist z. B. der "Ping of Death". Viele andere Varianten von unregelmäßigen Fragmenten sind denkbar, die beim Zusammenbau zu Problemen führen können (je nach Implementierung des IP - Stacks). Anschließend werden einige Beispiele für diese große Klasse von Angriffen gezeigt, deren Vertreter so klangvolle Namen wie teardrop, newtear, bonk oder boink haben. Diese Angriffe können nur durch eine sorgfältige Programmierung des IP - Stacks bekämpft werden. die Kontrolle von Fragmenten vor dem Zusammenbau sollte eine höhere Priorität haben als die Schnelligkeit der Verarbeitung.
IP - Bombing
Eine wirkungsvolle Sabotagetechnik, die in der Regel der Angriffsvorbereitung dient, ist die Bombardierung fremder Rechner mit IP - Pakete nach dem Motto : Die größere Bandbreite gewinnt. Dazu muss das Opfer von einer möglichst großen Zahl von Angreifern attackiert werden. zu diesem Zweck wurde eine Reihe von Angriffstools programmiert(Stacheldraht, Trin00, etc.), die alle nach dem gleichen Prinzip arbeiten. Zunächst muss im Internet nach Rechnern Ausschau gehalten werden, auf denen (unter Ausnutzung von Sicherheitslöchern) kleine Programme installiert werden können, die sog. Agenten. Das sind in der Regel Rechner von Universitäten oder anderen Organisationen mit ungenügend abgesicherten Netzwerken. Diese Agenten warten an bestimmten TCP bzw. UDP - Ports auf das Signal zum Angriff. Über bestimmte Nachrichten werden sie vom Angreifer gleichzeitig aktiviert und senden Netzwerkpakete zu Opfer. Da diese Angriffe verteilt ausgeführt werden, bezeichnet man sie auch als "distributed Denial of Service" Angriffe (DDoS). Schutz bieten nur Filterprogramme, die nach wartenden Agenten suchen und diese deaktivieren.
SYN - Flooding
Diese Angriffe basieren auf einer Implementationsschwäche des TCP/IP - Protokolls. Daten einer halb geöffneten TCP - Verbindung werden dabei über einen bestimmten Zeitraum im Speicher gehalten, um eventuell verspätet eintreffende Pakete noch korrekt zuordnen zu können. Werden nun in rascher Folge eine große Anzahl von Verbindungs - Anforderungen an ein System gesendet, ohne die jeweiligen TCP - Handshakesequenz zu beenden, so kann das betreffende Computersystem rasch zum Absturz gebracht werden. moderne Implementierungen von IP - Stacks setzten die Timeout - Zeit bis zur Freigabe des Speichers herunter bzw. legen ab einem Schwellwert nur einen kurzen Hash zur Identifikation der Verbindung ab. Die komplette Datenstruktur wird dann erst nach Empfang des ersten Datenpaketes aufgebaut.
Der TCP - Sequenznummern - Angriff
Das ist einer der gefährlichst und wirksamsten Methoden, um auf Paketfiltertechnik basierende Firewallsysteme zu überwinden. Unter Ausnutzung dieser bereits 1985 erkannten Sicherheitslücke können ALLE Sicherheitssysteme überwunden werden, deren Zugangsmanagement auf der Auswertung von IP - Sendeadressen beruht, überwunden werden. Der Ansatzpunkt dieses Angriffs liegt in der aus drei Schritten bestehenden Handshake - Sequenz während eines TCP - Verbindungsaufbaus. Voraussetzung ist, dass, wie beschrieben, mit Hilfe von IP Adress Spoofing gefälschte IP - Pakete von außen in das interne Datennetz gesendet werden können.
Eine TCP - Handshake - Sequenz arbeitet im Detail folgendermaßen: Soll vom Client A eine Verbindung zum Remote - Shell - Server B aufgebaut werden, so wird dies mit dem Datenpaket A > B: SYN, A_SNa eingeleitet, in dem von A das Synchronisationsbit SYN gesetzt wird und B die Anfangssequenznummer (Initial Sequenz Number ISN) der aufzubauenden TCP - Verbindung A_Sny mitgeteilt wird. Server B antwortet darauf mit B > A: SYN, A_SNb. Dabei wird die Anfangssequenznummer A_SNb an den Client A übermittelt und gleichzeitig dessen Sequenznummer A_SNa bestätigt. A beendet mit der Bestätigung A > B: ACK (A_SNb) die Handshake - Sequenz. Die ab jetzt während der Verbindung anfallenden neuen Sequenznummer bzw. Bestätigungen errechnen sich aus den beiden Anfangssequenznummern und den bisher übertragenen Daten, so dass ein Angreifer, der die Anfangssequenznummern und die Daten kennt, die restlichen Sequenznummern leicht berechnen kann. Die Wahl der Anfangssequenznummern erfolgt dabei dem äußerem Anschein nach zufällig, wird tatsächlich aufgrund eines einfachen Algorithmus ermittelt. Im RCF 693 wird festgelegt, dass ein 32 - Bit - Zähler an der niederwertigsten Stelle alle 4 µs um den Wert 1 erhöht werden muss. In den Berkeley - TCP - Implementationen erfolgt die Erhöhung jedoch lediglich jede Sekunde, und zwar um den Wer 128 innerhalb einer Verbindung und um den Wert 64 für jede neue Verbindung. Damit ist es möglich, mit einer hohen Wahrscheinlichkeit vorauszusagen, welche Sequenznummer ein System für seinen nächsten Verbindungsaufbau benutzen wird. Dies wird beim Sequenznummern - Angriff ausgenutzt. Vom Angreifer X wird zunächst unter Benutzung einer beliebigen Sendeadresse eine zulässige Vorbereitungs - Verbindung auf ein harmloses TCP - Port (25,79, etc.) des Zielsystems aufgebaut: X>Z: SYN , A_SNx.
Das Zielsystem antwortet mit Z > X: SYN, A_SNz , ACK(A_SNx). Nun täuscht der Angreifer die Identität eines internen Systems A vor (IP - Spoofing; Sendeadresse A) und sendet an ein "kritisches" TCP - Port wie dem Login - Server (Port 513): A > Z: SYN, A_SNx. Worauf Z mit Z > A: SYN, A_SNz+, ACK(A_SNx). antwortet. Obwohl diese letzte Nachricht an die interne Station A gerichtet ist und für den externen Angreifer nicht sichtbar ist, kann dieser die Anfangssequenznummer A_SNz+ des Zielsystems, ausgehend vom Wert A_SNz der Vorbereitungsverbindung, errechnen und wieder an das interne System A simulierend mit A > Z: ACK(A_SNz+) antworten. Das Zielsystem geht nun von einer gesicherten Verbindung zu der internen Station A aus. Der Angreifer kann weiter als Station A auftreten und auf dem Zielsystem beliebige Operationen durchführen. Einzige Einschränkung ist, dass die jeweiligen Antworten des Zielsystems für den Angreifer nicht sichtbar sind, da diese ja an den internen Client A gesendet werden.
Nun ein kurzer Auszug aus demTCP Sequence Number Guessing Angriff von Kevin Mitnick auf die Workstation von Tsutomu Shimomura. Selbst wenn der Angreifer die Anfangssequenznummer des Opfers nur ungefähr voraussagen kann, ist der Angriff immer noch vielversprechend. Der Angreifer sendet nach seinem TCP -SYN - Paket mit der gespooften Adresse immer eine ganze Reihe von IP - Paketen mit gleichem Inhalt, aber unterschiedlicher Sequenznummer ab, so dass alle potentiellen Nummern angedeckt werden. Alle Pakete bis auf das richtige werden vom Opfer verworfen.
Als Maßnahme gegen diese Angriffe bieten sich die folgenden Strategien an.
-
Konfiguration, des Paketfilters (Input - Filterung).
-
Vermeidung der Authentifikation eines Benutzers auf der Basis von IP Adressen. Firewallsysteme, die darauf aufbauen, sind als problematisch anzusehen.
-
Benutzerauthentifikation mit Hilfe von Crypto - Systemen. Im Fall eines Verbindungsaufbaus erhält der Client (sofern er dazu autorisiert ist) in verschlüsselter Form einen Session - Key, mit dem eine einmalige Verbindung aufgebaut werden kann.
-
Implementierung eines echten Zufallsgenerators zur Berechnung der Anfangssequenznummern
Mitnick versucht zunächst mit den Befehlen finger, showmount und rpcinfo die Beschaffenheit des Systems auszukundschaften:
14:09:32 toad.com# finger -1 @target 14:10:21 toad.com# finger -1 @server 14:10:50 toad.com# finger -1 root@server 14:11:07 toad.com# finger -1 @x-terminal 14:11:38 toad.com# showmount -e x-terminal 14:12:05 toad.com# finger -1 root@x-terminal
Es folgt ein SYN - Flooding - Angriff auf Port 513 (Login - Port) von 130.92.6.97 zur Vorbereitung des nachfolgenden Angriffs. Damit wird der Login - Server ausgeschaltet, damit er bis auf weiteres keine neuen Verbindungsaufbauversuche akzeptieren kann:
14:18:22.516699 130.92.6.97.600 > server.login: S 1382726960:1382726960(0) win 4096 14:18:22.566069 130.92.6.97.601 > server.login: S 1382726961:1382726961(0) win 4096 14:18:22.744477 130.92.6.97.602 > server.login: S 1382726962:1382726962(0) win 4096 14:18:22.830111 130.92.6.97.603 > server.login: S 1382726963:1382726963(0) win 4096 ???? ???? 14:18:25.483127 130.92.6.97.627 > server.login: S 1382726987:1382726987(0) win 4096 14:18:25.599582 130.92.6.97.628 > server.login: S 1382726988:1382726988(0) win 4096 14:18:25.653131 130.92.6.97.629 > server.login: S 1382726989:1382726989(0) win 4096
Nun sendet Mitnick (apollo.it.luc.edu) eine Testreihe von Verbindungsaufbauversuchen an x-terminal.shell um das Verhalten des Sequenznummerngenerators zu untersuchen. Die Sequenznummern (fettgedruckt) erhöhen sich bei jedem Verbindungsaufbauversuch um 128000:
14:18:34.452830 apollo.it.luc.edu.984 > x-terminal.shell: R 1382727007:1382727007(0) win 0 14:18:34.714996 apollo.it.luc.edu.983 > x-terminal.shell: R 1382727007:1382727007(0) win 4096 14:18:34.885071 x-terminal.shell > apollo.it.luc.edu.983: S 2024000000:2024000000(0) ack 1382727008 win 4096 14:18:34.962030 apollo.it.luc.edu.983 > x-terminal.shell: R 1382727008:1382727008(0) win 0 14:18:35.225869 apollo.it.luc.edu.982 > x-terminal.shell: S 1382727008:1382727008(0) win 4096 14:18:35.395723 x-terminal.shell > apollo.it.luc.edu.982: S 2024128000:2024128000(0) ack 1382727009 win 4096 14:18:35.427150 apollo.it.luc.edu.982 > x-terminal.shell: R 1382727009:1382727009(0) win 0 14:18:35.735077 apollo.it.luc.edu.981 > x-terminal.shell: S 1382727009:1382727009(0) win 4096 14:18:35.935681 x-terminal.shell > apollo.it.luc.edu.981: S 2024256000:2024256000(0) ack 1382727010 win 4096
Nun täuscht Mitnick Pakete des zuvor ausgeschalteten Login - Servers (Port 513) vor uns sendet eine Verbindungsaufforderung an x - terminal:
14:18:36.245045 server.login > x-terminal.shell: S 1382727010:1382727010(0) win 4096
Aufgrund der zuvor getätigten Beobachtung des Sequenznummerngenerators kann er die Sequenznummer (fettgedruckt) des SYN - ACKs von server.login bestätigen, ohne dieses Paket empfangen zu haben. Sie ist mit 1014384001 wieder genau 128000 höher als die SYN - ACK - Sequenznummer der letzten Testverbindung:
14:18:36.744422 server.login > x-terminal.shell: . ack 2024384001 win 4096
Damit hat Mitnick eine unidirektionale Verbindung mit x-terminal.shell aufgebaut, die von server.login zu kommen scheint.
Abbruch und Übernahme von TCP - Verbindungen
Der vollständig TCP - Sequenznummernangriff ist schwierig durchzuführen. Ein einfacheres Angriffsszenario unter Ausnutzung der Sequenznummer ist der unfreiwillige Abbruch von TCP - Verbindungen. Hier wird (mitten in eine aktive TCP - Verbindung) zu einem der beiden Partner ein Paket mit der passenden Sequenznummer und gesetzter RST- oder FIN - Flagge gesendet. Die Verbindung wird beendet, die ankommenden Pakete des ahnungslosen zweiten Partners werden ignoriert (Denial of Service). Bei diesem Angriff müssen die Pakete am Rechner des Hackers vorbeikommen, wodurch diese Angriffe vorzugsweise aus dem Intranet oder von großen Providern aus vorgenommen werden können.
Eine Variante des Verbindungsabbruch ist die komplette Übernahme der Verbindung durch den "Hacker" (Hijacking). Hier werden keine RST- oder FIN - Pakete, sondern gewöhnliche Datenpakete mit der richtigen Sequenznummer gesendet. Kommen die Pakete des "Hackers" früher am Zielrechner an als die des regulären Partners, werden die als gültig akzeptiert und die regulären Pakete verworden. Der Angreifer befindet sich mitten in der gerade aktiven TCP - Session. Handelt es sich dabei um eine ASCII - Übertragung wie bei Telnet oder Rlogin, können Befehle mit den Zugriffsrechten des gerade ausgebooteten Benutzers abgesetzt werden. Gute Programme zu Hijacking versuchen, nach Beendigung des Angriffs die beiden ursprünglichen Partner durch Absenden von Paketen mit passenden Sequenznummern wieder zu synchronisieren. Abgesehen von einem kurzzeitigen Stillstand bemerkt das Opfer nichts von der kurzfristigen Übernahme der Session durch den "Hacker". Hijacking verliert seinen Wert bei verschlüsselten Verbindungen, da hier keine sinnvolle Übernahme der Session möglich ist.
UDP - Spoofing
Kommunikationspartner im Rahmen von UDP - Verbindungen sind grundsätzlich immer als nicht vertrauenswürdig einzustufen, da sich dieses Protokoll außerordentlich leicht simulieren lässt. Da weder Sequenznummer noch Bestätigungspakete vorgesehen sind, sollten darauf aufsetzende Applikationen die Netzwerkadressen der jeweiligen Hosts unbedingt einem Authentifikationsprozess unterziehen. Potentielle Angreifer sind andernfalls in der Lage, mit Hilfe von synthetischen UDP - Datenpaketen mit verfälschter Internet - Adresse einen internen Benutzer vorzutäuschen und entsprechende Applikationen zu nutzen. Eine trickreiche Simulation von Handshake - Sequenzen wie im Fall des TCP - Sequenznummernangriffs ist ja bei UDP erst gar nicht notwendig.
Genauso können bestehende UDP - Verbindungen von Angreifern übernommen werden, ohne dass die Server - Applikation die Möglichkeit hat, dies zu bemerken. Auf exponierten Systemen sollte das UDP - Protokoll daher möglichst ganz vermieden werden.
Sicherheitsrisiko DNS
In den meisten Fällen erden DNS - Angriffe als Vorbereitung für einen nachfolgenden Einbruch unter Nutzung der Remote - Dienst (rsh, rlogin, etc.) durchgeführt. Gelingt es einem Angreifer die "in-addr.arpa" - Tabelle de betreffenden DNS so zu modifizieren, dass dem Domainnamen des Trusted - Host, den er vortäuschen möchte, seine eigene, tatsächliche Internetadresse zugeordnet wird, so kann er darauffolgend erfolgreich mit rlogin oder rsh das Zielsystem angreifen. Überprüft die betreffende "r - Applikation" die Internetadresse nochmals in der Gegenrichtung, und fordert per DNS auch ausgehend von der ermittelten numerischen Adresse den zugeordneten Domainnamen an, wie dies in aktuellen Versionen häufig der Falle ist, si kann diese Täuschung allerdings entdeckt werden.
Um diese Barriere zu umgehen, verschaffen sich gewiefte Hacker deshalb auch Zugang zum DNS - Cache. Durch einen entsprechenden Eintrag hält die Authentifikation der Internetadresse des Angreifers auch der zweimaligen Sicherheitsüberprüfung stand, und der Angriff kann fortgesetzt werden. Authentifikationsverfahren sollten deshalb grundsätzlich nicht auf Domain - Namen, sonder auf Internetadressen beruhen. Dies bietet zwar auch keine Sicherheitsgarantie, aber es erschwert immerhin potentielle Einbruchsversuche. Zweites Ziel von DNS- Attacken sind die Zonen - Daten, die Angreifer wertvolle Informationen über Aufbau, Struktur und Adressierung des internen Netzwerks liefern. Der Zugriff auf die Zonen - Dateien (TCP - Port 53) sollte deshalb ausschließlich auf den oder die definierten Secondary DNS - Server möglich sein.
Sicherheitsrisiko SMTP
Das Simple Mail Transport Protocol wird im Internet dazu benutzt, elektronische Nachrichten zu übertragen. Eines der offensichtlichsten Sicherheitsprobleme bei der Analyse des Protokolls ist die Tatsache, dass die Authentizität der Sendeadresse nicht verifiziert werden kann. Als weitere potentielle Schwachstelle dieses Dienstes stellte sich während der vergangenen Jahre die weit verbreitete Unix - Implementierung des SMTP - Dämons, das Programm "sendmail" ,heraus. Die zuverlässige Identifikation von elektronischen Nachrichten ist damit ausschließlich durch den Einsatz von elektronischen Unterschriften möglich, wie sie beispielsweise mit Hilfe von Public - Key - Verfahren (PGP, etc.) realisiert werden können. Weitere Angriffsmethoden, bei denen der E - Mail - Dienst eine entscheidende Rolle spielt, sind MIME- und Postscript - Angriffe sowie das Einschleusen von Trojanischen Pferden und evtl. Viren.
Telnet - Angriffe
Telnet basiert auf der Übertragung von ASCII - Sequenzen. Der gesamte Ablauf einer Telnet - Verbindung wird daher im Klartext übertragen. Damit ist es für einen Angreifer ein leichtes, mit Hilfe von Monitorprogrammen (Ethload, Esniff, Snoop etc.) in den Besitz von Telnet - Logins und Passwörtern zu kommen. Wird ein solcher Protokollmonitor auf einem Netzwerk - Backbone installiert, kann damit in kürzester Zeit eine große Anzahl von Zugangsberechtigungen enttarnt werden.
Eine weitere Angriffmethode besteht darin, die Client - Telnet - Applikation durch ein Trojanisches Pferd zu ersetzen. Eine solche trojanisierte Telnet - Version zeichnet, für den Benutzer unbemerkt, Benutzeridentifikationen und Passwörter auf und legt diese in einer getarnten Datei ab. wirksame Abhilfe gegen diese Art von Angriffen schafft lediglich die Benutzung eines leistungsfähigen Authentifikationsmechanismus. Eine solcher kann entweder mit Hilfe eines Einmalpassworts - Systems oder durch den Einsatz eines Authentifikationsservers geschaffen werden.
FTP - Angriff
FTP basiert auf dem Internet - Protokoll TCP und benötigt zur Durchführung einer Dateiübertragung zwei gleichzeitig aktive Verbindungen. Für jede weitere Datenübertragung muss erneut eine Verbindung aufgebaut werden, die, aufgrund einer Eigenheit des TCP - Protokolls, allerdings eine andere (Client-) Portnummer besitzen muss. Damit ist nicht mehr eindeutig vorhersehbar, über welches Port eine FTP - Datenübertragung abgewickelt wird, was die Implementation des FTP - Dienstes über Firewalls hinweg wesentlich kompliziert. Weitere potentielle Sicherheitsprobleme des FTP - Dienstes sind:
-
Der Server benutzt für die Datenübertragung das privilegierte Port 20 und wird daher als "root" gestartet, diese Sicherheitslücke kann durch passives FTP geschlossen werden.
-
Im Laufe der Jahre wurden eine Reihe von Sicherheitslücken in diversen FTP - Serverdämons entdeckt, die immer wieder zu massive Einbrüchen geführt haben.
-
Fehler bei der Konfiguration als "Anonymer Fileserver"
Als wichtigste Sicherheitsvorkehrung gegen FTP - Angriffe gilt es, den Datenbereich für anonymes FTP vor jeglichem Schreibzugriff zu schützen. Ist dies nicht der Fall, genügt es unter Linux, eine rhosts Datei auf das Zielsystem zu kopieren, um über einen nachfolgenden rlogin - Angriff einzudringen. Des weiteren sollte sich, wie bereits im Abschnitt über Zugangsberechtigungen erwähnt, keinesfalls eine authentische Version einer Passwortdatei in Reichweite des Anonymen - FTP - Dienstes befinden. Ein verheerender Implementationsfehler im weit verbreitetem FTP - Serverprogramm "wuftpd" wurde Mitte 1994 bekannt. Über eine Telnetverbindung auf das FTP - Port 21 und die Eingabe des Befehls SITE EXEC konnten unmittelbar Superuserrechte auf dem betreffenden System erlangt werden.
NNTP
Ein wesentlicher Vorteil von NNTP aus Sicht der Netzwerksicherheit ist, dass die Partner News Server, mit denen kommuniziert wird, so konfiguriert werden müssen, dass ihre Identität bekannt ist. Trotzdem wurde in der Vergangenheit auch der Net - News - Dämon "nntp" bereits mehrfach zu erfolgreichen Angriffen benutzt. Aufgrund der Größe der Internet - News - Dateien (bei einem täglichen News - Volumen von 50 Mbytes sind bei 14tägiger Vorhaltung der Artikel 700 Mbytes an Speicherplatz notwendig), ist es sinnvoll, den News - Server im internen Netzwerk zu installieren, und News Feeds über einen Relay - Mechanismus durch die Firewall hindurch zulassen. Dies birgt allerdings auch das Risiko in sich, dass bei Problemen mit "nntpd" eine Sicherheitslücke im Firewallsystem eröffnet wird.
S: (empfangsbereit auf TCP - Port 119) C: (Verbindungsaufbau auf TCP - Port 119) S: 201 Foobar NNTP server ready (no posting) (Client fordert alle neuen Newsgruppen seit 15. Mai 1995 14h an) C: NEWSGROUP 950515 020000 S: 235 New newsgroup since 980515 follow S: net.fluff S: net.lint S: . (Client fordert alle neuen News - Artikel seit 15.Mai 1995 14H an C: NEWNEWS * 850515 020000 S: 230 New news since 850515 02222 follows S: <1772@foo.UUCP> S: <87623@baz.UUCP> S: <17872@GOLD.CSNET> S: .
Design- und Programmierfehler in Applikationen
Leider ist nicht nur das Netzwerk eine unendliche Quelle von Sicherheitslücken und Angriffsmöglichkeiten, auch auf Applikationsebene öffnen sich für Hacker durch schlampiges Design oder unzureichender Sorgfalt bei der Programmierung zahlreiche Möglichkeiten zum unerlaubten Zugriff. Die Grenze zwischen Netzwerk und Applikationen ist fließend, einige Probleme wirken sich unmittelbar auf das Netzwerk aus. Im folgenden Teil sollen die immer wiederkehrenden Mechanismen für Angriffe auf Applikationen etwas genauer beleuchtet werden. einige der geschilderten Szenarien finden sich allerdings auch bei Problemen im Netzwerkstack wieder (Ping of Death oder Pufferüberlauf).
Der Pufferüberlauf
Der Pufferüberlauf ist ein einfach zu verstehendes Phänomen, obwohl die Programmierung von solchen Angriffen oft sehr schwierig ist. Er beruht auf der Tatsache, dass an unzähligen Stellen eines Programms bestimmte Längen für Variablen reserviert werden, die maximale Länge der Variablen aber nicht eingehalten wird und so benachbarte Bereiche des Speichers überschrieben werden. Kann dieses Verhalten von außen provoziert werden, liegt ein Angriff auf Basis des Pufferüberlaufs vor. Pufferüberläufe sind immer auf einen schlechten Programmierstil zurückzuführen, bei dem Eingaben von außen vor dem Verschieben der Daten in den Puffer nicht auf ihre maximale Länge hin überprüft werden.
Das erste Problem bei der Entwicklung eines auf dem Pufferüberlauf basierenden Angriffs ist die Suche nach dem Fehler im Programm. Der Puffer muss von außen zugreifbar sein und darf nicht durch Längenkontrollen geschützt werden. der einfachst Angriff ist das Überschreiben das Puffers mit sinnlosen Daten, wobei der angegriffene Rechner bzw. Dienst seinen Dienst meist einstellt.
Die hohe Kunst des Pufferüberlaufs ist aber nicht das unkontrollierte Zerschießen von Datenstrukturen, sondern die Manipulation des Puffers, dass sich dort nach dem Überschreiben ein ausführbarer Code befindet. Dieser wird dann vom angegriffenem System ausgeführt, mit den jeweiligen Privilegien des Prozesses. Da viele Serverprozesse mit Root- oder Adminrechten ablaufen, kann so das System nach Belieben manipuliert werden. Der kontrollierte Pufferüberlauf gilt daher als "hohe Kunst" der Angriffsszenarien und soll deshalb noch etwas näher betrachtet werden.
Der von einem Angriff betroffene Speicherbereich des Programms ist fast immer der Stack, selten der Heap. Beide Bereiche haben den Vorteil, dass sie zur Laufzeit des Programms beschrieben werden können und sich ausführbare Befehle dort befinden dürfen. Die anderen Speicherbereiche eines Programms haben diese Vorteile nicht, der Textbereich (Programmcode) ist immer read-only und der Datenbereich ist zwar beschreibbar, kann aber keinen ausführbaren Code enthalten.
Auf dem Stack befinden sich die Returnadresse zum Rücksprung nach Beendigung des Unterprogramms, ein Bereich für lokale Variablen, die nach dem Rücksprung des Programms wieder verschwinden.
Ziel des Angriffs ist es, eine lokale Variable durch Eingabe von außen so zu überschreiben, dass die Returnadresse verändert wird. Diese zeigt dann nicht mehr zum aufrufenden Programm, sondern in den soeben überschriebenen Puffer selbst. Dort befindet sich, passend dimensioniert, ein Stück Programmcode, welcher vom Prozessor ohne zu Zögern verarbeitet wird.
Angriffsprogramme sind in der Praxis sehr schwierig zu programmieren, muss doch der von außen eingeschobene Programmcode bis aufs Bit genau passen, sonst ergibt sich nur ein DoS. Es sind nur recht wenig Hacker in der Lage, einen solchen Angriff selbst zu programmieren. Sind solche Tools allerdings erst einmal entwickelt, werden sie im Internet publiziert und auch die sog. "Script - Kiddies" können sie bedienen.
Puffer - Überlauf - Programme werden stets nach dem selben Muster programmiert. Sie bestehen aus drei Teilen mit den unterschiedlichen Funktionen:
-
Kodierung des Angriffsprogramms, das auf dem Opfer ablaufen soll
-
Aufbau des Puffers, der neben dem reinem Programmcode noch andere Bytes enthält, z. B. NOP - Befehle, wenn die Lage des Puffers im Speicher nicht genau bekannt ist
-
Zuweisung des Puffers an einen Parameter und Start des Angriffs.
Mangelhafter Syntax - Check
Ist der Pufferüberlauf auf eine fehlende Kontrolle der Länge von externen Eingaben zurückzuführen, liegt eine andere Quelle potentieller Angriffe in der unzureichenden Überprüfung der Syntax von externen Eingaben. Diese Überprüfung wird von sogenannten Parsern durchgeführt, die den externen Bytestrom untersuchen und in Befehle und Parameter zerlegen. Leider sind viele dieser Parser mangelhaft programmiert. Besonders im Umgang mit Sonderzeichen. Enthält der zerlegt Eingangsstrom noch Sonderzeichen, können diese bei den anschließenden Operationen von Applikation und Betriebssystem unerwünschte Nebeneffekte erzeugen. So wurden in einigen Versionen des Apache- bz. NCSA - Webservers die Zeichen %A (newline) und %20 (Space) nicht herausgefiltert, was zu fatalen Folgen bei der Ausführung des anschließenden CGI - Scriptes führte.
Die passwd - Datei mit den Passwort - Hashes wurde so auf dem Browser der Angreifers angezeigt. Die denkbaren Angriffe unter Ausnutzung von Fehlern im Parser sind vielfältig. Bekannt ist auch ein Problem vieler Webserver, die die Eingabe von ..\ oder ../ als Wechsel in ein höheres Verzeichnis interpretieren. So kann der Angreifer aus dem virtuellen Root - Verzeichnis auf dem Webserver ausbrechen und die Platte des Opfers einer genauen Inspektion unterziehen. Auch die Zeichen | und ; werden gerne übersehen und dann vom OS in unangenehmer Weise als Output - Redirection oder dem Start eines zweiten Programms interpretiert. Besonders gefährdet sind CGI - Scripte, die oft von unzureichend ausgebildeten Programmierern erstellt werden.
Race Condition
Wie der Name schon sagt, findet ein Wettrennen statt, hier zwischen zwei Programmen. Dabei belegt ein Programm bestimmte Ressourcen (Dateien, Speicherbereiche, Interrupts, etc.), sichert sie aber nur ungenügend gegen Missbrauch ab. Ein zweites Programm, vom Angreifer gestartet, bedient sich dieser Ressource in unzulässiger Weise. Der Zugriff muss allerdings genau im richtigen Moment erfolgen.
Ein klassisches Beispiel ist der Zugriff auf temporäre Dateien, die von einer Applikation zeitweilig mit Daten gefüllt, später aber gelöscht werden. Oft ist ein Zugriff aus diese Dateien ohne besondere Privilegien möglich, so dass die Daten gelesen und/oder verändert werden können.