ICMP 协议出网技术浅析
发布时间:2025-01-24
如果目标只有 icmp 协议能出网的话,则只有考虑使用 icmp 协议来搭建隧道
利用 icmp 协议通信工具,如:icmpsh、reverse-icmp-shell、 PingTunnel、IcmpTunnel。
ICMP 隧道,是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在 ICMP 协议下就不
需要。最常见的 ping 命令就是利用的 ICMP 协议,可以利用命令行得到更多的 ICMP 请求。在通常情况下,每个 ping 命令都有相应
的回复与请求。
在一些网络环境中,如果使用各类上层隧道(例如:HTTP 隧道、DNS 隧道、常规正/反向端口转发等)进行的操作都失败了,常常会通
过 ping 命令访问远程计算机,尝试建立 ICMP 隧道,将 TCP/UDP 数据封装到 ICMP 的 ping 数据包中,从而穿过防火墙(防火墙一般
不会屏蔽 ping 的数据包),实现不受限制的访问。
适用场景:
目标机器是 Windows 服务器的情况
VPS 的操作:
#关闭 icmp 回复
#运行,第一个 IP 是 VPS 的 eth0 网卡 IP,第二个 IP 是目标机器出口的公网 IP
注:
使用 icmpsh 需要依赖 impacket 库文件,所以在使用前需要安装 impacket。
进行抓包,可以看到两者之间通信都是 icmp 的数据包
使用 PingTunnel 搭建隧道
pingtunnel 是一款把 tcp/udp/sock5 流量伪装成 icmp 流量进行转发的工具。
正向 socks5 代理
服务端操作
#关闭 icmp 回复
#监听
客户端操作
将代理设置为 Socks5 127.0.0.1:1080 。
端口转发
服务端操作
#关闭 icmp 回复
#监听
客户端操作
#将目标主机 x.x.x.x 的 8081 端口转发到本地的 8080 端口
这样访问本地的 8080 端口就相当于访问了目标主机的 8081 端口。
ICMP 上线 CobaltStrike
如下场景,我们拿到了内网 1x.x.x.x 和 1x.x.x.x 的机器权限。但是这两个机器对外均只有 icmp 协议出网,我们现在可以利用 icmp 封
装 tcp 协议,让其上线 cs。内网客户端之前通信是 tcp 协议,内网客户端和 cs 之间通信是 icmp 协议。但是这个方法也有局限性,当
cs 是公网地址的时候,icmp 协议数据包很容易掉包,导致上不了线。并且在实战中会产生大量的 icmp 数据包,流量很明显。
CS 上创建两个监听器
生成 http2 监听器的木马,在客户端 1x.x.x.x 和内网其他机器 1x.x.x.x 目标机器执行,可以看到均能上线。
两台机机器之间是 TCP 流量
客户端和服务端之间是 icmp 流量。
实际通信是这样,内网机器 连接 客户端 的 8082 端口,但是因为起的是正向代理,8082 映射到了服务端的 8081 端口。因此内网机
器最终连接到了服务端的 8081 端口。
本文展现的内网隧道技术,只是众多技术中的一种,而内网隧道技术作为连接内网与外网的桥梁,在如今数字化时代体现了巨大的潜力和价
值。它打破了网络的物理层面的限制,为远程办公、物联网设备管理等领域带来了极大的便利,提高了企业工作效率和人民生活质量。
但是,我们要清醒地认识到,内网隧道技术在带来便利的同时,也伴随着一系列的安全隐患。未经授权的访问、拒绝服务攻击、敏感
数据暴露等风险,时刻威胁着用户的隐私 。
因此,采取有效的安全防护措施至关重要。强化访问控制和身份验证机制,比如使用多因素身份验证和基于角色的访问控制,可以有
效防止未经授权的访问;使用 SSL/TLS 等加密协议对数据传输进行加密,能够保障数据在传输过程中的安全性,防止数据被窃取或篡
改;定期更新内网隧道软件和设备,及时修补安全漏洞,降低被攻击的风险;实时监控和日志记录则有助于及时发现异常情况,并在
安全事件发生后进行有效的追溯和分析 。
内网隧道技术的发展前景广阔,但安全始终是其发展过程中必须坚守的底线。只有在保障安全的前提下,才能充分发挥内网隧道技术
的优势,才能更好地迎接数字化时代带来的机遇和挑战,构建更加安全、高效、便捷的网络世界 。
Copyright © 上海巨瑞网络科技有限公司 版权所有 沪ICP备15005663号-1
沪公网安备 31011402002446号