IP başlığındaki TTL değeri bir paketin yaşam süresini belirler. Bir paket L3 routing işlemi yapan bir cihaza rastgeldiğinde TTL değeri bir düşürülür. Farklı sistemler farklı TTL değerlerine sahip olabilir. Mesela Linux sistemler paket oluştururken TTL değerini 64 yaparak gönderir, Microsoft Windows ise 128 değerini kullanır.
Penetrasyon testlerinde hedef sisteme yönelik keşif çalışmalarında TTL değeri önemli rol oynamaktadır. TCP/IP bilgisi iyi bir güvenlikci basit paketlerle hedef sistem önünde Firewall, IPS ve benzeri sistemler olup olmadığını TTL değerlerine bakarak anlayabilir.
Örnek çalışma: www.microsoft.com önünde Firewall vs benzeri cihaz var mı sorusunun cevabı?
Adım-1:Micorosft.com’a ait IP adreslerinden birisi hedef olarak seçilir.
root@seclabs:~# ping www.microsoft.com
PING lb1.www.ms.akadns.net (65.55.21.250) 56(84) bytes of data.
IP adresi belirlendikten sonra ilgili IP adresine bir adet SYN bayraklı TCP paketi gönderilir.
root@seclabs:~# hping -p 80 -S 65.55.21.250 -c 1
HPING 65.55.21.250 (eth0 65.55.21.250): S set, 40 headers + 0 data bytes
len=46 ip=65.55.21.250 ttl=48 id=6920 sport=80 flags=SA seq=0 win=512 rtt=152.0 ms
— 65.55.21.250 hping statistic —
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 152.0/152.0/152.0 ms
Adım-2:SYN bayraklı pakete microsoft.com’un döneceği cevap tcpdump(Wireshark) gibi bir snifferlar incelenerek TTL değeri kontrol edilir
root@seclabs:~# tcpdump -i eth0 -n -v host 65.55.21.250
13:56:51.597742 IP (tos 0×0, ttl 64, id 39942, offset 0, flags [none], proto TCP (6), length 40) 192.168.1.102.2738 > 65.55.21.250.80: S, cksum 0xa036 (correct), 85939190:85939190(0) win 512
13:56:51.748696 IP (tos 0×0, ttl 48, id 39942, offset 0, flags [none], proto TCP (6), length 44) 65.55.21.250.80 > 192.168.1.102.2738: S, cksum 0xab5a (incorrect (-> 0x3bb0), 2463779380:2463779380(0) ack 85939191 win 512
65.55.21.250 IP adresinden dönen cevaptaki TTL değerinin 48 olduğu gözükmektedir. İyi bir tahminle 65.55.21.250 IP adresinin TTL başlangıç değeri 64′dür.
Adım-3: Hedef sisteme anormal bir TCP paketi gönderip aradaki bir güvenlik cihazının vereceği RST cevabı içerisindeki TTL değerini kontrol edelim.
Bunun için hedef sisteme FIN bayraklı paketler gönderilir.
root@seclabs:~# hping -p 80 -F 65.55.21.250 -c 1
HPING 65.55.21.250 (eth0 65.55.21.250): F set, 40 headers + 0 data bytes
len=46 ip=65.55.21.250 ttl=239 DF id=23184 sport=80 flags=RA seq=0 win=8201 rtt=249.9 ms
— 65.55.21.250 hping statistic —
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 249.9/249.9/249.9 ms
Aynı anda tcpdump çıktısı incelenirse RA bayraklı paketleri gönderen sistemin TTL değerinin 239 olduğu görülecektir. Bu çıktı bize RA paketi gönderen sistemle SY paketi gönderen sistemlerin farklı olduğu konusunda fikir verecektir.
root@seclabs:~# tcpdump -i eth0 -n -v host 65.55.21.250
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:59:01.732292 IP (tos 0×0, ttl 64, id 20766, offset 0, flags [none], proto TCP (6), length 40) 192.168.1.102.1728 > 65.55.21.250.80: F, cksum 0x56b1 (correct), 1590874792:1590874792(0) win 512
13:59:01.981980 IP (tos 0×0, ttl 239, id 23184, offset 0, flags [DF], proto TCP (6), length 40) 65.55.21.250.80 > 192.168.1.102.1728: R, cksum 0x3dfc (correct), 0:0(0) ack 1590874793 win 8201
Bu yöntem hedef sistem önünde IPS var mı yok mu keşif çalışmalarında da kullanılabilir.