ICMP隧道通信原理与通信特征
https://baijiahao.baidu.com/s?id=1652047934643855432&wfr=spider&for=pc
1.一个正常的 ping每秒最多只会发送两个数据包,而使用ICMP隧道的浏览器在同一时间会产生大量ICMP 数据包
2.ICMP隧道数据包中DATA 往往大于64 比特
3.正常的icmp数据包里,请求和回应部分数据是一致的
基于统计分析的ICMP隧道检测方法与实现
https://cloud.tencent.com/developer/article/1425907
1.正常操作系统下通过ping产生的data,转换为16进制后为从00开始不断递增然后一直到ff的重复序列中的一段或几段。对于icmp隧道产生的自定义data数据包,转换为16进制后内容是乱序没有规律的因此,可以根据ping产生的data数据包,转换为16进制后的内容是否有规律来做区分
2.检测同一来源数据包的数量。正常ping每秒只会发送2个数据包,而ICMP隧道可以每秒发送很多个;
3.检测数据包中 payload 的大小。正常ping产生的数据包payload的大小为固定,而ICMP隧道数据包大小可以任意;
4.检测响应数据包中 payload 跟请求数据包是否不一致。正常ping产生的数据包请求响应内容一致,而ICMP隧道请求响应数据包可以一致,也可以不一致;
5.检测数据包中 payload 的内容。正常ping产生的payload为固定字符串,ICMP隧道的payload可以为任意;
6.检测 ICMP 数据包的type是否为0和8。正常ping产生的带payload的数据包,type只有0和8,ICMP隧道的type可以为13/15/17
NIDS(suricata) 中的 ICMP隐蔽隧道检测
https://www.wangan.com/p/7fy7475d1d627395
作者认为ICMP隧道存在以下特征
1、ICMP 隧道短时间会产生大量 ICMP 数据包,用来数据发送,可能存在大于 64 比特的数据包。
2、ICMP 隧道发送的 ICMP 数据包前后 Data 字段不一样,而且响应数据包中 payload 跟请求数据包不一致。
3、ICMP 数据包的协议标签可能存在特殊字段。例如,icmptunnel 会在所有的 ICMP Data 前面增加 ‘TUNL’ 标记以用于识别隧道
4,Data 里面可能存在一些系统命令
作者认为可以通过ICMP Data 字段加白名单,针对特殊字段报警,或是使用发包频率进行检测
隧道技术之DNS和ICMP与其检测防御
https://www.anquanke.com/post/id/163240
检测:
1、检测同一来源 ICMP 数据包的数量。一个正常的 ping 每秒最多只会发送两个数据包,而使用 ICMP隧道的浏览器在同一时间会产生上千个 ICMP 数据包。
2、注意那些 ICMP 数据包中 payload 大于 64 比特的数据包。当然 icmptunnel 可以配置限制所有数据包的 payload 为 64 比特,这样会使得更难以被检测到。
3、寻找那些响应数据包中 payload 跟请求数据包不一致的 ICMP 数据包。
4、检查 ICMP 数据包的协议标签。例如,icmptunnel 会在所有的 ICMPpayload 前面增加 ‘TUNL’ 标记以用于识别隧道,这就是特征。
斗象科技TCC团队:基于统计分析的ICMP隧道检测方法与实现
提取了以下特征进行检测:
- 在一个时间窗内,ICMP请求响应的数据包数量;
- 捕获到的ICMP请求响应中,其payload部分是否是操作系统的正常长度;
- 序号相同的ICMP数据包应当属于一对ICMP请求响应消息,他们的payload是否一致;
- ICMP请求响应的payload内容是否正常(多模匹配);
- ICMP请求是否是畸形Ping报文(Type是否异常);
对1/2/5直接使用统计组内的payload个数、payload_len长度值、是否有type不为0/8的数据包,直接得出。
对与3的判断,需要根据正常ping和异常数据的不同点,依据组内统计得到的id_seq集合和payload集合去重后,做大小比较得出
作者认为不考虑一些极端情况,可以简单通过 payloads_num > id_seq_num 即可认为请求响应内容不同
附:微步沙箱提供的ICMP隧道样本报告
https://mp.weixin.qq.com/s/YmqnCCcwBNkvHOVBiwGgIg
不过实际在微步自己的沙箱中查看时,该样本也没有表现出明显的icmp通信行为
最终检测方案:
如果icmp类型不为0或8,或者数据长度大于64bit,那么把该条icmp记录标记为疑似隧道通信。如果一个流量包里共出现至少10条疑似隧道通信记录时,才会打印icmp隧道记录,否则会把这些疑似隧道的记录按普通icmp记录输出