Samstag, 4. Februar 2012 |
Ab dieser Folge geht es um das Netzwerkprotokoll TCP/IP und mögliche Angriffe darauf. Einige Grundlagen von TCP/IP wurden bereits in About Security #29 (TCP/IP-Schichtenmodell) und #30 (Pakete) erklärt, sodass sie hier nicht erneut beschrieben werden müssen.
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, dass verschiedene Arten von Angriffen möglich sind. Einige davon werden im Folgenden beschrieben. Mögliche Angriffe umfassen
N E U ! Security
aktuell
Täglich aktuelle Security-Infos!
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 näher betrachtet werden.
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 (s. About Security #29). 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 (s. About Security #30) 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 (s. About Security #29). 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 (s. About Security #30). 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.
Der TCP-Verbindungsaufbau ("three way handshake") läuft folgendermaßen ab:
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.
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 funktioniert, wird in der nächsten Folge beschrieben.
Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!
About Security – Übersicht zum aktuellen Thema "Angriffe auf TCP/IP"