Im Internet wird seit 1982 das Internet Protokoll Version 4 eingesetzt.
Seit längerer Zeit wird an einer neueren Version des Protokolls (IPv6) gearbeitet. Da jedoch noch nicht abzusehen
ist, wann es zum Einsatz kommt, wird in dieser Arbeit nicht weiter darauf eingegangen.
IP-Protokoll bedeutet in dieser Arbeit immer Version 4 wie sie in RFC
2.1
791 spezifiziert ist.
Das IP-Protokoll hat eine Reihe von Schwachstellen, da sein Design nicht
auf Sicherheit ausgelegt war. IP wurde entwickelt, um Datenpakete (IP-Pakte)
von einem Rechner zu einem anderen zu transportieren.
Das Internet Protokoll ist ein verbindungsloses Protokoll zum Austausch von Daten zwischen zwei Rechnern ohne vorherigen Verbindungsaufbau. IP macht die Netzzugangsschicht für die Transportschicht unsichtbar, dadurch ist es möglich verschiede Netztypen an ein IP-Gateway anzuschließen. IP hat keine Mechanismen zur Flußsteuerung (Reihenfolge der Datenpakete) oder zur Verläßlichkeitsprüfung (sind alle Daten angekommen). In Abbildung 2.2 ist der TCP/IP-Protokollstack graphisch dargestellt.
Das IP-Protokoll hat folgende Aufgaben:
IP kann durch folgende Methoden angegriffen werden:
Unter IP-Spoofing versteht man das Fälschen der Quelladresse in einem
IP-Datagramm. Dieser Angriff ist in [CA-96.21] genau beschrieben.
Wenn man Dienste anbietet, die zur Authentisierung nur die IP-Adresse nutzen,
kann ein Angreifer mit dieser Methode Zugang zu diesen Services erlangen.
Zum Beispiel sind folgende Dienste durch IP-Spoofing angreifbar:
IP-Spoofing bildet die Grundlage für zahlreiche weitere Angriffe, z.B. Hijacking oder SYN-Flooding (siehe Abschnitt 2.10). Ein bekannter Angriff, der IP-Spoofing benutzt, ist Land. Dazu werden IP-Pakete erzeugt, bei denen Quell-IP-Adresse und Quell-Port gleich Ziel-IP-Adresse und Ziel-Port sind. Dies führt bei manchen Systemen zu einem Absturz. In [CA-97.28] ist dieser Angriff genauer beschrieben.
Es gibt zwei unterschiedliche Formen dieser Attacke:
Ziel dieser Attacke ist es, durch geschickte Fragmentierung von IP-Pakten Filterregeln eines Paketfilters zu umgehen. Dieser Angriff ist in [RFC-1858] detailiert beschrieben. Dabei versucht der Angreifer, seine Nutzdaten (z.B. TCP-Pakete) in so kleine Fragmente zu zerlegen, daß ein statischer Paketfilter seine Regeln bezüglich des TCP-Headers nicht mehr anwenden kann. Paketfilter, die nur das erste Fragment untersuchen, könnten Beispielsweise dadurch ausgetrickst werden, daß man im ersten Fragment nur einen Teil des TCP-Headers ablegt, z.B. nur den Source Port, Destination Port und die Sequence Number. Im zweiten Fragment werden die restlichen TCP-Header Informationen (ACK-Bit, Flags usw.) abgelegt. Kann das erste Fragment den Filter passieren, so könnte ein Angreifer eine eingehende TCP-Verbindung z.B. TELNET durch den Filter schleusen 2.2, da die Information, ob es sich um das erste Paket (ACK-Bit nicht gesetzt) einer TCP-Verbindung handelt oder nicht, im zweiten Fragment enthalten ist, was aber von vielen Paketfiltersystemen nicht mehr geprüft wird.
Dieser Angriff ist auch unter dem Namen Teardrop bekannt und
in [CA-97.28] beschrieben.
Die zweite Variante macht sich eine Eigenart des derzeitigen
Reassemblierungsalgorithmus von IP zu nutze. Der Algorithmus läßt es zu, daß
neu eingetroffene Fragmente Teile von bereits empfangenen Fragmenten
überschreiben können.
Wie oben beschrieben, erhalten Fragmente zur Identifizierung ihrer Position im Datenstrom eine
Fragmentnummer (Offset). Diese setzt sich aus dem Offset des vorhergehenden Fragments plus dessen Größe
in Bytes zusammen. Das erste Fragment hat immer den Offset 0, das zweite 0 puls Größe des ersten, das dritte
Offset des zweiten plus Größe des zweiten Fragment usw.
Dadurch ist es einem Angreifer möglich, eine Folge von Paketen zu erzeugen, in denen das erste Fragment
harmlose TCP-Header-Informationen enthält, die ein Paketfilter durchläßt.
Ein zweites Fragment mit einem Offset größer als Null könnte nun andere
TCP-Header-Informationen enthalten. Wird der Offset des zweiten Fragmentes nun kleiner gewählt als
die Größes des ersten Fragmentes, so können die TCP-Header-Informationen des ersten Fragmentes durch die
des zweiten überschrieben werden.
Dieser Angriff wird ebenfalls in [RFC-1858] genau beschrieben.
Durch die Fragmentierung von IP-Pakten geht nützliche Information, die für Filterentscheidungen notwendig ist, verloren, da nur das erste Fragment noch Portnummern besitzt. Dadurch könnte ein Angreifer, der einen Komplizen im zu schützenden Netz hat, Fragmente ohne Portnummern durch einen Paketfilter durchschleußen. Wird das erste Fragment nicht weitergeleitet, so ist das Paket unvollständig, und die restlichen Fragmente werden dann normalerweise verworfen. Doch der Komplize könnte die Fragmente zusammensetzen. Analog könnte auch aus dem zu schützenden Bereich heraus eine Verbindung nach außen aufgebaut werden.