1. Vorwort
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 Tutz habt, schickt mir einfach ne Mail.
2. 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:
3. 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.
4. 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
5. 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 saturn
Welcome to SuSE Linux 6.2 (i386) - Kernel 2.2.10 (pts/0).
login:
Aber auch andere Dienste können mittels Telnet ausgehorcht werden, z. B. Mail- bzw. FTP Server:
telnet saturn 25
220 saturn.mac.ac ESMTP Sendmail 8.9.3/8.9.3; Sun, 19 Mar 2000-07-16 09:48:15
telnet saturn 21
220 saturn Microsoft FTP Service /Version 3.0)
telnet mars 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.
6. 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:
jupiter:~ # nmap 0 neptun
Remote operating system guess: Linux 2.1.122 - 2.1.132
jupiter:~ #nmap 0 saturn
Remote operating system guess: Windows NT4/Win95/Win98
7. 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:
8. 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
Typische Login/Passwortkombinationen, die immer wieder auf Systemen
gefunden werden, sind field/service, guest/guest oder
admin/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.
9. 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 PCs 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 PCs mit schnellen Pentium oder Athlon CPUs 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.
Die nachfolgende Tabellen aus der Studie von Daniel Klein geben einen
Überblick, welche Typen von Passwörtern mit Hilfe von Wortlisten
und deren einfachen Permutation enttarnt werden konnten. 2.7% der Passwörter
konnten über eine User Account Liste enttarnt werden, 6,2% über
Namenslisten (weibliche, männliche Namen) und über 7,4% über
Vokabular Listen (Dictionary Wordlists).
|
Passworttyp |
benutzten Wortlisten |
Entschlüsselungen |
Allen untersuchten Passwörtern |
| User Account Name
Buchstabenfolge Zahlen Chinesisch Geographie Gebräuchliche Namen Weibliche Namen Männliche Namen Ungewöhnliche Namen Mythen/Legenden Shakespeare Sport Wissenschaft Kino/Schauspieler Cartoons Prominente Familiennamen Biologie Vokabular-Listen Maschinen Abkürzungen Bibel Verschiedene Wörter Jüdische Wörter Asteroiden |
886 427 392 628 2239 4280 2886 4955 1246 473 238 691 99 92 290 33 58 19683 9018 14 7525 3212 54 2407 |
22 9 56 82 548 161 140 130 66 11 32 59 12 9 55 9 1 1027 132 2 83 54 0 19 |
0,2% 0,1% 0,4% 0,6% 4,0% 1,2% 1,0% 0,9% 0,5% 0,1% 0,2% 0,4% 0,1% 0,1% 0,4% 0,0% 7,4% 1,0% 0,0% 0,6% 0,4% 0,0% 0,1% |
Als Passwörter sind zu vermeiden:
Namen
Wörter, von denen man nicht annimmt, dass sie in Wörterbüchern vorkommen wie:
Passwörter, die man in der Vergangenheit bereits benutzt hat.
10. 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:
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:
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.
11. 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.
Im letzten Abschnitt werden einige Links zu Seiten aufgelistet, bei
denen man sich die geeigneten Programme downloaden kann.
12. 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.
BSD, FreeBSD, NetBSD tcpdump
DEC Unix tcpdump
HP/UX nettl, netfmt, nfswatch
Linux tcpdump
SGI Irix nfswatch, Etherman
Solaris snoop, rcpdump
SunOS etherfind, nfswatch
Windows NT Netzwerkmonitor
Netware LANalyser
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..
13. 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.
14. 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 passwort
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. Einige Links zu Internetseiten findet ihr im letzten
Kapitel.
15. 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.
16. 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:
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.
18. 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
Das Format von ICMP Nachrichten
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
1 2 4 5 6 7 8 9 10 11 12 13 14 |
Echo Reply
Unassigned Unassigned Source Quench Redirect Alternat Host Adress Unassigned Echo Router Advertisement Router Selection Time Exceeded Parameter Problem Timestamp Timestamp Reply |
15
16 17 18 19 20 29 30 31 32 33 34 35 37 255 |
Information Request
Information Reply Adress Mask Request Adress Mask Reply Reserved (for Security) Reserved (for Robustness Experiment) Traceroute Datagram Conversion Error Mobile Host Redirect IPv6 Where Are You IPv6 I Am Here Mobile Registration Request Reserved |
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<<
| 1 2 3 4 5 6 7 8 9 10 11 12 |
Network Unreachable Host Unreachable Protokoll Unreachable Port Unreachable Fragment Needed and DF set Source Route Failed Destination network unknown Destination Host unknown Source host isolated Communication with destination network administratively prohibited Communication with destination host adminastratively prohibited Network unreachable for type of service Host unreachable for type of service |
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.
19. 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.
Optionsnummer Beschreibung
| 0 | End of option List |
| 1 | No operation |
| 2 | Security and handling restrictions |
| 3 | Loose Source Routing |
| 4 | Internet Timestamp |
| 7 | Record Route |
| 8 | Stream Identifier (obsolete) |
| 9 | Strict Source Routing |
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.
20. 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.
21. 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.
22. 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.
23. 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.
24. 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. Vorraussetzung 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.
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.
25. 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.
26. 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.
27. 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.
28. 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.
29. 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.
30. 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:
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: .
32. 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).
33. 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:
34. 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.
35. 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.
36. Nachwort
Was ihr letztendlich mit diesem Text anstellt, bleibt euch überlassen.
Macht mich nicht dafür verantwortlich, wenn ihr sch*** baut ;)
37. Links zu interessanten Seiten im Internet
Deutsche Seiten
http://www.computec.ch/index.html
http://www.trojaner-info.de/beseitigung.shtml
Englische Seiten
http://www.tlsecurity.net/main.htm
http://www.undergroundnews.com/
http://www.genocide2600.com/
Author: Crash Override
(C) 2001 by The German Computer Freaks (GCF)