ICMP隐蔽通信之隧道

admin 2021年11月16日00:37:02评论750 views字数 2737阅读9分7秒阅读模式

ICMP隐蔽通信之隧道

ICMP隐蔽通信之隧道


一、简介


ICMP是Internet Control Message Protocol缩写,中文译为:互联网控制消息协议,它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP依靠IP来完成任务,无需端口这点与传输协议UDP、TCP显著不同,因此它一般不用于在两点间传输数据,故通常不由网络程序直接使用(除ping和traceroute 两个特别例子)。


ICMP隐蔽通信之隧道


ICMP通常用于网际协议中发送控制消息,提供可能发生在通信环境中的各种问题反馈,比如返回错误信息或是分析路由。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。常见的ICMP错误信息是TTL值过期,每个路由器在转发数据报的时候都会把IP包头中的TTL值减1。如果TTL值为0,TTL在传输中过期”的消息将会回报给源地址。


以上为ICMP正常用途,本篇分析重点为ICMP渗透用途,渗透用途有隧道用途和隐藏后门用途,本篇讲隧道用途。


二、过墙原理


ICMP隐蔽通信之隧道



当攻击者使用各类隧道技术(HTTP,DNS,常规正反端口转发等)均被拦截,常会通过ICMP隧道访问目标主机,以此躲过安全人员或流量设备进行tcpdump的流量审计。


 ICMP隧道是一个比较特殊的应用通信用法。在一般的通信协议里,如两台设备要进行通信,需要IP+Port,而在ICMP协议下不需要端口,最常见的ICMP消息为Ping命令与回复,在网络环境良好情况时每个Ping命令都可收到一个ICMP回复。攻击者可利用该特性,构建特别的ping命令,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(通常防火墙不屏蔽ping数据包)实现不受限制的网络访问。


当然部分网络设备配置有单向过滤,阻止ICMP请求数据包进入站点,仅允许ICMP通信出站,即防火墙仅单向允许内部设备ping互联网设备。
类型为8的ICMP包代表request,类型为0的ICMP包代表reply。对此,攻击者把带有命令执行的ICMP包伪装成类型为0的ICMP包,防火墙将误判为ICMP-0-reply包,ICMP数据包成功进入站点。而带有执行结果的ICMP包,攻击者把它伪装成类型为8的ICMP包,防火墙将误判为ICMP-8-request包,ICMP数据包成功进入互联网。


部分网络设备配置有过滤无应答ICMP,导致隧道掉线,因此攻击者会定期发送空的ICMP请求数据包以此使得客户端与服务器端的“通信窗口”保持开启。


三、工具介绍


1.PingTunnel


工具介绍

ICMP隐蔽通信之隧道


PingTunnel是一款常用的ICMP隧道工具,可以跨平台使用。使用 ICMP 回显请求和回复数据包(通常称为 ping 请求和回复)可靠地将 TCP 连接通过隧道连接到远程主机。当网络通信中不允许您将 TCP 或 UDP 数据包发送到互联网,使用PingTunnel,在允许Ping 互联网其余部分的任何计算机,可实现突破TCP封锁,为避免隧道被滥用,可为隧道设置密码。


2.ICMPTunnel


ICMPTunnel 作者为 jamesbarlow ,于2016年开发完成。是一款在 ICMP 回显请求和响应 (ping) 数据包中隧道传输 IP 流量的工具。它旨在以半隐蔽的方式绕过防火墙。虽然有几个现有的工具可以实现这种技术但 ICMPtunnel 提供了更可靠的协议和机制,用于通过有状态防火墙和 NAT 进行隧道传输。但是ICMPtunnel具有流量特征, ICMPtunnel会在所有的 ICMP Payload前面添加TUNL标记来标识隧道。


四,具体操作


ICMP隐蔽通信之隧道

如上图所示:攻击者通过渗透拿到了网络边界Web服务器(172.16.33.157),发现目标内网有一台PC(192.168.195.129)并开放3389远程桌面,192段密码本已获取,但跳板机无法TCP/UDP出网(172.16.33.138),如果选择正向出网,容易造成业务卡顿,并且通信质量不佳。此时攻击者选择通过ICMP隧道进行远程桌面登陆。


在Web Server上执行命令,启动PingTunnel

启动PingTunnel效果如下图所示:

在Hacker 机器上执行命令,将本地1080端口映射到  192.168.195.129:3389

执行映射配置,效果如下所示:


ICMP隐蔽通信之隧道


在Hacker 机器上执行RDP命令,连接本机1080端口


连接远程桌面,效果如下图所示:


ICMP隐蔽通信之隧道


五、流量特征


 使用ICMP隧道将产生大量ICMP数据包,可通过 Wireshark进行ICMP数据包分析,以检测恶意ICMP流量,具体方法如下:


1.观察数量


检测同一来源的ICMP数据包的数量,一个正常的ping命令每秒最多发送两数据包,而用ICMP隧道会在很短的时间内产生上千个ICMP数据包。


ICMP隐蔽通信之隧道


2.观察大小


注意 Payload大于64bytes的ICMP数据包,ICMP报文由首部和数据段组成。首部为定长的8个字节,前4个字节是通用部分,后4个字节随报文类型的不同有所差异。数据段部分默认为32字节或48字节。


一个正常的Ping 报文,如下图所示:


ICMP隐蔽通信之隧道


上图为Linux系统进行Ping请求应答抓包,封装后帧长度为98,IP数据报文长度为84,含20bytes  IP头,ICMP报文为64bytes,这64bytes中含48bytes数据。


   Windows进行ping data部分为 abcdefghi

jklmnopqrstuvwabcdefghi,共32bytes

 Linux进行ping data部分为  时间数据 + !”#$%&’()+,-./01234567

共48bytes



3.前后不一致


 寻找响应数据包中的 Payload与请求数据包中的 Payload不一致的ICMP数据包,协议规定,ICMP消息总是包括了源数据并返回给发送者,如响应数据包中的 Payload与请求数据包中的 Payload不一致,则不遵从通信协议规范,视为畸形数据包。


4.检查标识


检测ICMP数据包的协议标签,ICMPtunnel会在所有的 ICMP Payload前面添加TUNL标记来标识隧道。


六、小结


对于防御ICMP隐蔽通信攻击,彻底消除风险的方法为:在网络边界设备,如防火墙中配置禁用ICMP。当然这需要结合业务考虑。


如业务需使用ICMP协议,安全设备不能单纯禁用ICMP协议,可考虑监测畸形数据包,判定异常并及时丢弃数。ICMP是一个网络层协议,ICMP较TCP/IP协议更底层。但ICMP依然是TCP/IP协议簇的一个子协议,报文不能直接传送给数据链路层,依然需要IP协议承载,但也足够特殊。因此ICMP隐蔽通信技术对于红队方向的安全人员而言,去深入了解将非常值得。

ICMP隐蔽通信之隧道

本文始发于微信公众号(疯猫网络):ICMP隐蔽通信之隧道

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年11月16日00:37:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ICMP隐蔽通信之隧道http://cn-sec.com/archives/426606.html

发表评论

匿名网友 填写信息