Ao passar por cada roteador, o valor do Campo TTL deve ser decrementado até que se atinja um valor igual ou menor que zero, quando então será emitida uma mensagem ICMP Time Exceed de volta a origem e o pacote é descartado, isto garante que o mesmo não ficará dando voltas sem chegar a lugar algum.
Pois bem, há uma certa confusão com relação ao TTL que faz muita gente relaciona-lo com o numero de saltos, visto que, ao passar por cada gateway, ao menos um valor de TTL deve ser decrementado, ainda que o pacote não tenha ficado por lá por 1 segundo. Entretanto, o roteador pode decrementar mais de uma unidade TTL por segundo que este pacote tenha permanecido por lá. Assim, o TTL realmente expressa unidades de tempo e não de saltos.
Assim, como o TTL inicial pode ser qualquer um dos valores da tabela acima, e os pacotes de ECHO REQUEST e ECHO REPLY podem seguir caminhos diferentes, também não podemos usar o TTL para mensurar quantos saltos existem entre dois hosts quaisquer.
Vale lembrar que o TTL padrão dos Sistemas Operacionais é usado por ferramentas como o NMAP que procuram "adivinhar" o S.O. da vitima, talvez seja interessante mudar este valor default.
Utilitários como o Traceroute e o PathPing também utilizam o TTL para "Traçar" o caminho entre dois hosts.
Originalmente, eu me baseei numa discussão no GTER archives sobre uma questão de concurso público abordando TTL.Vale a pena conferir estas discussões nos links abaixo:
Referências:
http://eng.registro.br/pipermail/gter/2009-December/028568.html
http://www.binbert.com/blog/2009/12/default-time-to-live-ttl-values/
Galera,
ResponderExcluirPara alterar o valor de TTL do Linux, basta editar o arquivo /proc/sys/net/ipv4/ip_default_ttl.
Alterando o valor do TTL, significa que um atacante não conseguira facilmente descobrir qual é o sistema operacional utilizado.
Abraços,
Ops,
ResponderExcluirFaltou adicionar uma dica para ignorar as respostas ICMP Reply no Linux.
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
Valor igual a 0, permiti resposta
Valor igual a 1, ignora resposta
Abraços,
Grande Thiago !
ResponderExcluirPara alterar o valor de TTL no Windows, é necessário alterar o Registro
1) Abra o Editor de Registro --> Iniciar - Executar - Regedit - OK
2) Encontre a seguinte chave:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
3) Procure por um DWORD value chamado "DefaultTTL". Se ele não existir, deverá ser criado:
4) Editar - novo - valor DWORD
(defina o valor padrão do TTL em decimal ou hexa).
Abs,
Para alterar no Solaris:
ResponderExcluirSolaris 10/Intel x86
Configuring the Multicast Time-to-Live Property
The multicast time–to-live property (net.slp.multicastTTL) determines the range over which a multicast packet is propagated on your intranet. The multicast TTL is configured by setting the net.slp.multicastTTL property to an integer between 1 and 255. The default value of the multicast TTL is 255, which means, theoretically, that the packet routing is unrestricted. However, a TTL of 255 causes a multicast packet to penetrate the intranet to the border routers on the edge of your administrative domain. Correct configuration of multicast on border routers is required to prevent multicast packets from leaking into the Internet's multicast backbone, or to your ISP.
Changing ttl value to unsigned char in mnc_multicast.c fixes the issue
Referência
http://docs.sun.com/app/docs/doc/816-4555/slp.config-16?l=es&a=view&q=ttl