路由追踪程序traceroutetracert分析与科普

路由追踪程序traceroutetracert分析与科普
⼀、路由追踪程序traceroute/tracert
Traceroute是Linux和Mac OS等系统默认提供的路由追踪⼩程序,Tracert是Windows系统默认提供的路由追踪⼩程序。⼆者的功能相同,都能探测数据包地址到⽬的地址经过的路由器的IP地址。Traceroute/Tracert的实现都借助了TTL:通过向⽬的地址发送⼀系列的探测包,设置探测包的TTL 初始值分别为1,2,3…,根据返回的超时通知(ICMP Time Exceeded Message)得到源地址与⽬的地址之间的每⼀跳路由信息。虽然两者输出结果⼀致,但在实现原理上还有着显著的差别。
⼆、Traceroute实现原理
1. 从源地址发出⼀个UDP探测包到⽬的地址,并将TTL设置为1;
2. 到达路由器时,将TTL减1;
3. 当TTL变为0时,包被丢弃,路由器向源地址发回⼀个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
4. 当源地址收到该ICMP包时,显⽰这⼀跳路由信息;
5. 重复1~5,并每次设置TTL加1;
6. 直⾄⽬标地址收到探测数据包,并返回端⼝不可达通知(ICMP Port Unreachable);
7. 当源地址收到ICMP Port Unreachable包时停⽌traceroute。
注:七个人2011
1. Linux和Mac OS等系统使⽤UDP包进⾏探测,⽬标端⼝号默认为33434,每次探测⽬标端⼝号加1。Traceroute故意使⽤了⼀个⼤于
30000 的⽬标端⼝号,以保证⽬标地址收到数据包后能够返回⼀个“端⼝不可达”的 ICMP 报⽂,于是源地址就可将端⼝不可达报⽂当作跟踪结束的标志。
2.Traceroute每跳默认发送3个探测包(发包的数量可通过-q进⾏设置),探测包的返回会受到⽹络情况的影响。如果防⽕墙封掉了ICMP
的返回信息,那么相应的延时位置会以*显⽰。如果某台⽹关阻塞或者某台DNS出现问题,那么相应⾏的延时会变长。可以加-n 参数来避免DNS解析,以IP格式输出数据。
3.每个探测包都有唯⼀的标识号,使得Traceroute能够识别返回的包。UDP数据包使⽤递增的⽬标端⼝号进⾏标识。
三、Tracert实现原理
上海家校互动平台
1. 从源地址发出⼀个ICMP请求回显(ICMP Echo Request)数据包到⽬的地址,并将TTL设置为1;
玛格丽特阿特伍德
2. 到达路由器时,将TTL减1;
3. 当TTL变为0时,包被丢弃,路由器向源地址发回⼀个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
4. 当源地址收到该ICMP包时,显⽰这⼀跳路由信息;
5. 重复1~5,并每次设置TTL加1;
6. 直⾄⽬标地址收到探测数据包,并返回ICMP回应答复(ICMPEcho Reply);
货币基金组织7. 当源地址收到ICMP Echo Reply包时停⽌tracert。
注:
1.Windows系统使⽤ICMP请求回显(ICMP Echo Request)数据包进⾏探测,源地址以⽬的地址返回的ICMP回应答复(ICMP Echo
Reply)作为跟踪结束标志。
2.Traceroute每跳默认发送3个探测包。在未能到达路由器或未返回ICMP超时通知的情况下,相应的延时位置会以*显⽰。
3.每个探测包都有唯⼀的标识号,ICMP数据包使⽤seq进⾏标识。
四、Wireshark抓包解析
本次实验通过追踪本机到达所经过的路由信息,并使⽤Wireshark抓取数据包进⾏简要分析来验证traceroute和tracert的实现原理。
1.Linux/ Mac OS——traceroute
(1)Mac OS
traceroute 。
如图,Traceroute能够显⽰到达⽬的地址所需的跳数、经过的路由器的IP地址、延时、丢包情况等信息。第⼀跳为10.203.4.225,第⼆跳为10.2.30.1,
第三跳为10.2.1.1;每条记录输出3个延时结果,说明源地址每次默认发送三个数据包;在11条记录只有1个延时结果,说明源地址只收到了1个ICMP 超时通知消息。
如图,源地址10.203.4.244向⽬的地址119.75.218.70发送UDP数据包,每跳默认发送3个,TTL设置为1;数据包遇到路由器之后,被丢弃,返回Time tolive exceeded超时通知,解析出路由器IP地址10.203.4.225。源地址再发数据包,设置TTL=2,从⽽解析出第⼆跳路由10.2.30.1。同理,解析出第三跳路由10.2.1.1。与终端显⽰的信息相符。
从图中还可以看出,数据包⽬标端⼝号从33435开始并且每次加1,traceroute能够通过UDP数据包递增的⽬标端⼝号来唯⼀识别返回的包。绿壳蛋鸡养殖前景
如图,第11跳的61.51.113.202路由只返回了⼀个ICMP超时通知,与终端显⽰的信息相符。
如图,TTL=34时,ICMP数据包中Type=3(Destination unreachable),Code=3(Port unreachable),说明⽬的地址向源地址发送了端⼝不可达通知(ICMP Port Unreachable),表⽰数据包到达⽬的地址。
(2)Linux
traceroute 。
Linux系统下的抓包解析与Mac OS类似。
2. Windows——tracert
tracert 。
如图,第⼀跳为10.8.160.1,第⼆跳为10.0.14.1,第三跳为10.0.4.41;每条记录输出3个延时结果,说明源地址每次默认发送三个数据包;在第6条记录只有2个延时结果,说明源地址只收到了2个ICMP超时通知消息;数据包从源地址经过15跳之后到达⽬的地址。
企业公民理论如图,源地址10.8.169.32向⽬的地址220.181.111.188发送ICMP请求回显(ICMP Echo Request)数据包,每跳默认发送3个,TTL设置为1;数据包遇到路由器之后,被丢弃,返回Time tolive exceeded超时通知,解析出路由器IP地址10.8.160.1。源地址再发数据包,设置TTL=2,从⽽解析出第⼆跳路由10.0.14.1和10.0.14.5。同理,解析出第三跳路由10.0.4.41。与终端显⽰的信息相符。
从图中还可以看出,数据包从seq=142开始每次加1,tracert能够通过seq来唯⼀识别返回的包。
如图,seq=157的数据包没有得到路由器172.16.7.1的超时通知消息,因此第6跳只有两个延时结果,与终端显⽰的信息相符。
如图,TTL=15时,源地址收到了⽬的地址的ICMP回应答复(ICMP Echo Reply),说明源地址经过了15跳到达⽬的地址,与终端显⽰信息相符。五、The Great Cannon案例
2015年3⽉26⽇开始,因某些众所周知的原因,GitHub遭到其⽹站历史上最⼤规模DDoS攻击。瑞典⽹络安全公司Netresec通过查看数据包中的TTL值断定这是⼀起中间⼈攻击事件。在此过程中,他们借助了路由追踪程序traceroute/tracert的实现原理。⾸先建⽴⼀个正常的连接,确保数据包能够到达⽬标机器。然后依次发送TTL值为1,2,3…的HTTP请求。若数据包没有到达中间⼈设备,则不会出现HTTP响应;若数据包到达中间⼈设备,则会出现HTTP响应,然后只需在出现HTTP响应时,查看请求数据包设置初始TTL值即可。
安全⼈员根据下图发现中间⼈设备潜伏在11和12跳之间。Web请求中 TTL 值为11的时候数据包没有响应,⽽TTL值为12的时候,返回了正常响应。
六、⼩结
Traceroute/tracert路由追踪程序是⽤来追踪数据包到达⽹络主机所经过的路由信息的重要⼯具,虽然路由追踪效果⼀致,但实现原理略有不同:前者借助UDP协议,后者借助ICMP协议。此外,利⽤TTL追踪攻击主机的位置,也为我们提供了新的思路。

本文发布于:2024-09-22 03:36:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/530053.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据包   源地址   路由器   路由   地址   返回
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议