测试环境
环境是用vulntarget系列靶场的B搭建(半个),用windows物理机模拟了真实环境下的vps
- vps(迫真):windows11,ip为
192.168.111.1
- 攻击机:kali-2024,ip为
192.168.111.132
- 外网靶机:centos7,外网ip为
192.168.111.135
,内网ip为10.0.20.30
- 内网靶机:windows10,内网ip为
10.0.20.66
背景:攻击机已通过外网靶机的web漏洞成功getshell,但外网靶机通过双网卡将内网和外网隔离,因此攻击机无法直接访问内网的windows10主机
frp
首先是frp,简单、高效的内网穿透工具:github仓库地址,官方中文文档地址
自v0.52.0版本起,ini格式的配置文件已弃用,历经几代版本后配置文件的语法也有了些许改变,但网上的大部分教程却仍停留在之前的版本,加之官方文档对插件的使用举例没那么清晰,配置时花了好一番功夫
frp存在服务端和客户端,典型的C/S架构,我们需要在vps与外网靶机上分别部署服务端与客户端(针对不同的操作系统需要使用不同的版本的可执行文件)
下载并解压后有四个文件
frps与frps.toml(服务端可执行文件与配置文件),frpc与frpc.toml(客户端可执行文件与配置文件)
现在根据fscan内网扫描的结果,得知内网主机10.0.20.66
的8080端口存在http服务,且开放了3306端口,需要通过配置frp服务端与客户端使我们能够在外网探测到这两个端口
服务端配置如下
|
|
命令frps.exe -c ./frps.toml
启动服务端,可通过127.0.0.1:7500
访问管理后台
将对应的客户端可执行文件与配置文件上传至目标外网靶机
配置如下:
|
|
以上配置文件实现了将内网主机10.0.20.66
的8080端口转发到vps的8081端口,3306端口转发到13306端口
chmod +x frpc
给可执行权限,./frpc -c ./frpc.toml
启动客户端
这时后台就能看到连接情况
访问192.168.111.1:8081
,即可访问到内网主机10.0.20.66:8080
下的web服务
mysql服务同理,这里用nmap测试下(没有通过用户验证,因此无法直接与mysql建立连接)
但这种配置方式仍十分麻烦,内网主机每开放一个服务,都需要在配置文件中多写几行,vps上又需要多开几个端口用于转发流量,显然不够优雅,所以现在请出我们的socks5插件
有关socks5协议的了解请移步 理解socks5协议的工作过程和协议细节,这里就不过多介绍了
socks5代理的优点:可将整台主机的流量都进行转发,不需要给每个开放的服务分别配置;
缺点:不支持icmp协议,会对某些信息收集手段造成限制(如nmap的扫端口,默认使用的是ping包)
服务端配置文件不变,以下是客户端配置文件:
|
|
启动后可以看到socks5代理已经跑起来了
现在只需要在攻击机配置代理服务器即可直接访问内网的服务,可用浏览器插件SwitchyOmega、FoxyProxy或windows下的Proxifier、Linux下的Proxychains进行配置
Proxifier配置:
配置代理服务器(我这里用主机模拟的vps,真实情况下地址换成自己的vps地址即可)
配置代理规则,选择刚刚配置的代理服务器即可,且需要在目标主机中选择我们要访问的ip段
现在就可以直接访问内网靶机的服务了,mysql服务同理
Proxychains配置:
kali自带了proxychains4工具,可直接配置
修改/etc/proxychains4.conf
配置文件,在底部添加socks5 192.168.111.1 5555
之后在需要走代理的命令前都加上proxychains
或proxychains4
即可
因为使用的socks5协议,不支持icmp,因此无法用ping来测试,照例用nmap来测试下:
这些功能只是frp能够实现的冰山一角,更多高阶玩法请移步官方中文文档
EarthWorm
译为蚯蚓,简称ew,github仓库地址(第三方),官方文档地址
一套便携式的网络穿透工具,具有socks5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透
ew使用起来比frp要方便许多,可惜的是由于影响恶劣而停止了更新
用法在官方文档与README中写的十分详细,在此就简单测试一下
1.当目标网络边界存在公网ip且可监听任意端口时,使用正向的socks5服务器:
将对应处理器架构与操作系统的可执行文件上传至目标外网靶机,并执行
|
|
开启监听后,和之前一样在攻击机上设置socks代理服务器,由于是正向代理,因此代理服务器即为目标外网靶机的地址,这里仍用kali与nmap进行测试
2.当目标网络边界不存在公网ip时,可通过反弹方式创建socks5代理:
在vps上执行ew:
|
|
在目标靶机上执行:
|
|
连接上后会在vps下回显:
接着和之前的操作一致,配置socks5代理服务器并测试
ew还可以应对多层内网的环境,不过这篇只是为了记录学到的内网流量转发手段而记,就不展开写了(毕竟官方文档写的一清二楚,在此赘述并无意义)
除了这两个工具之外,还有许多不同的内网流量转发工具,等日后接触了再来此记录