当黑客在用Ping时,Ping在偷摸做啥事儿?

VSole2023-05-22 09:14:14

一般来说,用 ping查看网络情况,主要是检查两个指标:

  • 第一个是看看是不是超时
  • 第二个看看是不是延迟太高


如果超时那么肯定是网络有问题(禁 ping情况除外),如果延迟太高,网络情况肯定也是很糟糕的。

ping是如何检查网络的?

ping背后的原理到底是啥样的?

这篇文章就带着你,来跟着 ping命令走一圈,看看 ping是如何工作的

01环境准备和抓包

01 环境准备

抓包工具:Wireshark 准备两台电脑,进行互 ping操作:

  • A电脑(IP地址:192.168.2.135 / MAC地址:98:22:EF:E8:A8:87)
  • B电脑(IP地址:192.168.2.179 / MAC地址:90:A4:DE:C2:DF:FE)

02 抓包操作

打开 Wireshark,选取指定的网卡进行抓包,进行 ping操作,在 A电脑上 ping B电脑的 IP。

抓包情况如下:

这里先简单的介绍下Wireshark的控制面板,这个面板包含7个字段,分别是:

  • NO: 编号
  • Time: 包的时间戳
  • Source: 源地址
  • Destination: 目标地址
  • Protocol: 协议
  • Length: 包长度
  • Info: 数据包附加信息

02深入解析

上图中抓包编号 54-132 显示的就是整个 ping命令的过程,我们知道 ping命令不是依托于 TCP或者 UDP这种传输层协议的,而是依托于 ICMP协议实现的, 那么什么是 ICMP 协议呢?这里简单介绍下:

01 ICMP协议的产生背景

[RFC792]中说明了 ICMP产生的原因:

由于互联网之间通讯会涉及很多网关和主机,为了能够报告数据错误,所以产生了 ICMP协议。也就是说 ICMP 协议就是为了更高效的转发 IP数据报和提高交付成功的机会。

02 ICMP协议的数据格式

根据上图,你会知道 ICMP协议头包含 4个字节,头部主要用来说明类型和校验 ICMP报文。

下图是对应的类型和代码释义列表,后面分析抓包的时候会用到。

简单介绍完了 ICMP,那么抓包过程中出现的 ARP协议是什么呢?同样来简单解释下:

01 ARP协议

我们知道,在一个局域网中,计算机通信实际上是依赖于 MAC地址进行通信的,那么 ARP( AddressResolutionProtocol)的作用就是根据 IP地址查找出对应的 MAC地址。

02 Ping过程解析

了解了上面的基础概念后,我们来分析下抓包的数据,其流程如下:

  • A 电脑( 192.168.2.135)发起 ping请求, ping192.168.2.179


  • A 电脑广播发起 ARP请求,查询 192.168.2.179的 MAC地址


  • B 电脑应答 ARP请求,向 A电脑发起单向应答,告诉 A电脑自己的 MAC地址为 90:A4:DE:C2:DF:FE


  • 知道了 MAC地址后,开始进行真正的 ping请求,由于 B电脑可以根据A电脑发送的请求知道 源 MAC地址,所以就可以根据源 MAC地址进行响应了

上面的请求过程我画成流程图比较直观一点:

观察仔细的朋友,可能已经发现,Ping 4次请求和响应结束后,还有一次 B电脑对 A电脑的 ARP请求,这是为什么?

这里我猜测应该是有 2个原因:

  • 由于 ARP有缓存机制,为了防止 ARP过期,结束后重新更新下 ARP缓存,保证下次请求能去往正确的路径,如果 ARP过期就会导致出现一次错误,从而影响测试准确性。


  • 由于 ping命令的响应时间是根据请求包和响应包的时间戳计算出来的,所以一次 ARP过程也是会消耗时间。这里提前缓存最新的 ARP结果就是节省了下次 ping的 ARP时间。


为了验证猜测,我再进行一次 ping操作,抓包看看是不是和猜测的一样。此时,计算机里面已经有了ARP的缓存,执行 ARP-a 看看缓存的arp列表:

看看第二次 ping的抓包:

可以看到,上图中在真正 ping之前并没有进行一次 ARP请求。

这也就是说,直接拿了缓存中的 ARP来执行了,另外当 B计算机进行响应之前还是进行了一次 ARP请求,它还是要确认下之前的 ARP缓存是否为正确的。

结束ping操作之后,同样再发一次 ARP请求,更新下自己的 ARP缓存,这里和我们的猜想基本一致。

弄懂了ping的流程之后我们来解析下之前解释的 ICMP数据结果是否和抓包的一致。

我们来点击一个 ping request看看 ICMP协议详情:

图中红框内就行 ICMP协议的详情了,这里的 Type=8,code=0, 校验是正确,且这是一个请求报文。

我们再点击Responseframe:57,这里说明响应报文在序号 57。详情如下:

上图的响应报文, Type=0,code=0,这里知道就是响应报文了,然后最后就是根据请求和响应的时间戳计算出来的响应延迟。3379.764ms-3376.890ms=2.874ms。

03总结一下,你就知道

你看,上面的文章其实是分析了一次完整的 ping请求过程。

ping命令是依托于 ICMP协议的, ICMP协议的存在就是为了更高效的转发 IP数据报和提高交付成功的机会。 

ping命令除了依托于 ICMP,在局域网下还要借助于 ARP协议, ARP协议能根据 IP地址反查出计算机的 MAC地址。

另外 ARP是有缓存的,为了保证 ARP的准确性,计算机会更新ARP缓存。

学了这个,以后面试再问 ping的详细过程,应该就比较稳了吧

pingarp
本作品采用《CC 协议》,转载必须注明作者和本文链接
CyberScan是一个开源的网络取证渗透测试工具包,可以分析IP,包括(纬度,经度,区域,国家……)的数据包,解码,扫描端口,ping和地理定位。CyberScan模块用法CyberScan能够发送和捕获多个协议的数据包,伪造并对它们进行解码以用于大多数网络任务,如扫描,ping,探测和攻击。Pinging 网络CyberScan支持使用多种协议执行ping操作,在本地以太网上发现主机的最快方法是使用ARPARP Ping$ CyberScan -s 192.168.1.0/24 -p arp. Received 0 packets, got 0 answers, remaining 256 packets. WARNING: No route found for IPv6 destination :: (no default route?
也就是说 ICMP 协议就是为了更高效的转发 IP数据报和提高交付成功的机会。这里我猜测应该是有 2个原因:由于 ARP有缓存机制,为了防止 ARP过期,结束后重新更新下 ARP缓存,保证下次请求能去往正确的路径,如果 ARP过期就会导致出现一次错误,从而影响测试准确性。ping命令除了依托于 ICMP,在局域网下还要借助于 ARP协议, ARP协议能根据 IP地址反查出计算机的 MAC地址。另外 ARP是有缓存的,为了保证 ARP的准确性,计算机会更新ARP缓存。
Moriarty Corp靶场攻略
2022-08-09 08:04:31
靶场环境本次所使用的攻击机为kalilinux系统,攻击过程中涉及到的工具主要有:公网主机VPS,中国菜刀/中国蚂剑,burpsuite,msf,MobaXterm,一句话木马,proxychains,nmap,searchsploit,exp脚本等。每次提交flag后都会给相关提示和说明。开始渗透之前须向外网服务器提交flag{start},表示攻击开始正常启动。
靶场环境 本次所使用的攻击机为kalilinux系统,攻击过程中涉及到的工具主要有:公网主机VPS,中国菜刀/中国蚂剑,burpsuite,msf,MobaXterm,一句话木马,proxychains,nmap,searchsploit,exp脚本等。攻击的拓扑结构如下图所示。每次提交flag后都会给相关提示和说明。开始渗透之前须向外网服务器提交flag{start},表示攻击开始正常启动。
在渗透中,当我们拿下一台服务器作为跳板机进一步进行内网渗透时,往往需要通过主机存活探测和端口扫描来收集内网资
在渗透中,当我们拿下一台服务器作为跳板机进一步进行内网渗透时,往往需要通过主机存活探测和端口扫描来收集内网资产。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报 文发送之后,是无法得知其是否安全完整到达的。
netspy是一款快速探测内网可达网段工具当我们进入内网后想要扩大战果,那我们可能首先想知道当前主机能通哪些内网段。netspy正是一款应用而生的小工具,体积较小,速度极快,支持跨平台,支持多种协议探测,希望能帮到你!
pingarp、tracert、route这四大命令配合使用,可以查出或解决网络中的大部分基本故障问题。当一次发送的数据包大于或等于65500byt时,将可能导致接收方计算机宕 机。
接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。我们来看下,ping同网段不存的ip地址。
VSole
网络安全专家