next up previous contents index
Nächste Seite: Schwachstellen im UDP-Protokoll - Aufwärts: Probleme und Gefahren durch Vorherige Seite: Schwachstellen des ICMP-Protokolls -   Inhalt   Index


Schwachstellen im TCP-Protokoll - Transmission Control Protokoll RFC 793

Das TCP-Protokoll ermöglicht gesicherte, zuverläßige Verbindungen. Das bedeutet, daß die Daten vollständig, korrekt und ohne Duplikate beim Zielrechner (genauer Anwendung) abgeliefert werden. TCP ist ein verbindungsorientiertes Protokoll und wird von den meisten Internetdiensten (z.B. Telnet,FTP,SMTP) benutzt.
Eine TCP-Verbindung läuft ähnlich wie ein Telefongespräch ab: Man wählt die Nummer, wartet bis die Verbindung zustande kommt und beginnt dann mit der ,,Datenübertragung``. Zwischen den Kommunikationspartnern besteht dann eine relativ zuverlässige Verbindung.

TCP-Nachrichten können durch folgende vier Parameter eindeutig identifiziert werden:


Tabelle 2.3: Parameter zur Identifikation einer TCP-Verbindung
Quell-IP-Adresse Quell-Portnummer
Ziel-IP-Adresse Ziel-Portnummer


Abbildung 2.6 zeigt den Auffbau von TCP-Pakten.

Abbildung 2.6: Aufbau des TCP-Headers
\includegraphics{/home/klaus/.html-data/graphiken/tcpHeader.eps}

Die Kommunikationsendpunkte werden durch Quellport und Zielport bestimmt. Es gibt sogennante ,,well known ports`` denen bestimmte Internetdienste zugeordnet sind, z.B. Port 80 für HTTP, Port 25 für SMTP.

Server-Prozesse, die einen Dienst über TCP anbieten, ,,lauschen`` auf bestimmten Portnummern, um eine Verbindung entgegenzunehmen. Dies wird als listen oder TCP-listen bezeichnet. Im Netzwerkcode von BSD-Unix wurden für Server-Prozesse Portnummern $<$ 1024 definiert. Dies sind privilegierte Nummern, die nur vom Superuseraccount (unter UNIX root) verwendet werden dürfen. Da die meisten Betriebssysteme ihren Netzwerkcode aus dem BSD-Code entwickelt haben, ist diese Übereinkunft weitverbreitet. In [FSI-96] ist der Grund dieser Definition beschrieben: ,,Fremde Systeme sollen der Authentizität von Informationen, die sie von diesen Ports erhalten, vertrauen können.`` Leider ist dies nur eine Konvention und nicht Teil der Protokollspezifikation. Die Folge ist, man darf privilegierten Portnummern nur trauen, wenn man sicher weiß, daß sich das Quellsystem an diese Übereinkunft hält und daß es korrekt administriert wird. Abbildung 2.7 zeigt den Ablauf einer TCP-Sitzung.

Abbildung 2.7: TCP-Sitzung, Quelle: [FSI-96]
\includegraphics{/home/klaus/.html-data/graphiken/tcpSetup.eps}

Nur das erste Paket einer TCP-Verbindung hat kein ACK-Bit gesetzt. Dadurch kann man einen TCP-Verbindungsaufbau erkennen und gegebenenfalls blockieren durch Abweisen des ersten Paketes. Ohne die Informationen des ersten Pakets können nachfolgende Pakete (mit gesetztem ACK-Bit) vom Empfänger nicht zusammengesetzt werden.
TCP verwendet Sequenznummern um die Reihenfolge der Pakte bestimmen zu können. ,,Da sich die Startlaufnummer für neue Verbindungen ständig ändert, ist es TCP möglich, alte Pakete aus vorangegangenen Inkarnationen derselben virtuellen Verbindung (also mit dem gleichen 4-Tupel, siehe Tabelle 2.3) zu erkennen.`` [FSI-96]

Folgende Angriffe können auf TCP verübt werden:


next up previous contents index
Nächste Seite: Schwachstellen im UDP-Protokoll - Aufwärts: Probleme und Gefahren durch Vorherige Seite: Schwachstellen des ICMP-Protokolls -   Inhalt   Index
Klaus Bauer 1999-10-20