一、路由追踪程序traceroute/tracert

Traceroute是Linux和Mac OS等系统默认提供的路由追踪小程序,Tracert是Windows系统默认提供的路由追踪小程序。二者的功能相同,都能探测数据包从源地址到目的地址经过的路由器的IP地址。Traceroute/Tracert的实现都借助了TTL:通过向目的地址发送一系列的探测包,设置探测包的TTL初始值分别为1,2,3…,根据返回的超时通知(ICMP Time Exceeded Message)得到源地址与目的地址之间的每一跳路由信息。虽然两者输出结果一致,但在实现原理上还有着显著的差别。

二、Traceroute实现原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3gHCLpzj-1576489100365)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

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实现原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eqzSUSqK-1576489100369)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

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

**(1)**Mac OS

traceroute www.baidu.com。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qqDOwRFz-1576489100370)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

如图,Traceroute能够显示到达目的地址所需的跳数、经过的路由器的IP地址、延时、丢包情况等信息。第一跳为10.203.4.225,第二跳为10.2.30.1,第三跳为10.2.1.1;每条记录输出3个延时结果,说明源地址每次默认发送三个数据包;在11条记录只有1个延时结果,说明源地址只收到了1个ICMP超时通知消息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zpiwkz1Q-1576489100371)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

如图,源地址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数据包递增的目标端口号来唯一识别返回的包。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eb6hGLmK-1576489100373)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

如图,第11跳的61.51.113.202路由只返回了一个ICMP超时通知,与终端显示的信息相符。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OEg3eaqp-1576489100375)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

如图,TTL=34时,ICMP数据包中Type=3(Destination unreachable),Code=3(Port unreachable),说明目的地址向源地址发送了端口不可达通知(ICMP Port Unreachable),表示数据包到达目的地址。

(2)Linux

traceroute www.baidu.com。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G6puo7i6-1576489100377)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VECBc8YA-1576489100378)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jLQ3rAUP-1576489100380)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

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

2.Windows——tracert

tracert www.baidu.com。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dC20kYf2-1576489100383)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

如图,第一跳为10.8.160.1,第二跳为10.0.14.1,第三跳为10.0.4.41;每条记录输出3个延时结果,说明源地址每次默认发送三个数据包;在第6条记录只有2个延时结果,说明源地址只收到了2个ICMP超时通知消息;数据包从源地址经过15跳之后到达目的地址。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pdI5Sg4e-1576489100385)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

如图,源地址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来唯一识别返回的包。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XkOWFGca-1576489100386)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

如图,seq=157的数据包没有得到路由器172.16.7.1的超时通知消息,因此第6跳只有两个延时结果,与终端显示的信息相符。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZZ0B49iN-1576489100387)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

如图,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的时候,返回了正常响应。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a0wh9ARh-1576489100389)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9cBFZOoE-1576489100391)(https://www.freebuf.com/buf/themes/freebuf/images/grey.gif)]

六、小结

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/

3.ICMP_抓包分析traceroute路由追踪相关推荐

  1. 思科抓包分析三层路由

    三层路由抓包分析 本次实验使用思科Packet Tracer自带抓包工具. 相关命令: arp -a 查看本机arp缓存表, arp -d 释放本机arp缓存表 show mac address-ta ...

  2. 网络安全学习第10篇 - ping程序的实现,抓包分析ping数据包以及ping工具对于网络安全方面的威胁

    请结合附件:Ping的实现原理与ping.cpp的内容,编写一个程序,使其能够实现简单的ping的功能,即判断目标网站是否可以连接,然后通过Wireshark进行抓包分析其ICMP协议,指出哪个数据包 ...

  3. Wireshark数据抓包分析——网络协议篇

    Wireshark数据抓包分析--网络协议篇 Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wiresh ...

  4. ICMP协议抓包分析-wireshark

    ICMP协议抓包分析-wireshark ICMP- (Internet Control Message Protocol,网际报文协议)是Internet协议族的核心协议之一,也可称为是网际控制报文 ...

  5. 计算机网络【wireshark抓包分析】

    一个完整的三次握手就是:请求(SYN) - 应答(SYN+ACK) - 再次确认(SYN).完成三次握手,客户端与服务器开始传送数据. 实验流程: 1.首先我们打开wireshark软件的主界面,在主 ...

  6. 第三十三期:使用wireshark抓包分析-抓包实用技巧

    杰哥很忙 7月9日 前言 本文整理一下日常抓包使用的一些方法及抓包分析的一些方法. 本文基于wireshark2.2.6版本进行抓包处理.其他版本使用方式大同小异. 自定义捕获条件 wireshark ...

  7. TCP/IP详解卷1 - wireshark抓包分析

    TCP/IP详解卷1 - 系列文 TCP/IP详解卷1 - 思维导图(1) TCP/IP详解卷1 - wireshark抓包分析 引言 在初学TCP/IP协议时,会觉得协议是一种很抽象的东西,通过wi ...

  8. Wireshark抓包分析DHCP

    1.DHCP简介 动态主机设置协议(英语:Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:用于内部网或网络 ...

  9. 华为——OSPF单区域实验配置,实验抓包分析,五种报文分析,六种LSA介绍,以及如何建立邻接关系的七种状态

    华为--OSPF单区域实验配置,实验抓包分析,五种报文分析,六种LSA介绍,以及如何建立邻接关系的七种状态 前言 一:OSPF简介 1.1:工作原理 1.1.1:架构介绍 1.1.2:信息传递 1.1 ...

最新文章

  1. phpstorm 快捷键
  2. 《云计算开放应用架构》标准发布,阿里云持续领航云原生
  3. 请不要更多的基本情节
  4. 零基础学python难_0基础学python有多难
  5. vant 动态 粘性布局_CSS Viewport 单位,很多人还不知道使用它来快速布局
  6. 跨境电商独立站建站优化清单
  7. 200行Python实现简单的区块链系统
  8. IT人 不要一辈子靠技术生存(转
  9. unable to remove repository reference  (must force) - container is using its referenced image
  10. 搜索引擎与信息处理 复习笔记
  11. pycharm 汉化包
  12. 图虫知识共享协议_100%避免图片版权侵权的方法(网站图片侵权赔款标准)
  13. 手游天龙八部服务器注册上限,腾讯手游助手注册已达上限怎么办 | 手游网游页游攻略大全...
  14. 填核酸采样资料,手机号填错了,身份证号码没错。
  15. 门户网站搜索引擎优化(SEO)解决方案
  16. torch.load()出现ModuleNotFoundError错误
  17. “~i“在C语言的for循环中是什么意思
  18. 1575万美元!2023科学突破奖揭晓,AlphaFold、量子计算等突破斩获殊荣
  19. Thinking in java 4th the pitfall of Generic
  20. python 编程控制键盘和鼠标

热门文章

  1. 用windows搭建ntp时间服务器(从上级获取时间,并为客户机提供时间)
  2. 美国贝勒大学计算机科学专业怎么样,美国贝勒大学好吗
  3. Redis 集群规范(中文稿)(MOVED错误码及ASK错误码
  4. 揭开木马的神秘面纱 2
  5. 腾讯大王卡、天王卡代申请
  6. 微信小程录制视频上传服务器,微信小程序-从相册获取图片,视频使用相机拍照,录像上传+服务器nodejs版接收-微信小程序视频上传功能-微信小程序视频上传...
  7. java 输出乘法口诀第一列_java输出乘法口诀表
  8. ocr人脸识别是什么原理,ocr的工作原理是什么
  9. Java基础知识(一),打好基础才能写出高质量代码
  10. 用纯css实现一个图片拼接九宫格