[Tutorial] Um pouco sobre traceroute
2 participantes
Página 1 de 1
[Tutorial] Um pouco sobre traceroute
Bom esses dias eu estava com duvida! Ah mais pra que esse traceroute ? o.o
Andei pesquisando achei este texto muito bom.
Espero que todos leiam.
traceroute Um dos campos do cabeçalho IP é chamado TTL - Time to Live - e determina por quantas passagens em roteadores este pacote pode sobreviver. A cada passagem em um roteador ou host
este campo é decrementado de 1. Este mecanismo é utilizado para evitar
que pacotes percorram a rede eternamente, rodando de um lado para outro.
Verifique acima que o nosso pacote de ICMP Echo Request possui
um TTL igual a 64. Se um pacote possui um TTL de 1 e este deve passar
por um roteador antes de alcançar o seu destino final, este roteador irá
descartá-lo ao verificar o TTL do pacote e retornar um pacote ICMP do
tipo ICMP Time Exceeded para o host que o enviou. Neste pacote de resposta o roteador se identifica como origem da mensagem Time Exceeded. É nessa característica do protocolo que o utilitário traceroute se baseia para traçar uma rota entre dois pontos da rede.
Suponha que o host 1 esteja separado do host 2 por dois roteadores, chamados router A e router B. A partir do host 1 é executado um traceroute para o host 2. O utilitário cria um pacote UDP destinado ao host 2, mas configura o seu TTL para 1. O router
A recebe este pacote e, apesar de saber para onde rotear o pacote, ao
decrementar o TTL este torna-se 0 (zero) o que siginifica que este
pacote deve ser descartado, retornando um ICMP Time Exceeded para o host 1. Quando o traceroute recebe esta resposta ele tem o endereço do primeiro roteador no caminho entre os dois hosts. O primeiro roteador é mostrado para o usuário.
Em seguida, o traceroute cria outro pacote UDP, com o TTL de 2. O pacote sobrevive ao primeiro roteador mas é descartado no segundo. Quando recebe o ICMP Time Exceeded do segundo roteador temos o endereço dele, que também é mostrado na saída do traceroute. O passo seguinte é um pacote com TTL de 3 o qual alcança o host 2. Os pacotes UDP são sempre enviados com uma porta de destino inválida, o que força que o host 2, ao receber o pacote, retorne um pacote ICMP Destination Unreachable. O traceroute sabe então que o caminho completo foi descoberto e mostra ao usuário o endereço do host 2, indicando que o trace foi finalizado.
Como ilustração, executei um traceroute do IP 192.168.1.2 (host virtual A) para o IP 192.168.0.1 (host C). Como roteador entre essas duas máquinas está um Linux (host
B) com os IP 192.168.1.1 e 192.168.0.2. Portanto, o caminho do pacote
deve ser A <-> B <-> C. O comando foi executado a partir de
A:
[root@malkovich root]# traceroute -q 1 192.168.0.1
traceroute to 192.168.0.1 (192.168.0.1), 30 hops max, 38 byte packets
1 192.168.1.1 (192.168.1.1) 8.243 ms
2 192.168.0.1 (192.168.0.1) 12.298 ms
3 192.168.0.1 (192.168.0.1) 21.193 ms
A opção -q 1 é para que o traceroute envie apenas um pacote a cada interação, o default são 3. A opção -I também poderia ser usada para instruir que sejam usados pacotes ICMP Echo Request e não pacotes UDP.
A sequência de troca de pacotes é a seguinte:
Seq Source --> Destination Protocol Description
1 192.168.1.2 --> 192.168.0.1 UDP Source Port: 33406 Destination Port: 33435 (TTL=1)
2 192.168.1.1 --> 192.168.1.2 ICMP Time-to-live exceeded
3 192.168.1.2 --> 192.168.0.1 UDP Source Port: 33406 Destination Port: 33436 (TTL=2)
4 192.168.0.1 --> 192.168.1.2 ICMP Time-to-live exceeded
5 192.168.0.1 --> 192.168.1.2 ICMP Destination unreachable
6 192.168.1.2 --> 192.168.0.1 UDP Source Port: 33406 Destination Port: 33437 (TTL=3)
7 192.168.0.1 --> 192.168.1.2 ICMP Destination unreachable
É mostrado abaixo o primeiro pacote enviado pelo host A e descartado pelo roteador B.
Internet Protocol, Src Addr: 192.168.1.2 (192.168.1.2), Dst Addr: 192.168.0.1 (192.168.0.1)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
Total Length: 38
Identification: 0x827f (33407)
Flags: 0x00
Fragment offset: 0
Time to live: 1
Protocol: UDP (0x11)
Header checksum: 0xb4f4 (correct)
Source: 192.168.1.2 (192.168.1.2)
Destination: 192.168.0.1 (192.168.0.1)
User Datagram Protocol, Src Port: 33406 (33406), Dst Port: 33435 (33435)
Source port: 33406 (33406)
Destination port: 33435 (33435)
Length: 18
Checksum: 0xa29f (correct)
Data (10 bytes)
Note o TTL 1 e a porta de destino. A esse pacote o roteador B responde:
Internet Protocol, Src Addr: 192.168.1.1 (192.168.1.1), Dst Addr: 192.168.1.2 (192.168.1.2)
Internet Control Message Protocol
Type: 11 (Time-to-live exceeded)
Code: 0 (Time to live exceeded in transit)
Checksum: 0x7777 (correct)
Internet Protocol, Src Addr: 192.168.1.2 (192.168.1.2), Dst Addr: 192.168.0.1 (192.168.0.1)
User Datagram Protocol, Src Port: 33406 (33406), Dst Port: 33435 (33435)
Data (10 bytes)
Podemos confirmar o ICMP Time Exceeded aqui. Após a interação seguinte, o pacote chega ao destino. Como é uma porta inválida, o host 192.168.0.1 responde com um ICMP Destination Unreachable:
Internet Protocol, Src Addr: 192.168.0.1 (192.168.0.1), Dst Addr: 192.168.1.2 (192.168.1.2)
Internet Control Message Protocol
Type: 3 (Destination unreachable)
Code: 3 (Port unreachable)
Checksum: 0x48b6 (correct)
Internet Protocol, Src Addr: 192.168.1.2 (192.168.1.2), Dst Addr: 192.168.0.1 (192.168.0.1)
User Datagram Protocol, Src Port: 33406 (33406), Dst Port: 33436 (33436)
Veja que já no passo 5 há uma resposta de ICMP Destination Unreachable, como resposta ao pacote do passo 3, com TTL igual a 2. Entretanto, mesmo assim o traceroute inicia outra interação, enviando um pacote com TTL igual a 3. Isso aconteceu porque antes do ICMP Destination Unreachable ele recebeu, no passo 4, um ICMP Time Exceeded, o que gerou o envio imediato do terceiro pacote UDP.
Andei pesquisando achei este texto muito bom.
Espero que todos leiam.
traceroute Um dos campos do cabeçalho IP é chamado TTL - Time to Live - e determina por quantas passagens em roteadores este pacote pode sobreviver. A cada passagem em um roteador ou host
este campo é decrementado de 1. Este mecanismo é utilizado para evitar
que pacotes percorram a rede eternamente, rodando de um lado para outro.
Verifique acima que o nosso pacote de ICMP Echo Request possui
um TTL igual a 64. Se um pacote possui um TTL de 1 e este deve passar
por um roteador antes de alcançar o seu destino final, este roteador irá
descartá-lo ao verificar o TTL do pacote e retornar um pacote ICMP do
tipo ICMP Time Exceeded para o host que o enviou. Neste pacote de resposta o roteador se identifica como origem da mensagem Time Exceeded. É nessa característica do protocolo que o utilitário traceroute se baseia para traçar uma rota entre dois pontos da rede.
Suponha que o host 1 esteja separado do host 2 por dois roteadores, chamados router A e router B. A partir do host 1 é executado um traceroute para o host 2. O utilitário cria um pacote UDP destinado ao host 2, mas configura o seu TTL para 1. O router
A recebe este pacote e, apesar de saber para onde rotear o pacote, ao
decrementar o TTL este torna-se 0 (zero) o que siginifica que este
pacote deve ser descartado, retornando um ICMP Time Exceeded para o host 1. Quando o traceroute recebe esta resposta ele tem o endereço do primeiro roteador no caminho entre os dois hosts. O primeiro roteador é mostrado para o usuário.
Em seguida, o traceroute cria outro pacote UDP, com o TTL de 2. O pacote sobrevive ao primeiro roteador mas é descartado no segundo. Quando recebe o ICMP Time Exceeded do segundo roteador temos o endereço dele, que também é mostrado na saída do traceroute. O passo seguinte é um pacote com TTL de 3 o qual alcança o host 2. Os pacotes UDP são sempre enviados com uma porta de destino inválida, o que força que o host 2, ao receber o pacote, retorne um pacote ICMP Destination Unreachable. O traceroute sabe então que o caminho completo foi descoberto e mostra ao usuário o endereço do host 2, indicando que o trace foi finalizado.
Como ilustração, executei um traceroute do IP 192.168.1.2 (host virtual A) para o IP 192.168.0.1 (host C). Como roteador entre essas duas máquinas está um Linux (host
B) com os IP 192.168.1.1 e 192.168.0.2. Portanto, o caminho do pacote
deve ser A <-> B <-> C. O comando foi executado a partir de
A:
[root@malkovich root]# traceroute -q 1 192.168.0.1
traceroute to 192.168.0.1 (192.168.0.1), 30 hops max, 38 byte packets
1 192.168.1.1 (192.168.1.1) 8.243 ms
2 192.168.0.1 (192.168.0.1) 12.298 ms
3 192.168.0.1 (192.168.0.1) 21.193 ms
A opção -q 1 é para que o traceroute envie apenas um pacote a cada interação, o default são 3. A opção -I também poderia ser usada para instruir que sejam usados pacotes ICMP Echo Request e não pacotes UDP.
A sequência de troca de pacotes é a seguinte:
Seq Source --> Destination Protocol Description
1 192.168.1.2 --> 192.168.0.1 UDP Source Port: 33406 Destination Port: 33435 (TTL=1)
2 192.168.1.1 --> 192.168.1.2 ICMP Time-to-live exceeded
3 192.168.1.2 --> 192.168.0.1 UDP Source Port: 33406 Destination Port: 33436 (TTL=2)
4 192.168.0.1 --> 192.168.1.2 ICMP Time-to-live exceeded
5 192.168.0.1 --> 192.168.1.2 ICMP Destination unreachable
6 192.168.1.2 --> 192.168.0.1 UDP Source Port: 33406 Destination Port: 33437 (TTL=3)
7 192.168.0.1 --> 192.168.1.2 ICMP Destination unreachable
É mostrado abaixo o primeiro pacote enviado pelo host A e descartado pelo roteador B.
Internet Protocol, Src Addr: 192.168.1.2 (192.168.1.2), Dst Addr: 192.168.0.1 (192.168.0.1)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
Total Length: 38
Identification: 0x827f (33407)
Flags: 0x00
Fragment offset: 0
Time to live: 1
Protocol: UDP (0x11)
Header checksum: 0xb4f4 (correct)
Source: 192.168.1.2 (192.168.1.2)
Destination: 192.168.0.1 (192.168.0.1)
User Datagram Protocol, Src Port: 33406 (33406), Dst Port: 33435 (33435)
Source port: 33406 (33406)
Destination port: 33435 (33435)
Length: 18
Checksum: 0xa29f (correct)
Data (10 bytes)
Note o TTL 1 e a porta de destino. A esse pacote o roteador B responde:
Internet Protocol, Src Addr: 192.168.1.1 (192.168.1.1), Dst Addr: 192.168.1.2 (192.168.1.2)
Internet Control Message Protocol
Type: 11 (Time-to-live exceeded)
Code: 0 (Time to live exceeded in transit)
Checksum: 0x7777 (correct)
Internet Protocol, Src Addr: 192.168.1.2 (192.168.1.2), Dst Addr: 192.168.0.1 (192.168.0.1)
User Datagram Protocol, Src Port: 33406 (33406), Dst Port: 33435 (33435)
Data (10 bytes)
Podemos confirmar o ICMP Time Exceeded aqui. Após a interação seguinte, o pacote chega ao destino. Como é uma porta inválida, o host 192.168.0.1 responde com um ICMP Destination Unreachable:
Internet Protocol, Src Addr: 192.168.0.1 (192.168.0.1), Dst Addr: 192.168.1.2 (192.168.1.2)
Internet Control Message Protocol
Type: 3 (Destination unreachable)
Code: 3 (Port unreachable)
Checksum: 0x48b6 (correct)
Internet Protocol, Src Addr: 192.168.1.2 (192.168.1.2), Dst Addr: 192.168.0.1 (192.168.0.1)
User Datagram Protocol, Src Port: 33406 (33406), Dst Port: 33436 (33436)
Veja que já no passo 5 há uma resposta de ICMP Destination Unreachable, como resposta ao pacote do passo 3, com TTL igual a 2. Entretanto, mesmo assim o traceroute inicia outra interação, enviando um pacote com TTL igual a 3. Isso aconteceu porque antes do ICMP Destination Unreachable ele recebeu, no passo 4, um ICMP Time Exceeded, o que gerou o envio imediato do terceiro pacote UDP.
Re: [Tutorial] Um pouco sobre traceroute
To usando isso num pentest que estou fazendo agora, valeu por compartilhar + pra ti . . .
Tópicos semelhantes
» [tutorial] basico em css
» [tutorial] namespace
» [tutorial] printf no php?
» [tutorial] cookie em php
» [tutorial] basico em xml
» [tutorial] namespace
» [tutorial] printf no php?
» [tutorial] cookie em php
» [tutorial] basico em xml
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos