icmp报文格式_网络基础知识:ICMP协议之其他应用

一次性付费进群,长期免费索取教程,没有付费教程。

进微信群回复公众号:微信群;QQ群:460500587

 教程列表  见微信公众号底部菜单 |   本文底部有推荐书籍 

e63f3d4b151f0b894a1b415b070fd74c.png

微信公众号:计算机与网络安全

ID:Computer-network

1、发送ICMP时间戳请求

ICMP时间戳请求允许系统向另一个系统查询当前的时间,但不包含日期。返回的建议值是自午夜零点开始计算的时间(UTC)。ICMP时间戳请求与应答报文格式如图1所示。

3400809598c3d3451410ce34687490dd.png

图1  时间戳数据包报文格式

在发送ICMP时间戳请求时,请求端填写发起时间戳,然后发送报文。应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳。在请求和响应的交互过程中,当ICMP报文中的类型值为13、代码值为0时,数据包为ICMP时间戳请求数据包;当ICMP报文中的类型值为14,代码值为0时,数据包为ICMP时间戳应答数据包。netwox工具提供编号为81的模块,用于构建时间戳请求。

向目标主机192.168.59.135发送ICMP时间戳请求,探测数据包传输的时间。

1)发送ICMP时间戳请求,执行命令如下:

root@daxueba:~# netwox 81 -i 192.168.59.135

输出信息如下:

0 0

输出信息表示目标主机可达,如果目标主机不可达,将显示信息如下:

No answer.

2)可以通过Wireshark进行抓包,验证成功发送了时间戳请求,如图2所示。其中,第6个数据包为ICMP时间戳请求。在Internet Control Message Protocol部分中,Type值为13,Code值为0,表示该数据包为ICMP时间戳请求。Originate timestamp的值表示数据包发起的起始时间,这里为0秒(午夜0点0秒);Receive timestamp的值表示接收数据包的时间,这里为0秒;Transmit timestamp的值表示数据包的发送时间,这里为0秒。时间为0秒,是因为从午夜零点开始计算。

0d28099baa3f21f9f0d4c3670f7fc56b.png

图2  ICMP时间戳请求

3)选择对应的响应包查看信息,如图3所示。其中,第7个数据包为ICMP时间戳应答。在Internet Control Message Protocol部分中,Type值为14,Code值为0,表示该数据包为ICMP时间戳应答。Originate timestamp的值表示数据包发起的起始时间,这里为0秒(午夜零点后开始计算);Receive timestamp的值表示接收数据包的时间,这里为午夜零点后8小时44分24.379秒;Transmit timestamp的值表示数据包的发送时间,这里为31464379秒,时间为午夜零点后8小时44分24.379秒。

da1dc6edaded81182b3c59682d7c6dd0.png

图3  ICMP时间戳应答

2、伪造请求超时ICMP数据包

在网络传输IP数据报的过程中,如果IP数据包的TTL值逐渐递减为0时,需要丢弃数据报。这时,路由器需要向源发送方发送ICMP超时报文,表示传输过程中超时了。在超时ICMP数据包报文中,类型值为11,代码值为0。用户可以通过netwox工具中编号为83的模块伪造请求超时ICMP数据包。

已知主机A的IP地址为192.168.59.134,主机B的IP地址为192.168.59.135,在主机C上伪造请求超时ICMP数据包。

1)在主机A上ping主机B,执行命令如下:

root@daxueba:~# ping 192.168.59.135

输出信息如下:

PING 192.168.59.135 (192.168.59.135) 56(84) bytes of data.

64 bytes from 192.168.59.135: icmp_seq=1 ttl=64 time=0.447 ms

64 bytes from 192.168.59.135: icmp_seq=2 ttl=64 time=0.468 ms

64 bytes from 192.168.59.135: icmp_seq=3 ttl=64 time=0.773 ms

64 bytes from 192.168.59.135: icmp_seq=4 ttl=64 time=0.307 ms

上述输出信息表示主机B是可达的,并且给出了传输的时间。例如,time=0.447ms,表示时间需要0.447毫秒。

2)在主机C上伪造请求超时ICMP数据包,设置源IP地址为192.168.59.135,执行命令如下:

root@daxueba:~# netwox 83 -i 192.168.59.135

执行命令后没有任何输出信息,但是成功伪造了请求超时ICMP数据包。

3)再次在主机A上ping主机B,执行命令如下:

root@daxueba:~# ping 192.168.59.135

输出信息如下:

PING 192.168.59.135 (192.168.59.135) 56(84) bytes of data.

64 bytes from 192.168.59.135: icmp_seq=6 ttl=64 time=0.336 ms

From 192.168.59.135 icmp_seq=6 Time to live exceeded

64 bytes from 192.168.59.135: icmp_seq=7 ttl=64 time=0.532 ms

From 192.168.59.135 icmp_seq=7 Time to live exceeded

64 bytes from 192.168.59.135: icmp_seq=8 ttl=64 time=0.495 ms

From 192.168.59.135 icmp_seq=8 Time to live exceeded

从上述输出信息可以看到,主机A向主机192.168.59.135发送了ping请求。部分请求没有收到响应信息,而显示了Time to live exceeded信息,表示时间超时。

4)为了验证伪造的请求超时ICMP数据包,可以通过捕获数据包查看,如图4所示,捕获到了若干个ICMP超时数据包。其中,第3个数据包的源IP地址为192.168.59.134,目标IP地址为192.168.59.135,是主机A向主机B发送的ICMP请求包;第5个数据包源IP地址为192.168.59.135,目标IP地址为192.168.59.134,Info列显示的Time-to-live exceeded表示时间超时,说明该数据包为伪造的请求超时ICMP包。

b6f4ad46966762dde309f6871382a609.png

图4  捕获的ICMP包

5)选择第5个数据包,查看包信息,如图5所示。在该数据包的Internet Control Message Protocol部分中,Type值为11,Code值为0,说明该数据包是请求超时ICMP数据包。

195c970ce138403d47fb4c0772ac81f6.png

图5  请求超时ICMP数据包

3、伪造目标不可达

目标不可达包是指路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达的ICMP消息。在目标不可达报文中,类型值为3,代码值为1。伪造这类数据包需要使用netwox工具中编号为82的模块。

已知主机A的IP地址为192.168.59.134,主机B的IP地址为192.168.59.135,在主机C上伪造目标不可达ICMP数据包。

1)在主机C上伪造目标不可达ICMP数据包,设置源IP地址为192.168.59.135,执行命令如下:

root@daxueba:~# netwox 82 -i 192.168.59.135

执行命令后没有任何输出信息,说明成功伪造了目标主机不可达ICMP数据包。

2)在主机A上ping主机B,执行命令如下:

root@daxueba:~# ping 192.168.59.135

输出信息如下:

PING 192.168.59.135 (192.168.59.135) 56(84) bytes of data.

64 bytes from 192.168.59.135: icmp_seq=1 ttl=64 time=3.95 ms

From 192.168.59.135 icmp_seq=1 Destination Host Unreachable

64 bytes from 192.168.59.135: icmp_seq=2 ttl=64 time=0.608 ms

From 192.168.59.135 icmp_seq=2 Destination Host Unreachable

64 bytes from 192.168.59.135: icmp_seq=3 ttl=64 time=0.341 ms

From 192.168.59.135 icmp_seq=3 Destination Host Unreachable

64 bytes from 192.168.59.135: icmp_seq=4 ttl=64 time=0.499 ms

From 192.168.59.135 icmp_seq=4 Destination Host Unreachable

从上述输出信息可以看到,主机A向主机192.168.59.135发送了ping请求,但是部分请求没有得到响应信息,而显示了Destination Host Unreachable信息,表示目标主机不可达。

3)为了验证伪造的目标不可达ICMP数据包,可以使用Wireshark抓包查看,如图6所示,捕获到了若干个ICMP数据包。其中,第3个数据包的源IP地址为192.168.59.134,目标IP地址为192.168.59.135,是主机A向主机B发送的ICMP请求包;第5个数据包的源IP地址为192.168.59.135,目标IP地址为192.168.59.134,Info列显示的Destination unreachable(Host unreachable)表示目标主机不可达,说明该数据包为伪造的目标不可达ICMP数据包。

2077a27b73efe60198aeafcbe2dfd281.png

图6  捕获的ICMP数据包

4)选择第5个数据包,查看包信息,如图7所示。在该数据包的Internet Control Message Protocol部分中,Type值为3,Code值为1,说明该数据包是目标不可达ICMP数据包。

ad59acdcce16c4c0b99e8679b9197ad7.png

图7  伪造目标不可达ICMP数据包

4、伪造参数错误ICMP数据包

当路由器或主机处理数据报时,发现因为报文头的参数错误而不得不丢弃报文时,需要向源发送方发送参数错误报文。该报文中,类型值为12,代码值为0。伪造这类数据包需要使用netwox工具中编号为84的模块。

已知主机A的IP地址为192.168.59.134,主机B的IP地址为192.168.59.135,在主机C上伪造参数错误ICMP数据包。

1)在主机C上伪造参数错误ICMP数据包,设置源IP地址为192.168.59.135,执行命令如下:

root@daxueba:~# netwox 82 -i 192.168.59.135

执行命令后没有任何输出信息,但是会伪造参数错误ICMP数据包。

2)在主机A上ping主机B,执行命令如下:

root@daxueba:~# ping 192.168.59.135

输出信息如下:

PING 192.168.59.135 (192.168.59.135) 56(84) bytes of data.

64 bytes from 192.168.59.135: icmp_seq=1 ttl=64 time=11.1 ms

From 192.168.59.135 icmp_seq=1 Parameter problem: pointer = 0

64 bytes from 192.168.59.135: icmp_seq=2 ttl=64 time=0.546 ms

From 192.168.59.135 icmp_seq=2 Parameter problem: pointer = 0

64 bytes from 192.168.59.135: icmp_seq=3 ttl=64 time=0.453 ms

From 192.168.59.135 icmp_seq=3 Parameter problem: pointer = 0

从输出信息可以看到,主机A向主机192.168.59.135发送了ping请求,但部分请求没有得到响应信息,而显示了Parameter problem信息,表示参数错误。

3)通过捕获数据包,验证伪造的参数错误的ICMP数据包,如图8所示,捕获到了若干个ICMP数据包。第1个数据包的源IP地址为192.168.59.134,目标IP地址为192.168.59.135,是主机A向主机B发送的ICMP请求包;第3个数据包的源IP地址为192.168.59.135,目标IP地址为192.168.59.134,Info列显示的Parameter problem表示参数错误,说明该数据包为伪造的参数错误ICMP数据包。

30767cca58b9c7f49526307bfa205a5b.png

图8  捕获的ICMP数据包

4)选择第3个数据包,查看包信息,如图9所示。在Internet Control Message Protocol部分中,Type值为12,Code值为0,说明该数据包是参数错误ICMP数据包。

08ba9c018d9bb3dd219c2d9c95954906.png

图9  参数错误ICMP数据包

5、伪造源站抑制ICMP数据包

主机在处理报文时会有一个缓存队列。当主机接收数据包的速度比处理速度快时,一旦超过最大缓存队列,主机将无法处理,从而选择丢弃报文。这时,主机会向源发送方发送一个ICMP源站抑制报文,告诉对方缓存队列已满,稍后再进行请求。在这种类型的报文中,类型值为4,代码值为0。伪造这类数据包需要使用netwox工具中编号为85的模块。

已知主机A的IP地址为192.168.59.134,主机B的IP地址为192.168.59.135。在主机C上伪造源站抑制ICMP数据包。

1)在主机C上伪造源站抑制ICMP数据包,设置源IP地址为192.168.59.135,执行命令如下:

root@daxueba:~# netwox 85 -i 192.168.59.135

执行命令后没有任何输出信息,但是成功伪造了源站抑制ICMP数据包。

2)在主机A上ping主机B,执行命令如下:

root@daxueba:~# ping 192.168.59.135

输出信息如下:

PING 192.168.59.135 (192.168.59.135) 56(84) bytes of data.

64 bytes from 192.168.59.135: icmp_seq=1 ttl=64 time=1.77 ms

From 192.168.59.135: icmp_seq=1 Source Quench

64 bytes from 192.168.59.135: icmp_seq=2 ttl=64 time=0.429 ms

From 192.168.59.135: icmp_seq=2 Source Quench

64 bytes from 192.168.59.135: icmp_seq=3 ttl=64 time=18.8 ms

From 192.168.59.135: icmp_seq=3 Source Quench

从输出信息可以看到,主机A向主机192.168.59.135发送了ping请求,但是部分请求没有得到响应信息,而显示了Source Quench信息,表示源站抑制。

3)通过捕获数据包,验证伪造的源站抑制的ICMP数据包,如图10所示。捕获到了若干个ICMP数据包,其中,第4个数据包的源IP地址为192.168.59.134,目标IP地址为192.168.59.135,是主机A向主机B发送的ICMP请求包;第6个数据包的源IP地址为192.168.59.135,目标IP地址为192.168.59.134,Info列显示的Source Quench表示源站抑制,说明该数据包为伪造的源站抑制ICMP数据包。

0d101ee6f4599575e78ccaf7fc4fa929.png

图10  捕获的ICMP数据包

4)选择第6个数据包,查看包信息,如图11所示。在Internet Control Message Protocol部分中,Type值为4,Code值为0,说明该数据包是源站抑制ICMP数据包。

8a681c995e9f3a856b83ed4c8d27c8ee.png

图11  源站抑制ICMP数据包

6、伪造重定向ICMP数据包

当路由收到IP数据报,发现数据报的目的地址在路由表上却不存在时,它发送ICMP重定向报文给源发送方,提醒它接收的地址不存在,需要重新发送给其他地址进行查找。在该类型报文中,类型值为5,代码值为0。伪造这种类型的数据包需要使用netwox工具中编号为86的模块。

已知主机A的IP地址为192.168.59.132,netwox工具所在主机IP地址为192.168.59.135。基于netwox所在主机向主机A实施攻击。为了不让目标主机发现攻击的来源,伪造数据包的源IP地址为192.168.59.136,将目标主机的网关修改为网段中的其他主机,使目标主机发送的数据包重定向到该主机上。具体步骤如下:

1)查看目标主机A的网关。在目标主机A上,向www.qq.com发送ping请求。通过捕获数据包,查看网关信息,如图12所示。图中第2帧和第3帧为DNS协议查询数据包,是通过网关查询www.qq.com主机的IP地址信息。从中可以判断,目标主机的网关为192.168.59.2。

96bd87c43b72c57c119602919fa9901e.png

图12  查看网关

2)向目标主机发送重定向数据包,设置源IP地址为192.168.59.136,将目标主机发送的数据包重定向到主机192.168.59.131上,执行命令如下:

root@daxueba:~# netwox 86 -g 192.168.59.131 -c 1 -i 192.168.59.136

执行命令没有任何输出信息。

3)在目标主机上向www.qq.com发送ping请求,执行命令如下:

root@daxueba:~# ping www.qq.com

输出信息如下:

PING https.qq.com (125.39.52.26) 56(84) bytes of data.

64 bytes from no-data (125.39.52.26): icmp_seq=1 ttl=128 time=25.6 ms

From localhost (192.168.59.136): icmp_seq=1 Redirect Host(New nexthop:localhost (192.168.59.131))

From localhost (192.168.59.136): icmp_seq=2 Redirect Host(New nexthop:localhost (192.168.59.131))

64 bytes from no-data (125.39.52.26): icmp_seq=2 ttl=128 time=25.2 ms

From localhost (192.168.59.136): icmp_seq=3 Redirect Host(New nexthop:localhost (192.168.59.131))

64 bytes from no-data (125.39.52.26): icmp_seq=3 ttl=128 time=27.1 ms

64 bytes from no-data (125.39.52.26): icmp_seq=4 ttl=128 time=25.5 ms

From localhost (192.168.59.136): icmp_seq=4 Redirect Host(New nexthop:localhost (192.168.59.131))

上述输出信息中,64 bytes from no-data(125.39.52.26):icmp_seq=1 ttl=128 time=25.6 ms表示成功向目标www.qq.com发送ping请求;From localhost(192.168.59.136):icmp_seq=1 Redirect Host(New nexthop:localhost(192.168.59.131))表示伪造的重定向ICMP数据包,源IP地址为192.168.59.136,Redirect Host表示目标主机已经重定向,重定向到了主机192.168.59.131上。

4)在目标主机上捕获数据包,验证重定向的数据包,如图13所示。其中,第11帧的源IP地址为192.168.59.136(设置的源IP地址),目标IP地址为192.168.59.132(设置的目标IP地址),Info列的Redirect(Redirect for host)表示该数据包是一个重定向数据包。在Internet Control Message Protocol部分中,Type值为5,Code值为1,说明该数据包是重定向的数据包;Gateway address:192.168.59.131表示该主机的网关被重新定向到了192.168.59.131。

462c95b62f9661f47d344c6aa083ba46.png

图13  查看重定向数据包

5)选择第13帧,查看网关的重定向信息,如图14所示。第13帧的源IP地址为192.168.59.136(设置的源IP地址),目标IP地址为192.168.59.2(目标主机A的网关)。该数据包也是一个重定向的数据包。在Internet Control Message Protocol部分中,Gateway address:192.168.59.131表示目标主机A的网关被修改为了192.168.59.131。

7c22762aa2c263773e5c3729a485f638.png

图14  查看网关重定向

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值