如何防范通过ICMP tunnel进行的数据泄漏

2月28日,MITRE Engage 发布了 V1 版本(如图1), MITRE Engage 是用于规划和讨论与对手作战的框架,它帮助我们通过对手作战达到安全目标。

2月28日,MITRE Engage 发布了 V1 版本(如图1), MITRE Engage 是用于规划和讨论与对手作战的框架,它帮助我们通过对手作战达到安全目标。对手作战是一种积极防御手段,它通过战略规划和分析,利用网络阻断和网络欺骗手段,达到作战的目标,相当于是以攻为防。Engage 矩阵中的作战活动是和 MITRE ATT&CK 矩阵(如图2 )映射起来的,通过将作战活动和 ATT&CK 矩阵映射起来,可以保证我们的作战活动是攻击行为驱动的,并且能够更好地规划应当采取哪些作战活动。这将为广大的网络安全从业者带来很大的参考价值。

 

图1 MITRE Engage

 

 

图2 ATT&CK V10.1

随着多年来安全威胁的发展,安全解决方案也在不断进步。 从防火墙、入侵检测和预防系统 (IDS & IPS) 以及安全信息和事件管理系统 (SIEM) ,到用户和实体行为分析 (UEBA)、状态协议分析和隐写术——流量监控越来越严密,攻击者被迫寻找新的方法来保持不被发现。今天我们就来分析一下黑客传送(C&C Communication)收集到的信息或进行数据泄漏(Data Exfiltration)的一种常用手段—— ICMP 隧道。

相信网络安全从业者都使用过ICMP,Internet 控制消息协议 (ICMP) 是一种 OSI 网络层协议,用于发现和控制网络中的路由问题。 当网络设备检测到某些错误时,它们将生成 ICMP 数据包以通知端点发生的情况。

当我们使用Ping来向一台主机将发送一个带有一些数据的 Echo 数据包到被 Ping 的主机时, 被 Ping 的主机将使用包含相同数据的 Echo 回复进行应答。 但数据可以是任意的,因为ICMP 的 RFC 没有定义严格的规范。

因此攻击者可以利用这种设计选择来混淆恶意网络行为。 每个数据包都可被注入到 Echo 或 Echo Reply 数据包中,而不是在选择的协议中与机器进行显式通信。通信流似乎是一系列 Ping 操作,而不是TCP 连接之类的。

ICMP 隧道是一种常见形式的非应用层协议隧道。当通过隧道传输协议时,这种行为有助于隐藏看似无害的通信形式中的恶意流量,在两台机器之间成功创建隐蔽的 C&C 和数据泄露通道,从而有助于规避检测,攻击者可以通过这个在常规的网络环境中(特别是大型网络、内部网络中各个不同的安全域之间)允许的ICMP协议数据包中传输流量来利用这一点。ICMP 是非应用层协议,但它对于网络运维是重要的,且是一个成熟的工具,因此企业不太可能像对通常的数据泄露通讯协议(HTTP、HTTPS、TCP、IMAP)那样密切监视它。因为在许多情况下,不能完全禁用 ICMP 功能,而且运行它只需要一般的用户权限级别即可,所以它经常被攻击者所利用,并有利于隐藏攻击者的身份和利益。

 

我们来看一个例子:

下图是一个抓包截图(图3),它是两台机器之间的正常Ping包,包含了很多Ping包的Echo 请求/ Reply, 我们可以关注它的Length都是98bytes,正常情况下的Ping包的Length是不超过100bytes。

图3

 

下图也是一个抓包截图(图4),同样包含了很多Ping包的Echo 请求/ Reply我们可以看到它的Length则是1486 bytes。

图4

虽然ICMP协议的Ping包不会包含非常大/多的信息,但是如果被感染的主机与C&C服务器之间持续使用ICMP Tunnel协议传送并泄漏数据,则非常容易绕过防火墙或IPS的规则。

我们可以对比一下这两种ICMP Ping包的Data部分,正常Ping包的Data部分如下图所示(图5)

图5

 

被攻击者利用的Ping包的Data部分如下图(图6)

图6

使用Base64解码工具对图6的解析得出的结果如下图(图7)

图7

通过以上的分析我们可以看出,攻击者可以轻松利用您允许的协议,绕过现有的多种检测手段将数据泄露出去,因此建议可以通过如下几种方式改进,以减少这种机率:

  •  利用安全验证工具持续在各个安全域之间模拟此种方式泄露数据,以确认在允许ICMP使用的各个安全域之间的安全手段可以发现或可以阻断大的Ping包、持续时间长的不正常的ICMP流量,进而对未发现或未能阻断的相关安全手段进行后续改进优化,也可以验证在已经构建SIEM或SOC的情况下,它们是否可以通过分析安全手段的告警日志之后告知安全运维/响应人员对此类事件进行处理
  • 关注网络取证设备是否具备自动生成关于不正常的Ping包大小的报告,并确认其是否可以还原Ping包的Data部分的内容并合成原数据,以判断泄漏了什么数据;如果数据是被加密的,则需要至少能够告警是被加密以及使用的加密算法。
  • 对防火墙的规则定期梳理,删除那样由于测试或IT变更开放ICMP但现在又不需要的策略。
  • 对IDS/IPS设备进行升级以使其能对Non-Arbitrary ICMP Payload 进行检测发现、阻断。