Anwendungsprotokolle
  ICMP
 

ICMP - Internet Control Message Protocol

Das ICMP nutzt das Internet Protocol (IP) als wäre es selber in einer höheren Schicht als IP angesiedelt. Tatsächlich ist das ICMP aber ein wesentlicher Teil vom IP und muss von jedem IP-Modul eingebunden werden. Das ICMP wurde definiert, da das IP selber keine Funktion zur Status- oder Fehlerübermittlung vorsieht. Es ist eine eigenständiges Protokoll zur Übertragung von Statusinformationen und Fehlermeldungen von IP-, TCP- und UDP-Protokollen zwischen IP-Netzknoten. Besonders Gateways und Hosts benutzen ICMP, um Berichte über Probleme mit Datagrammen zur Originalquelle zurückzuschicken. Das ICMP ist zusammen mit IP im OSI-Schichtenmodell in der Vermittlungschicht (Schicht 3) angesiedelt.
 
Kein Rechner ist verpflichtet, ICMP-Nachrichten zu versenden, mit einer Ausnahme: Jeder Rechner muss auf ein Echo-Request immer mit einem Echo-Reply antworten (auch Ping und Pong genannt). Ein Sender, der ein Datagramm (Paket) per IP überträgt haben weder Anspruch darauf, dass das Paket ankommt, oder falls es ankommt, dass es auch korrekt übertragen wurde. Auch wird er nicht darüber informiert, wenn letzterer Fall eintritt und an diesem Punkt setzt ICMP an.
 
Das ICMP wurde im September 1981 im Request For Comments (RFC) Nummer 792 von der Network Working Group auf Basis des IPv4 beschrieben. Mit der Spezifizierung des Internet Protocol Version 6 (IPv6) wurde auch das ICMP für IPv6 (kurz ICMPv6) im RFC 1885 vom Dezember 1995 von der Network Working Group neu definiert. Für ICMPv4 wurden im Nachhinein noch diverse Erweiterungen definiert, die sich jedoch in den seltensten Fällen wirklich durchgesetzt haben.
 
Es erfolgt eine Aufteilung der Meldungen in 2 Klassen.
-         Fehlermeldungen wie „DEE nicht erreichbar“, Wegumleitung, Ressourcen nicht mehr nutzbar, Zeit abgelaufen
-         Parameterproblem und in Informationsmeldungen wie Zeitmessung, Adressmaske, Router-Findung und Echo, um feststellen zu können, ob ein Bestimmungsort erreichbar ist und antwortet
Deshalb ist die Übertragung über IP unsicher und fehlerhafte ICMP-Übertragungen lösen keine Fehlermeldungen aus. Die Hauptaufgabe von ICMP ist die Übertragung von Statusinformationen und Fehlermeldungen der Protokolle IP, TCP und UDP. Die ICMP-Meldungen werden zwischen Rechnern und aktivern Netzknoten, z.B. Routern, benutzt, um sich gegenseitig Probleme mit Datenpaketen mitzuteilen und dadurch wird auch die Übertragungsqualität verbessert.


Funktionsablauf beim ICMP-Protokolls
 
Aufbau des ICMP-Headers
  
Der Header ist ein integraler Bestandteil des IP-Protokolls. So ist der ICMP-Header eine Erweiterung des IP-Headers anzusehen. Daher setzt sich der ICMP-Header auch aus einem IP-Header mit nachfolgenden ICMP-Daten zusammen.
 
o       keine eigene Header-Struktur
o       es wird der Standard-IP-Header zur Übertragung von ICMP-Meldungen genutzt
o       IP-Header-Feld Type-of-Service wird auf den Wert "0000" gesetzt
o       IP-Header-Feld Protokoll wird auf den Wert "0001" (=ICMP) gesetzt
o       Daten-Bereich des IP-Headers wird zum ICMP-Bereich, in dem sich die Felder ICMP-Typ (Meldungstyp), ICMP-Code (Zusatzinformationen zur Behandlung der Nachricht), die ICMP-Check-Summe und der ICMP-Daten-Bereich befinden
o       ICMP-Daten-Bereich enthält den IP-Header und die ersten 64 Bit IP-Daten des IP-Paketes, dass die ICMP-Meldung ausgelöst hat
 
 
Nachrichtenformat


Aufbau des ICMP-Datenrahmens

Der Type of Service indiziert bei ICMP−Nachrichten eine ’Routine’−Nachricht ohne spezielle Anforderungen, weiterhin identifiziert protocol mit dem Wert 1 den Inhalt als ICMP−Paket. Die anderen Felder werden vom System wie bei jedem anderen IP−Paket ausgefüllt, bis auf den ICMP−Header, der bei ICMP type beginnt. Unter dem ICMP−Protokoll wurden 15 verschiedene Pakettypen festgelegt. Die wesentlichen Felder des ICMP−Headers sind das Typfeld (ICMP type) und das Codefeld (ICMP mode), beide jeweils 8 Bit lang, sie bestimmen gemeinsam die Funktionalität der einzelnen ICMP−Pakete. Die eigentlichen Informationen werden im Nachrichtenfeld (ICMP message specific data) eingetragen, dies kann dann auch noch einmal weitere Felder beinhalten.
 
Wichtigsten ICMP−Pakettypen
 
 
Typ
Code
Bedeutung
0
 
Echo Reply
3
 
Destination unreachable
3
0
net unreachable
3
1
host unreachable
3
2
protocol unreachable
3
3
port unreachable
3
4
fragmentation needed and DF set
3
5
Source route failed
4
0
Source Quench
5
 
Redirect Message
5
0
Redirect datagrams for the Network
5
1
Redirect datagrams for the Host
5
2
Redirect datagrams for the Type of Service and Network
5
3
Redirect datagrams for the Type of Service and Host
8
 
Echo Request
11
 
Time Exceeded
11
0
Time to live exceeded in transit
11
1
fragment reassembly time exceeded
12
 
Parameter Problem
12
0
pointer indicates the error
13
 
Timestamp Request
14
 
Timestamp Reply
15
 
Information Request
16
 
Information Reply
 
 
Empfängt ein Rechner also eine Nachricht mit Typ=3 und Code=2, so kann er bei Kenntnis von Type und Code recht genau bestimmen, was die Ursache des Fehlers ist…
o       in diesem Fall daß der Absender das vorher angesprochene Protokoll nicht kannte
Kennt er den Code nicht, so weiß er nur, dass der Absender aus irgendeinem Grund nicht erreichbar war. Wenn er auch den Typ nicht kennt, kann er mit der Nachricht natürlich gar nichts anfangen. Die oben aufgeführten Nummern sind allerdings wahrscheinlich allen Rechnern bekannt, aber bei den vielen Erweiterungen muss das nicht der Fall sein. Abhängig vom Typ (und manchmal auch Code) haben die Nachrichten noch entsprechende Informationen im Nachrichtentext. Bei Fehlermeldungen sind dies 32 Bit für weitere Felder und anschließend der IP−Header und die ersten 64 Bit des verursachenden Pakets, aber bei anderen Nachrichten kann man die Nachrichtentexte nur auswerten, wenn man den Typ (und den Code) kennt. Die Checksumme dient dazu die Korrektheit der Nachricht zu gewährleisten.
 

- Destination Unreachable 
- wird verschickt, wenn ein Paket nicht zugestellt werden kann, weil der Empfänger nicht erreichbar ist 
- die Ursachen können sehr vielfältig sein, z.B. daß der Empfänger nicht existiert, kein passendes Protokoll geladen ist oder das Routing nicht geklappt hat

 
Type
Code
Checksum
unused
 
 
 
Internet Header + 64bits of Original Datagram
 
- Packet Too Big
- wird versandt, wenn ein Paket nicht weitergeleitet werden konnte, weil sie zu lang war, aber nicht fragmentiert werden durfte 
- diese Nachricht ist Grundlage für PMTU−Discovery, ein Verfahren um automatisch die ideale MTU−Größe (Maximum Transfer Unit − Größe der einzelnen Paketfragmente) zu ermitteln
 
Type
Code
Checksum
unused
 
 
 
Internet Header + 64bits of Original Datagram
 
- Time Exceeded 
- befindet sich eine Nachricht so lange im Netz, daß die ’Time To Live’ abgelaufen ist, so wird eine ’Time Exceeded’−Nachricht verschickt 
- eine andere Ursache ist das Ausbleiben von Fragmenten einer Nachricht
 
Type
Code
Checksum
unused
 
 
 
Internet Header + 64bits of Original Datagram
 
- Parameter Problem 
- es ist ein Problem beim Auswerten der Nachricht aufgetreten, das auf fehlerhafte oder unbekannte Parameter zurückzuführen ist 
- der Pointer ist hierbei ein Zeiger auf die Position an der das Problem auftrat
 
Type
Code
Checksum
Pointer
unused
 
Internet Header + 64bits
 
 
of Original Datagram
 
 
 
- Source Quench 
- hat ein Rechner Probleme, die ankommenden Pakete rechtzeitig zu verarbeiten, so sendet er eine ’Source Quench’−Nachricht 
- diese veranlasst den Sender, die Rate seiner Pakete zu vermindern 
- dieses Verfahren ist jedoch angeblich viel zu ineffizient, so dass andere Methoden zur Staukontrolle und −vermeidung bevorzugt werden sollten
- da ein Router diese Nachricht auch schon bei hoher Auslastung verschicken kann, ohne dass das Paket verloren geht, kann nicht entschieden werden, ob es sich um einen wirklichen Fehler (Verlust des Paketes) oder nur um eine Information handelt
 
Type
Code
Checksum
unused
 
 
 
Internet Header + 64bits of Original Datagram
 
- Redirect 
- bemerkt ein Router, dass es für eine Nachricht einen besseren Weg gibt, als über diesen Router, so kann er eine Empfehlung verschicken, weitere Nachrichten zum gleichen Ziel, über die angegebene Gateway−Adresse zu routen 
- da das Paket nicht verloren geht, handelt es sich um eine reine Informationsnachricht
 
Type
Code
Checksum
Gateway Internet Address
 
Internet Header + 64bits of Original Datagram
 
- Echo Request / Reply 
- die wohl bekannteste Anwendung, die auf ICMP basiert ist ’ping’, ein Programm zum versenden von Diagnose−Nachrichten 
- hierbei wird von dem Programm ein Echo−Request ausgelöst und zum anderen Rechner geroutet
- dieser mussauf den Request mit einem Reply antworten 
- erhält der erste Rechner die Antwort, so erhält der Benutzer eine entsprechende Ausgabe (z.B. rechner2 is alive, ggf. mit Angabe einer Round Trip Time) 
- ein Echo Request ist die einzige ICMP−Nachricht, auf die jeder IP−fähige Rechner antworten muss
 
Type
Code
Checksum
Identifier
 
Sequenze Number
Data
 
 
 
 
- Timestamp Request / Reply 
- die ’Timestamp Request’− und ’Timestamp Reply’−Nachrichten ermöglichen die Zeitsynchronisation zweier Rechner 
- da jedoch weitere Protokolle wie NTP oder SNTP eingeführt wurden, ist dieser Nachrichtentyp überflüssig geworden
 
Type
Code
Checksum
Identifier
 
Sequenze Number
Originate Timestamp
 
 
Receive Timestamp
 
 
Transmit Timestamp
 
 
 
- Information Request / Reply 
- dieser Nachrichtentyp ermöglicht es einem Host, seine Netz−Adresse zu erfahren
 
Type
Code
Checksum
Identifier
 
Sequenze Number
 
 
 
Anwendung von ICMP
 
Die meisten Internet- und Netzwerk-Benutzer kommen mit ICMP selten direkt in Kontakt und so werden die meisten ICMP-Meldungen von Stationen im Netzwerk verursacht, die Probleme mit IP-Paketen der auslösenden Station mitteilen wollen. Jedes Betriebssystem mit TCP/IP hat Tools, die zur Netzwerkanalyse dienen
o       zwei bekannte Tools sind Ping und Trace Route
o       beides sind sehr einfache Programme, die zur Analyse von Netzwerk-Problemen gedacht sind und damit wesentlich zur Problemlösung beitragen können
Es gibt auch die Möglichkeit den Datenverkehr mit einem Netzwerkmonitor zu überwachen
o       auch dieser Monitor, meist eine Software, benutzt ICMP
 
 
Datenformate von ICMP
 
-         das Datenformat von ICMP kennt
o       den ICMP-Typ (8 Bit)
o       den ICMP-Code (8 Bit)
o       die ICMP-Prüfsumme (16 Bit)
o       die ICMP-Meldung (224 Bit)
Je nach Meldung werden weitere Datenfelder hinzugefügt.
 
 
Angriffe mit ICMP
 
Das ICMP kann auch missbraucht werden, indem künstlich falsch Fehlermeldungen versendet werden.

- Denial-of-Service Angriff
- 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
- zur Bestimmung sind 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
- in größeren Netzen sollte man die Häufigkeit der ICMP-Pakete überwachen
- bei DDoS-Attacken steigt die Zahl der ICMP-Pakete sprunghaft an, also erst ab einer gewissen Paketanzahl/-zeiteinheit blocken

- Ping-to-Death
- dieser Angriff führt ebenfalls zu Denial-of-Service oder noch schlimmer zu einem Systemabsturz, problematisch bei Windows 95 Systemen
- der Angreifer sendet 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

- Redirect
- 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

- ICMP-Dienste Echo und Echo Reply
- durch die ICMP-Dienste Echo und Echo Reply kann sich ein Angreifer nützliche Informationen über ein Netzwerk verschaffen

- dieses Wissen kann dann für weitere Angriffe verwendet werden
 
 
  Heute waren schon 1 Besucher (1 Hits) hier!  
 
Diese Webseite wurde kostenlos mit Homepage-Baukasten.de erstellt. Willst du auch eine eigene Webseite?
Gratis anmelden