代理搭建简要指南

前置操作

假设我们现在已经完成了对一个服务器的外部打点和控制,现在需要进一步对内网环境发动攻击,我们需要利用代理进行内网渗透,那么首先我们需要搭建一个代理服务器,这里我们选择使用Neo-reGeorg来搭建一个简单的内网代理服务.

Socks5协议介绍

Socks5是一种网络传输协议,主要用于客户端与服务器之间的通信,它提供了一种安全、高效的通信方式,可以用于代理、VPN等场景。Socks5协议支持多种身份验证方式,包括无验证、用户名/密码验证等,并且支持多种协议,包括TCP、UDP等。

代理原理

本质上其实是建立网络隧道,并通过隧道进行数据传输,将外网流量转发到内网,从而实现内网服务的访问.

正向代理

正向代理是代理服务器位于客户端和目标服务器之间的,客户端向代理服务器发送请求,代理服务器将请求转发给目标服务器,并将目标服务器的响应返回给客户端。正向代理通常用于访问被限制的网站,或者隐藏客户端的真实IP地址。
alt text

正向代理原理图

反向代理

反向代理是代理服务器位于目标服务器和客户端之间的,客户端向目标服务器发送请求,目标服务器将请求转发给代理服务器,并将代理服务器的响应返回给客户端。反向代理通常用于负载均衡、缓存、安全防护等场景。
alt text

反向代理原理图

生成代理脚本

alt text

使用neo-reg生成代理脚本
1
python3 neoreg.py generate -k $password

这条命令会生成一个代理脚本,其中$password是代理的密码,这个密码需要与代理客户端的密码保持一致,否则代理客户端无法连接到代理服务器.

上传代理脚本

在受害者服务器可以访问到的地方启动一个http服务,将生成的代理脚本上传到vps上,这里我们使用python的http.server模块来启动一个简单的http服务.

1
python -m http.server <port>

这个命令会启动一个简单的http服务,将文件放在当前目录下,并监听指定的端口,可以用于临时的文件服务.对于PHP/ASP等脚本语言,可以直接把文件传到主机可以解析的目录下,然后访问即可.如果得到空页面则说明上传成功.对于一些非页面解释形式的语言,则需要自己启动进程来搭建代理服务器.

连接代理

1
python3 neoreg.py -k $password -u $ip-endpoint -p $port

这条命令会连接到代理服务器,其中$password是代理的密码,$ip-endpoint是代理服务器的ip地址,$port是代理服务器的端口.alt text

使用终端连接代理至本地4444端口
连接成功后,我们就可以通过代理服务器访问内网中的服务了. 使用代理后,我们就可以通过代理服务器访问内网中的服务了,例如访问内网中的web服务、数据库服务等.之后就是重复外网打点过程了,在这里不再赘述.

使用代理

浏览器的话可以使用SwitchyOmega插件,在插件中添加代理服务器,然后在访问内网服务器时切换到代理服务器即可.
alt text

配置SwitchyOmega访问内网服务

alt text
成功访问到内网服务

更详细的代理设置Windows可以利用Proxifier来配置代理,Linux可以利用proxychains来配置代理,具体配置方法可以参考相关文档.