使用Wireshark了解ICMP协议指南

pip
5240pip安全工作者
2018-09-06 21:48:35
5240 2018-09-06 21:48:35
话题: 渗透 教程
来自维基百科
在   NTERNET Ç ONTROL 中号 essage P rotocol(ICMP)是在因特网协议组的支撑协议。网络设备(包括路由器)使用它来发送错误消息和操作信息,这些信息指示所请求的服务不可用或无法访问主机或路由器。
它是第3层,即ping命令用于通过ICMP有效载荷发送消息的网络层协议,ICMP有效载荷封装有IP Header数据包。根据MTU,ICMP包的大小不能大于1500字节。
网络层的ICMP数据包
[table][tr][td=1,1,145]IP标头[/td][td=1,1,144]ICMP标题[/td][td=1,1,190]ICMP有效负载大小[/td][td=1,1,160]  MTU(1500)[/td][/tr][tr][td=1,1,145]20个字节[/td][td=1,1,144]8个字节[/td][td=1,1,190]1472字节(最大)[/td][td=1,1,160]20 + 8 + 1472 = 1500[/td][/tr][/table]
数据链路层的ICMP数据包
以太网头IP标头ICMP标题ICMP有效负载大小  MTU(1514)
1420个字节8个字节1472字节(最大)14 + 20 + 8 + 1472 = 1514
使用Wireshark的ICMP消息代码和数据包描述
ICMP消息包含两种类型的代码,即查询和错误。
查询:查询消息是我们从路由器或其他目标主机获取的信息。
例如,下面给出的消息类型是一些ICMP查询代码:
  • 输入0 = Echo Reply
  • 类型8 =回应请求
  • 类型9 =路由器广告
  • 类型10 =路由器请求
  • 类型13 =时间戳请求
  • 类型14 =时间戳回复
ping命令向目标主机发送ICMP 回应请求。目标主机以echo Reply响应,这意味着目标主机处于活动状态。

在这里,我们将测试ping命令如何通过Ping主机IP来识别活动主机。
Ping 192.168.0.105
从下面的图片中你可以看到来自主机的回复; 现在注意以下几点:
  • 源计算机发送的有效负载的默认大小为32个字节(请求
  • 源计算机接收的相同大小的有效负载是来自目标计算机的32个字节(回复
  • TTL = 128表示主机是Windows系统。
  • 总包数为8,请求包4,回复4。

查看通过wireshark捕获的源和目标之间的数据包传输顺序。
捕获的数据包总数为8,请求数为4,源和目标计算机之间的回复数为4。
1个第一分组由源设备发送是ICMP回应请求,并且如果你看由下面给出的图像,你会看到突出显示的文本是显示ICMP查询代码:8型回波Ping请求。
框架长度现在为74,如下表所示:
以太网头IP标头ICMP标题ICMP有效负载大小  MTU(1514)
1420个字节8个字节32(默认)14 + 20 + 8 + 32 = 74

错误:错误语句消息报告路由器或目标主机可能生成的问题。
例如:给出以下消息类型是一些ICMP错误代码:
  • 类型3 =目标无法访问
  • Type 4 = Source Quench
  • 类型5 =重定向
  • 类型11 =超过时间
  • 类型12 =参数问题
当我们ping某个IP时,我们没有得到主机的回应ping回复,而不是我们得到一些回复,如目的地不可达超过时间,这称为ICMP错误报告消息。这种错误消息背后有很多原因,可能是网络中的主机关闭或防火墙阻止了您的ping请求。
ping -a 192.168.0.105
-a:将IP地址解析为主机名,标识在主机IP地址上执行反向名称解析。如果成功,则ping显示匹配的主机名。
应用UDP过滤器后,您可以读取wireshark捕获的主机名“WIN-1GKSSJ7D2AE”是工作组的一部分。
默认情况下,ping发送4个请求数据包,并从主机接收相同数量的数据包。您可以使用以下命令增加或减少此数据包数。
ping -n 2 192.168.0.105
-n:要发送的echo请求数
因为我们设置了-n作为2个请求包,因此我们得到了两个包作为回复。
类似地,我们还可以为回送请求包设置TTL(生存时间),默认情况下,从源计算机以每个包1毫秒的速率发送4个请求查询包。假设我们想要在两个数据包之间给出TTL,将-i设置为5ms,这样在第一个数据包发送后,第二个数据包将在5ms后发送。
Ping -i 5 192.168.0.105
-i TTL:生存时间
让我们通过wireshark验证从源发送到目的地的数据包的TTL。现在,如果您通过下面给出的图像观察,您会注意到每个回显ping请求数据包都有TTL 5,但每个回应回复都有默认的TTL值ie128。
通过Wireshark进行ICMP有效负载描述

正如我们上面讨论的那样,ICMP有效载荷的默认大小是32字节,最大值是1472,如果有效载荷数据包的大小大于1472,则数据包获取被分段为小数据包。
现在让我们使用wireshark检查信息有效载荷从源到目的地。从下面给出的图像中,您可以看到突出显示的文本是已用作32字节有效负载的字母表。
字母表是26个字母的组合,但在32个字节的有效载荷中,它们用作:
abcd - uvw23个字母只需9个字母需要更多来完成32个字节因此它再次包括9个字母更多,即abcdefghi
您可以使用以下命令重置有效负载的大小,该命令将从源到目的地传送回显请求。
ping -l 33 192.168.0.105
正如我们在上面看到的那样,32字节有效载荷以字母abcd-uvwabcd-hi的形式携带数据 因此,如果有效载荷的大小是33,那么数据应该从abcd-uvw开始,然后是abcd-hij。  字母“j”必须是数据包的最后一个有效载荷。
从给定的图像中,您可以确认Alphabet “j”是数据包的最后一个有效载荷。这样,增加有效载荷大小将在数据包中添加一个字母。
框架长度现已变为75,如下表所示:
以太网头IP标头ICMP标题ICMP有效负载大小  MTU(1514)
1420个字节8个字节33(默认)14 + 20 + 8 + 33 = 75


现在我们使用以下命令发送最大有效负载大小。
Ping -l 1472 192.168.0.105
根据MTU,如果有效载荷的大小设置为1472,那么帧大小将变为1514,如上所述,让我们从wireshark验证它。从下面给出的图像中,您可以读取帧长度为1514,突出显示的文本显示1472字节有效载荷的数据。
当有效载荷的大小大于1472或者太大而网络无法保持并到达路由器时,路由器会将其分解为较小的数据包(片段)。

ping -l 1473 192.168.0.105
从给定的图像中,您可以确认当有效负载超过1472个ICMP数据包时,它会根据下表进行分段:
以太网头IP标头ICMP标题ICMP有效负载大小  MTU(1514)
1420个字节8个字节147214 + 20 + 8 + 1472 = 1514
1420-135
在ping命令中使用-f选项将不允许网络中的数据包碎片。
ping -f -l 1472 192.168.0.105
-f:   在数据包中设置Do not Fragment标志
如果数据包大小1473设置为带有ping的(不)片段标志,则路由器将拒绝该数据包并显示ICMP消息,该数据包需要被分片,因为MTU大小限制为1500字节
IP标头ICMP标题ICMP有效负载大小  MTU(1500)
20个字节8个字节1473字节(无片段)超过1500字节   不可能

本文标题:使用Wireshark了解ICMP协议指南
本文作者:pip
本文来自:蚁安黑客官网
转载请注明本文链接:http://www.mayidui.net/t2277.html
游客
登录后才可以回帖,登录 或者 注册
weixin
蚁安蚂蚁堆

找工具、找教程、找朋友,你想不到的这儿都有!

微信号:baiyiwangan