### ICMP 隧道的流量特征

由于 ICMP 隧道将其他协议的数据“借壳上市”，它的流量行为和正常的 `ping` 命令有显著区别。以下是 ICMP 隧道的几个主要流量特征：

1. 非标准的ICMP数据载荷

- 正常流量：标准的 `ping` 命令（ICMP echo request/reply）通常携带的数据载荷较小，通常为32或64字节，并且数据内容是可预测的，比如 `ABCDEFGHIJKLMNOPQRSTUVWXYZ` 等
- 隧道流量：ICMP 隧道的数据载荷大小会根据传输的数据量而变化，通常远大于正常的 `ping` 载荷。这些载荷是经过编码和加密的，因此其内容是随机且不可读的

2. ICMP包类型和代码异常

- 正常流量：`ping`命令使用的ICMP包类型是`Echo Request`（类型8）和`Echo Reply`（类型0）
- 隧道流量：ICMP隧道可能会使用其他不常见的ICMP类型，例如`Timestamp Request`（类型13）、`Address Mask Request`（类型17）等，或者使用不常见的ICMP Code来作为数据传输的标记

3. 高频、连续的`ping`请求

- 正常流量：用户手动 `ping` 一个地址通常是短期的、低频的行为，比如几秒钟一次，持续几十次
- 隧道流量：为了维持稳定的通信，ICMP 隧道工具会高频率、连续地发送和接收 ICMP 包，其频率远超正常`ping`行为，表现为一种持续不断的“心跳”模式

4. 异常的 ICMP ID 和 Sequence Number

- 正常流量：`ping` 命令的 `ID` 通常是随机生成的，`Sequence Number` 则按顺序递增。在一次会话结束后，`ID` 会改变
- 隧道流量：ICMP 隧道工具可能会自定义这些字段来传输数据，使其`ID`和`Sequence Number`表现出非线性和不规则的模式，这在自动化分析中很容易被标记为异常

5. 传输方向和目的地址异常

- 正常流量：`ping`命令通常是从内网主机到外网服务器，或者在内网中进行测试
- 隧道流量：恶意 ICMP 隧道流量会从内网主机流向外部攻击者控制的服务器，这在网络流向分析中是一个重要的异常点