ICMP隧道

最近常听人提起ICMP隧道,不明白其实现原理,在此记录下这个知识点。

ICMP协议:

一般用于检测网络连通性和探测主机存活状态。

ICMP协议特点:

ping命令响应包和请求包的data数据是一样的。

 

 

原理:

ICMP报文自身是可以携带数据的,且默认填充的data部分是可修改的,ICMP隧道正是把消息隐藏在数据中,利用ping或者tracert命令建立隐蔽通道。

ICMP隧道特点:

1.防火墙对ICMP包是放行,且内部主机不会检查ICMP数据包所携带的数据内容,隐蔽性较高。

2.ICMP协议是无连接,传输不稳定。

工具:

Pingtunnel:YAPT Yet Another Ping Tunnel download | SourceForge.net

GitHub - jamesbarlow/icmptunnel: Tunnel IP over ICMP.

防御方式:

1、检测同一源的ICMP数据包的流量。一个ping命令每秒发送2个数据包,有些是一个数据包,而使用ICMP隧道会发送上千个ICMP数据包。

2、注意那些payload大于64bit的ICMP数据包

3、寻找响应数据包的payload与请求包的payload不一致的ICMP数据包。

4、检查ICMP数据包协议与标签,例如:icmptunnel会在所有的icmp payload前添加“TUNL”标记来识别隧道。

### ICMP 隧道的工作原理 ICMP (Internet 控制消息协议) 主要用于在网络设备之间传递控制信息和错误报告。由于许多防火墙默认允许 ICMP 流量通过,这使得攻击者可以利用 ICMP 数据包来创建隐蔽通道,即所谓的 ICMP 隧道。 #### 工作机制 ICMP隧道的核心在于封装技术。通常情况下,正常的ICMP数据报只携带少量的信息,如回显请求或应答。但在构建ICMP隧道时,攻击者会将其他类型的网络流量(例如TCP/IP通信)嵌入到ICMP负载中[^1]。当这些被修改过的ICMP数据包到达目标主机后,专门设计的应用程序能够解析并提取原始的数据流,从而实现绕过某些安全措施的目的。 #### 实现细节 为了建立一个有效的ICMP隧道,至少需要两部分组件: - **客户端软件**:负责发送带有隐藏有效载荷的ICMP Echo Request(Type 8),并将接收到的标准Echo Reply中的内容解码还原成实际传输的数据。 - **服务器端应用**:接收来自互联网上的ICMP Echo Requests,并从中抽取真实意图传达的消息;之后再构造相应的响应——通常是标准形式的Echo Replies(Type 0),其中包含了返回给发起者的反馈信息。 这种做法依赖于双方都安装有特定版本的支持该功能的应用层工具。此外,还需要注意的是,在现代网络安全环境中,越来越多的企业级防护系统已经开始加强对异常模式下的ICMP活动监测力度,因此纯粹依靠传统方法实施此类操作的成功率正在逐渐降低[^2]。 ```bash # 这里展示了一个简单的命令行示例,用来测试基本的ICMP连通性, # 并不是真正的ICMP隧道代码。 ping -c 4 example.com ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值