如果目标只有 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 数据包,流量很明显。
生成 http2 监听器的木马,在客户端 1x.x.x.x 和内网其他机器 1x.x.x.x 目标机器执行,可以看到均能上线。
实际通信是这样,内网机器 连接 客户端 的 8082 端口,但是因为起的是正向代理,8082 映射到了服务端的 8081 端口。因此内网机
器最终连接到了服务端的 8081 端口。
本文展现的内网隧道技术,只是众多技术中的一种,而内网隧道技术作为连接内网与外网的桥梁,在如今数字化时代体现了巨大的潜力和价
值。它打破了网络的物理层面的限制,为远程办公、物联网设备管理等领域带来了极大的便利,提高了企业工作效率和人民生活质量。
但是,我们要清醒地认识到,内网隧道技术在带来便利的同时,也伴随着一系列的安全隐患。未经授权的访问、拒绝服务攻击、敏感
数据暴露等风险,时刻威胁着用户的隐私 。
因此,采取有效的安全防护措施至关重要。强化访问控制和身份验证机制,比如使用多因素身份验证和基于角色的访问控制,可以有
效防止未经授权的访问;使用 SSL/TLS 等加密协议对数据传输进行加密,能够保障数据在传输过程中的安全性,防止数据被窃取或篡
改;定期更新内网隧道软件和设备,及时修补安全漏洞,降低被攻击的风险;实时监控和日志记录则有助于及时发现异常情况,并在
安全事件发生后进行有效的追溯和分析 。
内网隧道技术的发展前景广阔,但安全始终是其发展过程中必须坚守的底线。只有在保障安全的前提下,才能充分发挥内网隧道技术
的优势,才能更好地迎接数字化时代带来的机遇和挑战,构建更加安全、高效、便捷的网络世界 。