Datum: 28. März 2009 Autor: Frank Dreßler, frank.dressler@rub.de Netzwerkanalyse: Anzahl der Router an der TTL empfangener Pakete erkennen ------------------------------------------------------------------------- Verschickt man Daten im Internet, packt man die Daten in ein IP-Fragment, das dann von Router zu Router gereicht wird. In den Kopfdaten eines IP-Fragmentes befindet sich ein 1 Byte großes Feld, das TTL (Time to Live) genannt wird und pro Router um 1 verringert wird. Ist die TTL auf 0 gefallen, so wird das Paket vom Router verworfen und nicht weitergeleitet. Zusätzlich informiert der Router, der das Paket verworfen hat, den Absender mit einer ICMP-Nachricht darüber, dass das Paket verworfen worden ist. Der Router, der also ein Paket mit einer TTL von 1 empfängt, verringert die TTL auf 0, erkennt dann, das es nicht an ihn gerichtet ist, soll es also weiterleiten, macht es aber nicht, da die TTL 0 ist, verwirft also das Paket. Der Sinn hinter der TTL ist, dass damit verhindert werden kann, dass ein Paket unendlich lange im Netz weitergereicht wird. Da die größtmögliche TTL 255 ist, kann ein Paket von höchstens 254 Routern weitergeleitet werden, denn bei einer TTL von 1 wäre nach dem ersten Router schluss, bei einer von 2 bekäme der erste Router ein IP-Paket mit TTL 2, würde sie verringern auf 1, sehen, dass 1 nicht 0 ist, es weiterleiten. Ist der Knoten, der das Paket dann erhält, nicht das Ziel, wird es wohl ein Router sein, der die TTL um 1 verringert, die damit zu 0 und daher vom Router verworfen wird. Wird ein Paket mit einer TTL x1 abgesendet und kommt es am Ziel mit einer TTL x2 an, ist x2-x1 die Anzahl der Router, die das Paket passiert hat, denn bei einer TTL von 2 könnten wir einen Router passieren, der die 2 zur 1 gemacht hätte, und das Paket käme mit einer TTL von 1 beim Ziel an, und 2-1 = 1 Router. Wir kennen die TTL, mit der eine Gegenstelle uns ein IP zuschickt leider nicht, können sie aber glücklicherweise oft gut raten, denn die üblichen TTL sind: 30, 32, 60, 64, 128, 200, 255. Meistens passiert ein IP-Paket nicht mehr als 15 Router. Erhalten wir also ein IP-Paket mit einer TTL von 248, kann der Absender die TTL nicht auf 30, 60, 64, 128 oder 200 gesetzt haben, sondern es wird wahr- scheinlich 255 gewesen sein. Dann können wir mit 255 - 248 = 7 die Anzahl der passierten Router ermitteln. Außerdem kann man über die Summe von wahrer Anzahl von Routern und der empfangen TTL die TTL ermitteln, mit der der Server das IP-Paket wahrscheinlich abgeschickt hat. Damit kann man die Anzahl der möglichen Betriebs- systeme des Servers einschränken (Verweis zu typischen Werten unten). Um dies zu überprüfen habe ich einige Server ge'ping't, da das ping- Programm die TTL er empfangenen IP-Fragmente mitteilt, und an- schließend mit tracert geschaut, ob die aus der TTL ermittelte Routeranzahl mit der wahren übereinstimmt. (ping) (tracert) Ziel | TTL empfangen | ursprüngliche TTL | TTL-Differenz | wahre Router- | Differenz zw. wahrer u. | wahrscheinliche Ursprungs-TTL | wahrscheinliches | | | geschätzt | (~ Router-Anzahl) | anzahl | vermuteter Routeranzahl | (= TT_empf + wahre Routeranzahl) | Betriebssystem | ==============+===============+===================+===================+================+=========================+==================================+==================+ www.google.de | 248 | 255 | 7 | 8 | 1 | 256 (unmöglich) | Linux & Co www.rub.de | 246 | 255 | 9 | 9 | 0 | 255 | Linux & Co www.giga.de | 57 | 64 | 7 | 7 | 0 | 64 | Linux & Co www.yahoo.de | 56 | 64 | 8 | 12 | 4 | 68 | Linux & Co www.zdnet.com | 246 | 255 | 9 | 11 | -2 | 257 (unmöglich) | Linux & Co www.www.com | 60 | 64 | 4 | 4 | 0 | 64 | Linux & Co kickme.to | 49 | 64 | 15 | 19 | 4 | 68 | Linux & Co ard.de | 117 | 128 | 11 | 10 | -1 | 127 | Windows zdf.de | 122 | 128 | 6 | 6 | 0 | 128 | Windows uni-due.de | 120 | 128 | 8 | 8 | 0 | 128 | Windows t-online.de | 248 | 255 | 7 | 4 | -3 | 252 | Linux & Co arcor.de | 247 | 255 | 8 | 8 | 0 | 255 | Linux & Co ntv.de | 54 | 64 | 10 | 10 | 0 | 64 | Linux & Co faz.net | 250 | 255 | 5 | 6 | 1 | 256 (unmgölich) | Linux & Co springer.de | 249 | 255 | 6 | 6 | 0 | 255 | Linux & Co mp3.de | 59 | 64 | 5 | 6 | 1 | 65 | Linux & Co Anhand der Tabelle ist gezeigt, dass es in guter Näherung möglich ist die Anzahl der Router anhand einer empfangenen TTL zu ermitteln. Die unmöglichen Ergebnisse sind interessant. Sowohl ping als auch tracert verwenden ICMP-Ping-Anfragen, um ihre Aufgabe zu erfüllen. Es ist also sehr unwahrscheinlich, dass sich die Route aufgrund von Paketunterschieden verändert hat. Vielleicht wurde die TTL nicht oft genug verringert oder der Antwortpfad ist ein anderer als der Empfangspfad, denn mit dem Traceroute ermitteln wir die Länge des Empfangspfades (aus Sicht des Ziels) und mit dem Ping die Länge des Antwortpfades. Aus welchen Gründen könnten beide unterscheidlich sein? Jedenfalls wird entweder die TTL nicht richtig verringert oder es befinden sich mehr Router auf dem einen Weg als auf dem anderen. Dies trifft natürlich allgemein zu, wenn die wahrscheinliche Ursprungs-TTL von der erwarteten TTL wenig abweicht. Falls die Abweichung einen zusätzlichen Router bedeutet, muss man sich fragen, was dieser Router für eine Aufgabe hat: Lastverteilung, Mitschnitt (für wen?, von wem?, wozu?), Kontrolle? Typische Anfangs-TTL-Werte von Betriebssystemen: http://members.cox.net/~ndav1/self_published/TTL_values.html