Bakalım ne oldu?
Konumuma en azından, ben her iki kendisine ulaşabilmesi için 8.8.8.8, iyi bir örnek yapar traceroute
ve ping
.
Öncelikle ping 8.8.8.8
ne olacağını görmeye çalışalım :
$ tcpdump -n host 8.8.8.8 or icmp
15:36:51.045994 IP 10.4.27.179 > 8.8.8.8: ICMP echo request, id 7215, seq 0, length 64
15:36:51.062458 IP 8.8.8.8 > 10.4.27.179: ICMP echo reply, id 7215, seq 0, length 64
15:36:52.048350 IP 10.4.27.179 > 8.8.8.8: ICMP echo request, id 7215, seq 1, length 64
15:36:52.073657 IP 8.8.8.8 > 10.4.27.179: ICMP echo reply, id 7215, seq 1, length 64
Bu yüzden ping
bir ICMP yankı isteği gönderir ve bir ICMP yankı yanıtı bekler.
Şimdi traceroute -n 8.8.8.8
:
15:41:31.803324 IP 10.4.27.179.44838 > 8.8.8.8.33435: UDP, length 24
15:41:31.815184 IP 10.250.32.2 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.815343 IP 10.4.27.179.44838 > 8.8.8.8.33436: UDP, length 24
15:41:31.819654 IP 10.250.32.2 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.819791 IP 10.4.27.179.44838 > 8.8.8.8.33437: UDP, length 24
15:41:31.824609 IP 10.250.32.2 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.824754 IP 10.4.27.179.44838 > 8.8.8.8.33438: UDP, length 24
15:41:31.830506 IP 64.124.23.161 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.830649 IP 10.4.27.179.44838 > 8.8.8.8.33439: UDP, length 24
15:41:31.834469 IP 64.124.23.161 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.834565 IP 10.4.27.179.44838 > 8.8.8.8.33440: UDP, length 24
15:41:31.840962 IP 64.124.23.161 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.841061 IP 10.4.27.179.44838 > 8.8.8.8.33441: UDP, length 24
15:41:31.847440 IP 64.125.26.21 > 10.4.27.179: ICMP time exceeded in-transit, length 148
15:41:31.847634 IP 10.4.27.179.44838 > 8.8.8.8.33442: UDP, length 24
15:41:31.853664 IP 64.125.26.21 > 10.4.27.179: ICMP time exceeded in-transit, length 148
15:41:31.853761 IP 10.4.27.179.44838 > 8.8.8.8.33443: UDP, length 24
15:41:31.859221 IP 64.125.26.21 > 10.4.27.179: ICMP time exceeded in-transit, length 148
15:41:31.859269 IP 10.4.27.179.44838 > 8.8.8.8.33444: UDP, length 24
15:41:31.864149 IP 64.125.31.15 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.864192 IP 10.4.27.179.44838 > 8.8.8.8.33445: UDP, length 24
15:41:31.870843 IP 64.125.31.15 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.870922 IP 10.4.27.179.44838 > 8.8.8.8.33446: UDP, length 24
15:41:31.876200 IP 64.125.31.15 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.876352 IP 10.4.27.179.44838 > 8.8.8.8.33447: UDP, length 24
15:41:31.882148 IP 64.125.13.111 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.882249 IP 10.4.27.179.44838 > 8.8.8.8.33448: UDP, length 24
15:41:31.890076 IP 64.125.13.111 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.890156 IP 10.4.27.179.44838 > 8.8.8.8.33449: UDP, length 24
15:41:31.896100 IP 64.125.13.111 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.896163 IP 10.4.27.179.44838 > 8.8.8.8.33450: UDP, length 24
15:41:31.905037 IP 108.170.242.225 > 10.4.27.179: ICMP time exceeded in-transit, length 60
15:41:31.905235 IP 10.4.27.179.44838 > 8.8.8.8.33451: UDP, length 24
15:41:31.913206 IP 108.170.242.225 > 10.4.27.179: ICMP time exceeded in-transit, length 60
15:41:31.913283 IP 10.4.27.179.44838 > 8.8.8.8.33452: UDP, length 24
15:41:31.923428 IP 108.170.242.241 > 10.4.27.179: ICMP time exceeded in-transit, length 76
15:41:31.923520 IP 10.4.27.179.44838 > 8.8.8.8.33453: UDP, length 24
15:41:31.932266 IP 108.170.237.9 > 10.4.27.179: ICMP time exceeded in-transit, length 60
15:41:31.932441 IP 10.4.27.179.44838 > 8.8.8.8.33454: UDP, length 24
15:41:31.939961 IP 209.85.251.9 > 10.4.27.179: ICMP time exceeded in-transit, length 76
15:41:31.940043 IP 10.4.27.179.44838 > 8.8.8.8.33455: UDP, length 24
15:41:31.947460 IP 108.170.237.21 > 10.4.27.179: ICMP time exceeded in-transit, length 60
15:41:31.947508 IP 10.4.27.179.44838 > 8.8.8.8.33456: UDP, length 24
15:41:31.954824 IP 8.8.8.8 > 10.4.27.179: ICMP 8.8.8.8 udp port 33456 unreachable, length 36
15:41:31.954888 IP 10.4.27.179.44838 > 8.8.8.8.33457: UDP, length 24
15:41:31.963601 IP 8.8.8.8 > 10.4.27.179: ICMP 8.8.8.8 udp port 33457 unreachable, length 36
15:41:31.963671 IP 10.4.27.179.44838 > 8.8.8.8.33458: UDP, length 24
15:41:31.972407 IP 8.8.8.8 > 10.4.27.179: ICMP 8.8.8.8 udp port 33458 unreachable, length 36
Dolayısıyla traceroute
, en azından kurduğum uygulama ICMP'yi göndermiyor. Aksine, UDP paketleri gönderir.
Ne (olurdu gerçi verseydim, bu iz görülebilir değilse tcpdump
bir -v
ayrıntı seviyesini artırmak için) ilk sondalar 1 değerindeki bir TTL olması ve daha sonra daha sonra sondalar için ttl artırır. Bu, ben ve 8.8.8.8 arasındaki yönlendiricilerin bir ICMP ttl hatasını aştırarak yanıtlamasına neden oldu;
Sonunda ttl, 8.8.8.8'e kadar tüm yollara yetecek kadar uzundur ve 8.8.8.8, ICMP portuna erişilemez bir hatayla yanıt verir, çünkü 44838 numaralı UDP portunda dinleme işlemi yoktur. Traceroute, nihai hedefe ulaştığını bilir. .
Burada ve burada bir şey tüm ICMP'yi engelliyorsa , ne ping ne de traceroute işe yaramaz.
Ancak, genellikle nadir de olsa, tüm ICMP’lerin engellenmesi söz konusu değildir. Tüm ICMP'lerin engellenmesi sorunludur: örneğin , bir ICMP parçalanması gereken hataya dayanan MTU keşfi yolunu keser . ICMP paketlerinin bir türü ve bir kodu vardır ve sorumlu şebeke operatörleri, kötüye kullanım potansiyeli oluşturan veya belirli bilgileri ifşa eden yalnızca bazı tür veya kodları seçerek engelleyecektir.
Örneğin, bazı ana bilgisayarlar bir ICMP yankı isteğine hiç yanıt vermez ve bu nedenle ping çalışmaz. Buradaki fikir, ping'lere cevap vermeyerek, saldırganın ağda hangi ana bilgisayarların bulunduğunu keşfetmesinin daha zor olduğudur. Uygulamada bu sorgulanabilir, çünkü bir konukçuyu araştırmanın başka yolları da var. Örneğin, bir web sunucusu bulmak için bağlantı noktası 80'e bir TCP SYN gönderilebilir.
Ayrıca çoğu ana bilgisayar, işlem dinlemeyen bir bağlantı noktasına bir UDP datagramı veya bir TCP SYN aldıklarında bir ICMP bağlantı noktasını erişilemez hatası göndermez ve bu işlem traceroute'u keser. Yine, fikir bir saldırganın ağı eşleştirmesini zorlaştırmaktır, ancak yine de bu saldırgan için küçük bir hayal kırıklığıdır.
Traceroute bir program olduğundan ve herhangi bir protokol olmadığı için başka problama yöntemleri de vardır. Hepsi yönlendiricileri keşfetmek için TTL'yi artırmaya güvenir, ancak uç noktadan bir yanıt ortaya çıkarmak için az çok şansı olabilecek farklı türde problar gönderilebilir. Örneğin benim man tcpdump
listelerine -I
seçenek ICMP'nin yankı sondalar, ping aynı kullanımı. Ayrıca -T
UDP yerine TCP SYN probları kullanmak zorundadır . Bir ev sahibi yanıt verecek biliyorsanız ping
o zaman -I
çok mantıklı. Ana bilgisayarın belirli bir TCP bağlantı noktasını dinlediğini biliyorsanız, o zaman -T
belki bağlantı -p
noktasını seçme seçeneğiyle birlikte mantıklı olur .
Ne yazık ki bu seçenekler kök veya özel yetenekler gerektirebilir, bu nedenle UDP adil bir varsayılan yapar. Aslında benzer bir araç, tracepath
man sayfasında şöyle söyler:
AÇIKLAMA
Bu yol boyunca MTU'yu keşfeden hedefe giden yolu izler. UDP port portunu veya bazı rasgele portları kullanır. Traceroute'a benzer, yalnızca süper kullanıcı ayrıcalıkları gerektirmez ve fantezi seçeneklerine sahip değildir.