I comandi tracert (di casa Microsoft) e traceroute (di casa *nix) vengono utilizzati per enumerare gli hop (dispositivi di rete di livello 3, solitamente router) che attraversa un pacchetto fino a giungere a destinazione.
Ad esempio, se volessi individuare il percorso intrapreso da un pacchetto verso una data destinazione, posso lanciare il comando:
C:\Users\eldo>tracert 4.2.2.2 Traccia instradamento verso b.resolvers.Level3.net [4.2.2.2] su un massimo di 30 punti di passaggio: 1 3 ms 1 ms 2 ms 192.168.*.* 2 * * * Richiesta scaduta. 3 14 ms 18 ms 17 ms 151.6.185.105 4 32 ms 33 ms 31 ms 151.6.5.15 5 124 ms 208 ms 218 ms 151.6.1.89 6 45 ms 45 ms 45 ms 151.6.0.174 7 117 ms 216 ms 51 ms 212.73.241.161 8 52 ms 53 ms 54 ms ae-14-14.ebr1.Frankfurt1.Level3.net [4.69.142.19] 4] 9 59 ms 54 ms 55 ms ae-61-61.csw1.Frankfurt1.Level3.net [4.69.140.2] 10 * * * Richiesta scaduta. 11 55 ms 54 ms 54 ms b.resolvers.Level3.net [4.2.2.2] Traccia completata.
Gli hop non identificati (quelli caratterizzati dall’errore Richiesta Scaduta), non consentono un deteterminato tipo di traffico, nella fattispecie quello ICMP.
Infatti, il comando tracert basa il suo funzionamento sul suddetto protocollo.
Discorso diverso riguarda, invece, il comando traceroute:
1 vodafone.station (10.*.*.*) 1.269 ms 1.247 ms 1.224 ms 2 * * * 3 * * * 4 83.224.40.185 (83.224.40.185) 76.238 ms 76.338 ms 77.658 ms 5 85.205.14.105 (85.205.14.105) 88.192 ms 81.755 ms 82.662 ms 6 212.73.241.21 (212.73.241.21) 120.408 ms 102.599 ms 102.517 ms 7 ae-0-11.bar2.Milan1.Level3.net (4.69.142.190) 72.483 ms 70.973 ms 69.436 ms 8 ae-14-14.ebr1.Frankfurt1.Level3.net (4.69.142.194) 77.455 ms 76.717 ms 76.729 ms 9 ae-61-61.csw1.Frankfurt1.Level3.net (4.69.140.2) 77.707 ms ae-71-71.csw2.Frankfurt1.Level3.net (4.69.140.6) 79.677 ms ae-61-61.csw1.Frankfurt1.Level3.net (4.69.140.2) 77.714 ms 10 * * * 11 b.resolvers.Level3.net (4.2.2.2) 76.517 ms 77.154 ms 76.688 ms
Esso, infatti, basa il proprio funzionamento sul protocollo UDP (porta compresa tra 33434 e 33454). Esiste comunque un’opzione per fare in modo che il suddetto comando utilizzi il protocollo ICMP, ovvero -I:
nightfly@nightbox:~$ sudo traceroute -I 4.2.2.2 traceroute to 4.2.2.2 (4.2.2.2), 30 hops max, 60 byte packets 1 vodafone.station (10.1.1.1) 6.259 ms 6.270 ms 6.272 ms 2 * * * 3 * * * 4 83.224.40.185 (83.224.40.185) 75.660 ms 76.495 ms 77.516 ms 5 85.205.14.105 (85.205.14.105) 84.951 ms 85.111 ms 85.128 ms 6 212.73.241.21 (212.73.241.21) 81.020 ms 68.027 ms 68.200 ms 7 ae-0-11.bar2.Milan1.Level3.net (4.69.142.190) 74.880 ms 68.066 ms 68.426 ms 8 ae-14-14.ebr1.Frankfurt1.Level3.net (4.69.142.194) 77.336 ms 76.738 ms 79.799 ms 9 ae-71-71.csw2.Frankfurt1.Level3.net (4.69.140.6) 78.400 ms 78.500 ms 90.106 ms 10 ae-2-70.edge5.Frankfurt1.Level3.net (4.69.154.73) 78.688 ms 76.939 ms 76.813 ms 11 b.resolvers.Level3.net (4.2.2.2) 76.679 ms 76.707 ms 76.957 ms
Come potete notare, in quest’ultimo caso il decimo hop ha risposto, proprio perchè su di esso è consentito il traffico ICMP e non quello UDP.
Traceroute come footprinting
Il comando traceroute può essere utilizzato con finalità di footprinting. Ad esempio, se un dato hop non risponde nè al protocollo ICMP nè a quello UDP su una porta alta (compresa nel range che ho riportato in precedenza), si può specificare una determinata porta di destinazione mediante la flag -p. Supponendo che sull’host sia attivo un demone DNS, il comando da utilizzare potrebbe essere il seguente:
nightfly@nightbox:~$ sudo traceroute -p 53 10.1.2.14
Alla prossima.