In dieser Folge wird das Beispiel aus About Security #57
zu Ende geführt und das Hijacking von TCP/IP-Verbindungen beschrieben.
Um den in About Security #57
beschriebenen Angriff zu vollenden, kann ein SYN-Flooding-Angriff (s.
About
Security
#58)
zum Ausschalten des vertrauenswürdigen Rechners A verwendet werden:
- Der Angreifer C errät eine gültige Sequenznummer des
Opfers B.
- Er macht den vertrauenswürdigen Rechner A mit einem
SYN-Flooding-Angriff handlungsunfähig.
- Er baut eine Verbindung zu B auf, bei der er die Adresse
von A als Quelladresse und die erratene Sequenznummer angibt.
- B sendet seine Antwort auf das gefälschte Paket an A, der
diesmal nicht antwortet.
- Der Angreifer C kann ungestört weitere Pakete an B senden,
der ihn aufgrund der Quelladresse für den vertrauenswürdigen Rechner A
hält.
Da B die Antworten weiter an A sendet, kann C eine mögliche
Änderung in den Sequenznummern von B nicht erkennen. Der Angriff muss
also möglichst schnell abgeschlossen werden. Meist wird sofort eine
Hintertür eingerichtet, über die dann ungestört weitere
Aktionen durchgeführt werden können.
TCP-Hijacking
Beim TCP-Hijacking (passender ist TCP-Connection-Hijacking)
schaltet sich
der Angreifer in eine bestehende Verbindung ein. Dazu belauscht er den
Datenverkehr und übernimmt in einem geeigneten Moment die Kontrolle
über eine ausgewählte Verbindung, indem er entsprechend
manipulierte TCP-Pakete an die Kommunikationspartner sendet. Ziel eines
solchen Angriffs ist z.B. die komplette Übernahme der Verbindung
einschließlich Abhängen eines der Kommunikationspartner, das
Einschleusen von Befehlen oder das Umgehen von Schutzmaßnahmen.
Vor dem Angriff: Sniffen
Voraussetzung für ein TCP-Hijacking ist das Belauschen (Sniffen) der
Pakete mindestens eines der Opfer. Beim Sniffen werden Pakete, die für
einen anderen Empfänger bestimmt sind, nicht wie vorgesehen verworfen,
sondern ausgewertet. Am einfachsten geht dies bei über einen Hub
verbundenen Rechnern. Da der Hub alle empfangenen Pakete an alle
angeschlossenen Rechner weiterleitet, kann ein Rechner, dessen
Netzwerkkarte
in den so genannten 'Promiscous-Mode' versetzt
wurde,
auch die nicht
für ihn bestimmten Pakete auswerten. Der Angreifer erfährt aus
diesen Paketen zum einen, wann eine für ihn interessante Verbindung
aufgebaut wird. Dies kann z.B. eine Telnet-Sitzung sein, in die er
eigene
Befehle einschleusen möchte. Zum anderen erfährt er die
Sequenznummern, die er zum Einschleusen seiner Pakete in die bestehende
Verbindung benötigt.
Es geht los: Verbindung stören, Pakete einschleusen
Der erste Schritt des Angriffs besteht darin, die Verbindung zu
desynchronisieren. Eine Desynchronisation liegt vor, wenn die
Sequenznummer
eines empfangenen Pakets nicht mit einer erwarteten Sequenznummer
übereinstimmt. Nach der Desynchronisation kommt es zu einem
'ACK-Storm': Die Kommunikationspartner erkennen
falsche
Sequenznummern, verwerfen die empfangenen Pakete und fordern mit
ACK-Paketen die 'richtigen' Pakete (d.h. die mit der erwarteten
Sequenznummer) an. Eine Kommunikation ist so natürlich nicht
möglich.
Der Angreifer kann den ACK-Storm begrenzen, indem er selbst die
falschen
Pakete bestätigt (acknowledget). Er kann auch als Vermittler arbeiten,
indem er die Pakete 'übersetzt' (also gültige Sequenznummern
einträgt) und ansonsten unverändert weiterleitet, oder aktiv in
die Kommunikation eingreifen und die Nutzdaten nach seinen Wünschen
manipulieren.
Der Angreifer wartet bis zum gewünschten Zeitpunkt, z.B. nach dem
erfolgreichen Telnet-Login, und startet dann den Angriff. Dazu stehen
ihm
mehrere Möglichkeiten zur Verfügung:
- Desynchronisation durch RST/SYN-Pakete
-
- Der Angreifer sendet ein RST-Paket ('Reset') mit der
Adresse des Clients als Quelladresse an den Server, gefolgt von einem
SYN-Paket mit neuer initialer Sequenznummer
- Der Server antwortet mit einem SYN/ACK-Paket mit
seiner neuen Sequenznummer
- Die Verbindung ist nun desynchronisiert und der
Angreifer kann seine Pakete einschleusen (s.o.).
- Desynchronisation durch Infiltration
- Der Angreifer sendet ein Datenpaket mit der Adresse des
Clients als Quelladresse und gültiger Sequenznummer an den Server, der
es normal verarbeitet (d.h. z.B. enthaltene Befehle ausführt). Danach
ist die Verbindung desynchronisiert, da das nächste Paket des Clients
mit der bereits 'verbrauchten' Sequenznummer versehen ist.
- Angriff ohne Rücksicht auf Verluste
("Take-No-Prisoners", "Simple Hijack")
- Ähnlich wie bei der Infiltration wird ein Paket mit
Anweisungen in die Verbindung eingeschleust, es gibt aber keinen
Tarnungsversuch. Diese Angriffe sind nur bei unaufmerksamen Opfern
erfolgreich, da sie durch die danach gestörte Verbindung und die
eingeschleusten Anweisungen auffallen.
Zur Tarnung kann an den Client eine fingierte Fehlermeldung des
angegriffenen Protokolls ('Session closed' o.ä.)
und/oder ein FIN- oder RST-Paket gesendet werden. Auch eine
Resynchronisierung der Verbindung kann den Angriff vertuschen.
- Übernahme während des Verbindungsaufbaus
("Early Desynchronization")
- Der Angreifer antwortet an Stelle des Clients auf ein
SYN/ACK-Paket mit einem RST- und einem SYN-Paket; das weitere Vorgehen
entspricht dem der Desynchronisation durch RST/SYN-Pakete.
In der nächsten
Folge
wird die Beschreibung des TCP-Hijackings fortgesetzt. Dann geht es u.a.
um
das ARP-Spoofing, durch das auch geswitchte Netzwerke belauscht werden
können.
Wenn
Sie Fragen oder Themenvorschläge haben, können Sie
diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum
einbringen!
Carsten
Eilers
About Security – Übersicht zum aktuellen Thema "Angriffe auf
TCP/IP"