填坑,之前frp和socks隧道代理后,proxychain4 ping无法返回包,此次学习了pingtunnel与icmp隧道绕过


网络拓扑图如下

前置知识

icmp协议

ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用 (百度百科)

icmp隧道

在实际的后渗透阶段:因为防火墙(大多不止一个)存在,未必开启了可以使用的端口(有时是因为要到的shell权限过低等无权操作防火墙)进行利用。那么可以利用icmp隧道建立联系。因为icmp协议工作在网络层,依附于IP工作,(像上一篇文章的坑:ping无数据包返回)。

因此,我们可以包tcp/unp数据包封装到icmp协议中(还在学习中,解释如下):

请求端的 Ping 工具通常会在 ICMP 数据包后面附加上一段随机的数据作为 Payload,而响应端则会拷贝这段 Payload 到 ICMP 响应数据包中返还给请求端,用于识别和匹配 Ping 请求。

Windows 和 Linux 系统下的 Ping 工具默认的 Payload 长度为 64 比特,但实际上协议允许附加最大 64K 大小的 Payload。 对于隧道数据,icmptunnel 首先会指定客户端和服务器端。随后,客户端会将 IP 帧封装在 ICMP 请求数据包中发送给服务器,而服务器端则会使用相匹配的 ICMP 响应数据包进行回复。这样在旁人看来,网络中传播的仅仅只是正常的 ICMP 数据包。 解释内容参考:先知社区《内网渗透之icmp隐藏隧道》

ptunnel工具

ptunnel是一款建立ICMP隧道传输数据的工具。

命令释义:

  • 参数-p:指定代理服务器,即此示例中的代理服务器B(192.168.1.2)

  • 参数-lp:指定本地监听端口

  • 参数-da:指定欲访问的目标服务器

  • 参数-dp:指定欲访问的目标端口

    待更新。。。。