电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2641 人浏览分享

ICMP隐蔽通信之隧道

[复制链接]
2641 0
ICMP隐蔽通信之隧道

一、简介

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

182350wsioxc9zrgos67xg.png.thumb.jpg

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

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

二、过墙原理

当攻击者使用各类隧道技术 HTTP DNS 常规正反端口转发等 均被拦截 常会通过ICMP隧道访问目标
主机以此躲过安全人员或流量设备进行tcpdump的流量审计。
ICMP隧道是一个比较特殊的应用通信用法。在一般的通信协议里 如两台设备要进行通信 需要IP+Port 而在ICMP协议
下不需要端口 最常见的ICMP消息为Ping命令与回复 在网络环境良好情况时每个Ping命令都可收到一个ICMP回复攻
击者可利用该特性 构建特别的ping命令 将TCP/UDP数据封装到ICMP的ping数据包中 从而穿过防火墙 通常防火墙
不屏蔽ping数据包实现不受限制的网络访问。

182350q0z46006ghr0g9mg.png.thumb.jpg

当然部分网络设备配置有单向过滤 阻止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

182351o606jv6065cv6c51.png.thumb.jpg

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标记来标识隧道。

四、具体操作

182351fk266qow1k2a3wt1.png.thumb.jpg

如上图所示:攻击者通过渗透拿到了网络边界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
执行映射配置 效果如下所示:

182351ul7jrlaborjrjw37.png

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

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

182352pqzg1cqupn0rhcph.png.thumb.jpg

五、流量特征

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

1.观察数量

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

182610tkzgjmg5dzwh5erb.png

2.观察大小

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

99.png

上图为Linux系统进行Ping请求应答抓包 封装后帧长度为98 IP数据报文长度为84 含
20bytes IP头 ICMP报文为64bytes 这64bytes中含48bytes数据。
​Windows进行ping data部分为 abcdefghijklmnopqrstuvwabcdefghi 共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隐蔽通信技术对
于红队方向的安全人员而言 去深入了解将非常值得。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.