pingのTTLとtracerouteによるOSの推定

2022/07/20に公開

pingの結果とパケットが経由したノード数を使うと宛先のホストのOSを推定できます。

パケットを返すときのTTLの値はOSごとに初期設定値が存在しています。

OS TTLの初期値
Windows95,98 32
macOS, Linux 64
Windows10 128
Ciscoのルーター 255

pingの結果のTTLの値は、パケットが経由したノードの数の分だけ減ったものです。
したがって、tracerouteでネットワーク経路上のノードを数えて、その分の数字を足せば、ホストが返すTTLの初期値が得られます。

TTLの初期値 = pingのTTL + tracerouteの結果

たとえば、「www.nap-camp.com」の場合、

% ping www.nap-camp.com                                       
PING www.nap-camp.com (104.26.0.222): 56 data bytes
64 bytes from 104.26.0.222: icmp_seq=0 ttl=57 time=16.373 ms
64 bytes from 104.26.0.222: icmp_seq=1 ttl=57 time=32.292 ms

pingのTTLは57です。

% sudo traceroute -I www.nap-camp.com 2>/dev/null
 1  **********  17.560 ms  11.259 ms  14.197 ms
 2  **********  13.711 ms  14.105 ms  23.191 ms
 3  **********  16.914 ms  12.282 ms  13.168 ms
 4  **********  14.846 ms  15.329 ms  12.712 ms
 5  **********  14.334 ms  14.588 ms  13.955 ms
 6  **********  13.709 ms  26.728 ms  15.511 ms
 7  **********  16.672 ms  14.195 ms  14.341 ms
 8  **********  17.095 ms  13.413 ms  11.246 ms

tracerouteの結果は8ですが、最初に表示されるノードが送信元のホストなので8-1=7が結果になります。

pingの結果とtracerouteの結果を式に当てはめると57+7=64となり、
結果は64なので「おそらくLinuxを使っているのではないか?」と推測できます。

Discussion