Das Internet Control Message Protokoll hat die Aufgabe, Status- und
Kontrollmeldungen für IP zu transportieren. ICMP benützt IP genauso
wie TCP und UDP, also so als ob es ein Protokoll der Transportschicht
wäre, aber in Wirklichkeit ist ICMP ein integraler Bestandteil von IP.
Jedes IP-Modul muß ICMP implementiert haben.
ICMP-Nachrichten werden in verschiedenen Situationen versendet:
Da das Internet-Protokoll nicht zuverlässig ist, wurde ICMP entwickelt, um
die beteiligten Rechner über mögliche Kommunikationsprobleme zu informieren.
Die Zuverläßigkeit von IP wird durch ICMP nicht beeinflußt. Für eine
verläßliche Datenübertragung sind die Protokolle der höheren Schicht (TCP)
selbst verantwortlich.
Abbildung 2.5 zeigt den Aufbau von ICMP-Nachrichten.
Alle ICMP-Meldungen beinhalten drei Felder:
Zusätzlich beinhalten ICMP-Meldungen den Internet-Header und die ersten 64 Bit des IP-Paketes, das die ICMP-Nachricht verursacht hat.
ICMP kann folgende Nachrichten erzeugen:
Diese Nachricht wird von einem Gateway oder dem Zielrechner verschickt, falls
das Gateway das angebebene Netz oder der Zielrechner ein Protokoll der
höheren Schicht oder einen Port nicht erreichen kann.
In Tabelle 2.1 sind die möglichen Werte des
Code-Feldes mit ihrer Bedeutung aufgelistet. Ein Gatway sendet Nachrichten
mit den Codes 0, 1, 4 oder 5; ein Host mit 2 oder 3.
Der ICMP-Nachrichtentyp ist dabei 3.
|
Diese Nachricht wird erzeugt, wenn das Time-to-Live-Feld in einem IP-Datagramm Null ist. Dabei hat das ICMP-Typ-Feld den Wert 11 und das Codefeld die Werte 0 oder 1. Null bedeutet Time-to-Live abgelaufen, eins bedeutet, daß die Reassemblierungszeit abgelaufen ist. Nachrichten mit Code 0 werden von Gateways erzeugt, mit Code 1 von Zielrechnern.
Wenn ein Rechner ein Problem mit dem IP-Header hat, und er deshalb das Datagramm nicht bearbeiten kann, wird diese Nachricht gesendet. Der ICMP-Typ dieser Meldung ist 12 und das Coldefeld hat den Wert 0.
Wenn ein Gatway nicht mehr genügend Pufferkapazitäten hat, um die
IP-Datagramme zwischen zu speichern, wird diese Nachricht an den Sender
übermittelt. Ein Zielrechner kann diese Nachricht ebenfalls erzeugen, wenn
die Datagramme so schnell hintereinander eintreffen, daß er sie nicht mehr
verarbeiten kann. Durch diese Nachricht wird der Sender aufgefordert, seine
Sendegeschwindigkeit zu verringern.
Hier ist der ICMP-Typ gleich 4 und der Codewert gleich 0.
Diese Nachricht erzeugt ein Gateway, wenn es feststellt, daß es einen besseren
Weg zum Zielrechner gibt. IP-Pakte, welche die Source-Routing-Option haben,
erzeugen keine Redirect-Meldungen auch wenn es einen besseren Weg geben
würde.
Nachrichten-Typ ist 5 und die Codewerte und ihre Bedeutung sind in
Tabelle 2.2 aufgeführt.
|
Mit dieser ICMP-Nachricht kann eine Netzwerkverbindung getestet werden. Man
kann zu jeder IP-Adresse eine echo-Nachricht senden und der Empfänger
muß den Inhalt dieser Nachricht dann in seiner echo-reply-Nachricht
zurückschicken. Dadurch wird festgestellt, ob ein bestimmter Rechner
(genauer eine bestimmte IP-Adresse) erreichbar ist oder nicht. Auf
Benutzerebene nutzt das Programm ping genau diesen ICMP-Dienst.
Damit ist es ein sehr nützliches Werkzeug um Netzwerkverbindungen zu
testen.
Das ICMP-Typfeld hat bei diesen Nachrichten den Wert 8 für echo-Meldungen
und 0 für echo-replay-Nachrichten. Das Codefeld hat den Wert 0.
Durch Versenden dieser Nachrichten können Hosts oder Gateways Verspätungen
im Datenverkehr erkennen.
Das Typfeld hat dabei den Wert 13 wenn eine Timestamp-Nachricht
verschickt wird und im Antwortpacket den Wert 14. Das Codefeld hat den
Wert 0.
Dieser ICMP-Dienst erlaubt es einem Host, die IP-Adresse des Netzes zu
bestimmen, mit dem er verbunden ist. Das RARP (Address Resolution
Protokoll) hat mittlerweile diese Aufgabe übernommen.
Der ICMP-Typ dieser Meldungen ist 15 bei Request-Nachrichten und 16 für
Reply. Das Codefeld hat den Wert 0.
Mit ICMP können folgende Angriffe durchgeführt werden:
Durch die ICMP-Nachrichten Time-Exceeded, Redirect und Destination
unreachable kann es zum Ausfall von Diensten auf der angegriffenen
Maschine kommen.
Viele ICMP-Nachrichten, die einen Host erreichen, sind nur für eine
bestimmte Verbindung relevant. Um diese Verbindung bestimmen zu können
sind in den ICMP-Nachrichten der IP-Header und die ersten 64 bit des
IP-Datagramms enthalten. Ältere ICMP-Implementierungen nutzen diese
zusätzlichen Information nicht, dadurch kann es zum Abbruch aller
bestehenden Verbindungen (auch legitimer) zwischen den beteiligten Hosts
kommen. Es gibt sogar eigene Programme, die mit Hilfe von ICMP-Nachrichten
Verbindungen kappen.
Dieser Angriff führt ebenfalls zu Denial-of-Service oder noch
schlimmer zu einem Systemabsturz.
Bei dieser Attacke sendet der Angreifer ICMP-Pakete mit einer
Nutzdatengröße von mindestens 65.510 Byte. Diese werden fragmentiert zum
Zielsystem übertragen und dort wieder zusammengesetzt. Inklusive des
ping-Headers ergibt das ein IP-Paket das größer ist als die maximal
zulässige Größe von 65.536 Byte. Bei IP-Implementierungen, die einen
solchen Overflow nicht abfangen, kommt es dann zum Systemabsturz.
Der Ping-to-Death Angriff ist in [CA-96.26] genau beschrieben.
Mit ICMP-Redirect-Meldungen kann ein Angreifer zutritt zum System erlangen. Durch Versenden von Redirect-Meldungen kann ein Angreifer den gesamten Datenverkehr eines Netzes über seinen Rechner laufen lassen. Gelingt dies, so ist es nicht weiter schwierig, die IP-Pakte nach Loginnamen und Passwörtern zu durchsuchen.
Durch die ICMP-Dienste Echo und Echo Reply kann sich ein Angreifer nützliche Informationen über ein Netzwerk verschaffen (z.B. Anzahl der Maschinen, welche IP-Adressen gibt es). Dieses Wissen kann dann für weitere Angriffe verwendet werden.