[Strykar's lair logo]
Contents
Home
Strykar
Audio formats
Sendmail
Annoying spammers
Serial console
Apache mod_rewrite
Traceroute
DirectX 8
SMS web services
nVidia Geforce3
Slackware props
[Tor - Anonymity Network]
[Slackware Linux]
[OpenBSD journal]
[OpenBSD]

Search
Search hackerzlair.org

Supported Projects
Hungryhacker
Graz Univ. SHA-1
Tor
Slackware
Slackware wiki
OpenBSD
OpenBSD Journal
Chai Shop
Erowid
Strykar's lore
(last updated 22-09-2007)


  

Traceroute - A slick hack for intermediate router and path discovery.

Traceroute is a utility to track the path/route that packets take to a specified destination. No system knows the full path to its destination beforehand. It merely knows the path to its next hop or router and traceroute is a hack that uses this property of the Internet Protocol to determine routers in its path. TTL is a field in the header of every IP packet. When a packet is created by the host OS, it is typically assigned a TTL of 16, 30 or 255. Every router the packet passes along its journey to its destination decrements this value by 1. If the TTL field is reduced to 0, the router assumes the packet is in some sort of loop and it is encapsulated in an ICMP TTL exceeded message and sent back to the source address. A specially constructed packet, usually ICMP echo or UDP is sent with a remote destination address and a randomly selected port number that is also typically incremented with each traceroute packet. UNIX/Linux uses UDP while Microsoft Windows tracert uses ICMP. The TTL (Time To Live) field is very low on these packets; it starts at 1. This causes the packets to be rejected by routers as if they were looping. These rejections (ICMP TTL exceeded) messages help traceroute determine the intermediate routers. So the first router than comes across traceroute's special packet with a TTL of 1 will decrement it. Now the TTL is 0 and the router assumes the packet is in a loop and returns it with an ICMP TTL exceeded message telling traceroute the IP address of the first router. Traceroute now sends another packet with a TTL of 2. This packet makes it to the second router on the way before its TTL is decremented to 0 and traceroute deduces that the second TTL exceeded message is from the second router on the path to the destination. Traceroute now crafts packets with a TTL of 3 and 4 and so on to determine the path to the destination. Traceroute knows the path discovery is complete when it receives an ICMP echo reply or an ICMP destination unreachable message from the router. It will also display relevant ICMP host unreachable, network unreachable and any other ICMP messages received from the routers. Traceroute is designed to determine the network addresses that packets go through. Using it with NAT can create confusion. Running traceroute from a translated address should not cause an issue, but running traceroute to a translated address may cause unpredictable mapping or fail. If traceroute's packets can't reach the destination host or can't elicit a response from it; it will time out. Another non UDP/ICMP traceroute implementation is the utility tcptraceroute which can be used through restrictive firewalls that block UDP/ICMP. It crafts TCP packets with the SYN flag set and awaits a SYN/ACK. When a SYN/ACK is received, it indicates something is listening on this port for connections. Point it at ports which are typically open like HTTP or SMTP. When it receives a response, tcptraceroute sends a packet with an RST flag to close the connection. This allows to probe for hosts behind a firewall that would drop UDP packets. This is exactly why ICMP TTL exceeded messages should not be allowed to leave a LAN segment behind a router for the Internet. Additional reading: Firewalk whitepaper

Last updated on Fri Dec 20 16:10:00 2007.
Send comments to webmaster at this domain

[Blue Ribbon Campaign] [powered by Slackware linux] [made in Textpad] [valid HTML 4.01]