路由追踪traceroute分析

原文  : http://www.freebuf.com/articles/network/118221.html

一、路由追踪程序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。

注:

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抓包解析

本次实验通过追踪本机到达www.baidu.com所经过的路由信息,并使用Wireshark抓取数据包进行简要分析来验证traceroute和tracert的实现原理。

1.Linux/ Mac OS——traceroute

1Mac OS

traceroute www.baidu.com。

如图,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 www.baidu.com。

Linux系统下的抓包解析与Mac OS类似。

2. Windows——tracert

tracert www.baidu.com。

如图,第一跳为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追踪攻击主机的位置,也为我们提供了新的思路。

参考资料

[1] http://www.cnblogs.com/peida/archive/2013/03/07/2947326.html

[2] http://www.dearda.com/index.php/archives/1361

[3] https://translate.google.com/translatehl=zh-CN&sl=en&u=https://technet.microsoft.com/en-us/library/cc940128.aspx&prev=search

[4] http://www.freebuf.com/news/topnews/63148.html

[5]https://blog.gesha.net/archives/499/

*本文原创作者:ArkTeam/YSYY,转载须注明来自FreeBuf.COM

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/256636.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

路由跟踪(tracert、traceroute)简析

WINDOWS平台命令: tracert LINUX平台命令: traceroute 简介: Tracert(traceroute) 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。用来跟踪到目的IP所经过路径 原理简…

【Rust 日报】2023-05-28 一个构建在TCP上的聊天工具

tcp-chat:构建在TCP上的简单快速轻量的聊天工具 tcp-chat通过TCP进行通信,该项目的目的是了解并行性和底层网络通信。 前端工具:Solid、Tauri、Vite 后端工具:Rust、Tokio、Serde GitHub: https://github.com/gatomod/tcp-chat ez…

设计模式之~命令模式

定义: 命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 为什么需要命令模式? 在我们的软件开发系统中…

c++ 11标准模板(STL) std::map(九)

定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…

Linux常用命令——gzexe命令

在线Linux命令查询工具 gzexe 用来压缩可执行文件 补充说明 gzexe命令用来压缩可执行文件&#xff0c;压缩后的文件仍然为可执行文件&#xff0c;在执行时进行自动解压缩。当您去执行被压缩过的执行文件时&#xff0c;该文件会自动解压然后继续执行&#xff0c;和使用一般的…

设计模式之~组合模式

组合模式&#xff1a; 将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 结构图&#xff1a; 实例&#xff1a; 透明方式&#xff1a; leaf中也有add和remove叫做透明方式&#xff0c;在component中声明所有用来管…

玩具租借小程序

玩具是儿童的必需品&#xff0c;家长每年都会给孩子购买少则几百多则几千的玩具&#xff0c;但是由于孩子对玩具喜新 厌旧&#xff0c;一个几百元的玩具几天就不感兴趣了&#xff0c;而市场上层出不穷的高价玩具及孩子对玩具永不满足的渴求&#xff0c;都在促使家长对"玩具…

租号网程序源码 无错版本完整无缺

介绍&#xff1a; 注意事项&#xff1a; 安装租号程序 需要WIN08服务器 iis7.0 sq2012 NET4.6 程序直接放入设置好的 网站根目录即可 (SA密码设置yixiaoka888) 网盘下载地址&#xff1a; http://kekewl.cc/tJoeIk6qPlJ 图片&#xff1a;

在线游戏租号声优陪玩网站源码+威客平台源码/亲测

正文: 由于标题太长了&#xff0c;所以本文标题简略写了&#xff0c;下方图片才是程序完整标题: 这系统界面美观&#xff0c;功能非常齐全&#xff0c;已对接支付&#xff0c;亲测可用&#xff0c;有详细的安装教程&#xff0c;全部放压缩包里了&#xff0c;有兴趣自己去看。 …

麒麟子出了一款免费3D角色虚拟摇杆控制器!这也太好用了

不需要编写代码&#xff0c;通过简单的拖拽和配置&#xff0c;就可以使你在手机上控制摄像机旋转和操作角色。 EasyJoystick EasyCamera EasyTouch 以上效果就 麒麟子 最近在 Cocos Store 分享的 KylinsEasyController 组件源码&#xff0c;它包含以下主要特性&#xff1a; 虚拟…

租赁小程序源码芝麻免押租机平台手机租赁代运营

租赁小程序 手机租赁 小程序代运营 租赁 免押租 代运营 上征信 银行风控 芝麻免押 支付宝服务商 支付宝租赁服务商 租赁平台源码 租赁小程序源码 租机平台源码 手机租赁源码 租赁小程序源码 芝麻免押租 租赁平台 小程序源码

如何在雷电模拟器里使用YiLu代理的动态ip?

1在易路“程序”页面里随意添加一个应用&#xff0c;请不要添加“雷电”到YiLu程序里&#xff1b; 2.YiLu设置&#xff1a; ① 点击YiLu“设置”页面&#xff1b; ② 选择“YiLu便携代理引擎”&#xff1b; ③ 选择“仅代理YiLu程序选项卡中的应用程序&#xff0c;其他通过您…

原神抢码,米游社抢码-首发

本文章仅供学习使用-侵权请联系删除_2023年3月14日08:17:06 本来在深渊12层打不过的我偶然在刷到了一个dy的直播间&#xff0c;看到主播在抢码上号帮忙打深渊还号称痛苦号打不满不送原石的旗号我就决定扫码试试&#xff0c;在直播间内使用了两部手机互相扫码在扫了一下午的码后…

腾讯大王卡扫号器

正文开始》》花莳王卡扫号器不做任何收益动作&#xff0c;要过年了坑逼多。该信息可以让你自行辨别是否交智商费《正文结束 --------------------------------------------------------------------------------------------------------------------------------------------…

剖析CPU性能火焰图生成的内部原理

关注开发内功修炼&#xff0c;掌握硬核技术原理 大家好&#xff0c;我是飞哥&#xff01; 在进行CPU性能优化的时候&#xff0c;我们经常先需要分析出来我们的应用程序中的CPU资源在哪些函数中使用的比较多&#xff0c;这样才能高效地优化。一个非常好的分析工具就是《性能之巅…

上号神器|王者扫码登录教程,苹果安卓通用扫码教程(建议收藏)

大家好&#xff0c;我是上号神器&#xff0c;很多玩王者的小伙伴都不知道怎么通过扫码进行登录王者&#xff0c;下面就为大家说下上号神器的使用教程&#xff0c;不用卸载微信也能登录王者号&#xff0c;十分地方便快捷&#xff01; 首先玩家需要进入上号神器地址&#xff08;…

多家游戏交易平台发声,禁止未成年人买号租号

游戏租号绕开防沉迷系统事件迎来下文。9 月7 日&#xff0c;DD3737、交易猫、5173 等游戏交易平台相继发布声明&#xff0c;已采取严格措施禁止任何未成年人利用游戏交易平台买卖和租赁游戏账号。 同时&#xff0c;上述游戏交易平台还呼吁&#xff1a;游戏出版、发行、运营、交…

app账号退不出去_怎么去和平精英租号平台APP上租号玩和平精英

怎么去和平精英租号平台APP上GG租号租玩和平精英了&#xff1f;首选给大家讲解下和平精英租号平台App的一些功能介绍。 租号平台app可以让用户在这个平台上&#xff0c;拥有武器和皮肤的软件平台&#xff0c;用户有了这款软件后&#xff0c;就在也不用充钱来购买武器和装备&…

租号玩上号器显示服务器繁忙,租号玩出现错误1003是怎么回事?

2007-06-20 我还几天前把自己的帐号自己锁了然后我去登陆游戏社区但上面老显示验证码错误我就换个号上但无论我登陆什么号都上不了怎么办最后我新建一个号但建不了了验证码老错误可我明明输入对了啊大小写都试过不知道怎么回事我就等几天以为是系统问题可是还是不行老显示验证码…

Go开发学习 | 如何快速读取json/yaml/ini等格式的配置文件使用示例

欢迎关注「全栈工程师修炼指南」公众号 点击 &#x1f447; 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习&#xff01; “ 花开堪折直须折&#xff0c;莫待无花空折枝。 ” 作者主页&#xff1a;[ https://www.weiyigeek.top ] 博客&…