Skip to content

Angriffe auf TCP/IP (1) - Spoofing

Ab dieser Folge geht es um das Netzwerkprotokoll TCP/IP und mögliche Angriffe darauf. Das TCP/IP-Schichtenmodell und die verwendeten Pakete habe ich deshalb in der vorherigen Folge bereits erklärt.

Außer Schwachstellen in Implementierungen des TCP/IP-Stacks, z.B. Pufferüberläufen, die immer wieder einmal auftreten, gibt es einige Probleme in den Protokollen an sich. Die Ursache dafür ist, dass bei ihrem Entwurf einfach nicht an bösartige Netzteilnehmer gedacht wurde. Dies führt dazu, das verschiedene Arten von Angriffen möglich sind. Einige davon werden im Folgenden beschreiben. Die möglichen Angriffe umfassen

  • Spoofing, d.h. das Vortäuschen falscher Tatsachen
  • Hijacking, d.h. das Entführen bzw. Umleiten von TCP-Verbindungen
  • Denial of Service (DoS), d.h. die Verhinderung der Diensterbringung
  • Distributed Denial of Service (DDoS), d.h. ein DoS-Angriff, der von einer Vielzahl von Rechnern ausgeht

Spoofing

Beim Spoofing wird die Senderadresse eines Datenpakets gegen eine andere Adresse ausgetauscht. Dadurch bleibt der tatsächliche Sender unerkannt, eventuelle Antworten auf ein gespooftes Paket werden an die gefälschte Adresse gesendet. Die verschiedenen Techniken für einen Spoofing-Angriff sind vom angegriffenen Protokoll bzw. Dienst abhängig. Als Beispiel soll das Spoofing von IP-Paketen dienen.

IP-Spoofing

Das Spoofen von IP-Adressen alleine stellt noch keinen Angriff dar, sondern ist i.d.R. nur ein Teil eines Angriffs. Es kann z.B. verwendet werden, um den Verursacher eines DoS-Angriffs zu verbergen. Kombiniert mit dem Erraten gültiger Sequenznummern und einem DoS-Angriff kann es von einem Angreifer verwendet werden, um sich in eine auf Basis der IP-Adresse authentifizierte Verbindung einzuschleichen.

IP ist ein verbindungsloses Protokoll. Es wird weder geprüft, ob ein gesendetes Paket angekommen ist, noch, ob die Pakete in der gleichen Reihenfolge ankommen, in der sie gesendet wurden. Der Header eines IP-Pakets enthält u.a. Quell- und Zieladresse. Für die Zustellung des Pakets an den Empfänger ist nur die Zieladresse relevant. Daher kann der Sender die Quelladresse beliebig manipulieren, ohne die Zustellung zu gefährden.

Bei einer Authentifizierung auf Basis der IP-Adresse baut ein Rechner eine Verbindung zu einem anderen Rechner auf, der ihn anhand der IP-Adresse erkennt und den Zugriff ohne weitere Prüfung erlaubt. Dies ist z.B. beim "trust relationship" zwischen Unix-Rechnern der Fall. Ein Angreifer C kann sich in eine solche Verbindung zwischen zwei Rechnern A und B einschleichen, indem er Befehle mit der Quelladresse von A an Rechner B sendet.

Wäre nur das IP-Protokoll beteiligt, wäre der beschriebene Angriff nun schon erfolgreich. Allerdings ist ein weiteres Protokoll beteiligt: TCP. Im Gegensatz zu IP ist TCP verbindungsorientiert. Bevor zwei Systeme miteinander kommunizieren können, müssen sie eine Verbindung aufgebaut haben. Außerdem achtet TCP darauf, ob die übertragenen Daten fehlerfrei und in der richtigen Reihenfolge angekommen sind. Das Ankommen wird über eine Bestätigungsflag (ACK) signalisiert, die Reihenfolge über die 32 Bit lange Sequenznummer geprüft. Die Sequenznummer wird laufend erhöht, bei einem Überlauf wird wieder bei 0 begonnen. Möchte ein Angreifer sich in eine Verbindung einschleichen, muss er eine gültige Sequenznummer erraten. Da die von ihm an das Opfer gesendeten Pakete die Quelladresse von A enthalten, sendet B die Antworten auf die Pakete von C an A. Der Angriff muss also "blind" erfolgen.

TCP-Sequenznummern erraten

Der TCP-Verbindungsaufbau ("three way handshake") läuft folgendermaßen ab:

  1. Der Client sendet ein Paket mit gesetztem SYN-Flag und seiner aktuellen Sequenznummer SEQ_Client an den Server.
  2. Der Server antwortet mit einem Paket mit gesetztem SYN-Flag und seiner aktuellen Sequenznummer SEQ_Server sowie gesetztem ACK-Flag und der Quittungsnummer SEQ_Client+1.
  3. Der Client bestätigt mit einem Paket mit gesetztem ACK-Flag, der Quittungsnummer SEQ_Server+1 und der Sequenznummer SEQ_Client+1 und beginnt mit der Übertragung der Daten.

Um die Sequenznummern zu erraten, sendet der Angreifer einige Pakete mit seiner richtigen Quelladresse an das Opfer. Aus den Sequenznummern der Antwortpakete und deren zeitlichen Abständen kann auf den Algorithmus zur Berechnung der Sequenznummern geschlossen werden.

Ein Angriff

Der Angreifer C errät eine gültige Sequenznummer von B und baut eine Verbindung zu B auf, bei der er die Adresse von A als Quelladresse angibt. B sendet seine Antwort auf das Paket an A. Da A keine Verbindung zu B geöffnet hat, sendet A ein RST-Paket an B, worauf B die Verbindung abbricht.

Der Angriff funktioniert so also nicht. Bevor der Angreifer erfolgreich sein kann, muss er Rechner A ausschalten. Dazu kann er einen DoS-Angriff gegen A starten. Wie das passieren kann wird in der nächsten Folge beschrieben.

Carsten Eilers

>
        </div>
                
        <footer class= Kategorien: Grundlagen

Trackbacks

Dipl.-Inform. Carsten Eilers am : Angriffe auf TCP/IP (2) - DoS

Vorschau anzeigen
Für Denial-of-Service-Angriffe (DoS) auf TCP/IP können Schwächen in den Protokollen oder Implementierungsfehler in den Systemen ausgenutzt werden. Schwächen in den Protokollen SYN-Flooding Die einfachste Möglichkeit

Dipl.-Inform. Carsten Eilers am : Angriffe auf TCP/IP (3) - Hijacking

Vorschau anzeigen
Ein Spoofing-Angriff ist sehr viel erfolgreicher, wenn er mit einem DoS-Angriff kombiniert wird Um den im Text zum Spoofing beschriebenen Angriff zu vollenden, kann ein SYN-Flooding-Angriff zum Ausschalten des vertrauenswürdigen

Dipl.-Inform. Carsten Eilers am : Angriffe auf TCP/IP (13) - Schutzmaßnahmen

Vorschau anzeigen
Nach der Vorstellung der Angriffe auf und über TCP kommen wir nun zur Frage, wie man sich davor schützen kann. Los geht es mit dem Schutz vor (D)DoS-Angriffen Sich vor (D)DoS-Angriffen zu schützen ist extrem schwierig. Geht der