在内网做渗透测试时,常常遇到访问策略限制,无法直接访问渗透目标。本文算是记录下我上一年的几个解决方案。
0x01
场景说明
在做安服驻场时,连入客户内网对另一网段的站点进行渗透。有可能会遇到这种情况,虽然连入了客户内网,但无法直接访问目标站点。因为客户内网做了访问策略限制,不同网段无法直接连通。往往需要通过客户提供的跳板服务器去访问,大概的网络示意图如下:
我们当然可以在跳板服务器上装好java环境,方便运行比配的Burp Suite。安装python环境,运行常用的渗透辅助脚本。同时如果你还需要其他工具,得一个一个复制到服务器上......这将非常的繁琐!
那不能通过某种方法可以使得我们的笔记本直接访问的目标站点呢?,这样就不用拷贝工具到服务器上了,毕竟还是自己的笔记本渗透舒适。本文就是用于解决这个问题。
0x02
方案一: HTTP代理
2.1 跳板服务器配置
在跳板服务器上搭建Http(s)代理服务器,由于比较简单,就不具体说明如何搭建了。
2.2 笔记本配置
在客户端的浏览器上配置好代理,即可访问目标站点了。
2.3 方案缺点
只能支持Http协议数据的转发,无法代理其他协议。导致我们无法测试目标站点的其他端口。下个方案我们来解决这个问题。
0x03
方案二:Shadowsocks
我们往往都是使用Shadowsocks来FQ,其实这种场景也是可以利用Shadowsocks来解决的。
3.1 跳板服务器配置
Shadowsocks有python版,nodejs版,go版和exe版。由于我们得到的跳板机一般为Windows,故这里选择绿色单exe版Shadowsocks,方便携带移动。下载地址如下:
新建以下两个文件,内容分别如下:
shadowsock.json
{"server":"0.0.0.0","server_port":8388,"local_address":"127.0.0.1","local_port":1080,"password":"","timeout":300,"method":"aes-256-cfb","fast_open":false,"workers": 1}shadowsock-server.bat
@echo offshadowsocks-libqss.exe -c config.json -S将以上两个文件放到与shadowsocks-libqss.exe文件同目录,双击运行该bat脚本,即可在服务器上一键启动Shadowsocks了!
3.2 笔记本配置
在我们的笔记本Shadowsocks客户端进行如下设置,即可连接到Shadowsocks服务器。
在渗透时只需要将浏览器,burp等工具代理到127.0.0.1:1080,即可访问到我们的目标站点了。
注意:只有实现了http(s)/socks5功能或者使用系统代理的工具才能使用Shadowsocks!
3.3 方案缺点
如果某个渗透测试工具本身没有http(s)/socks5代理功能,那该怎么办?也许有的朋友可能会想到使用Proxifier/Sockcap这类软件,来为这些软件进程“添加”代理功能。但是由于SS需要在本地有客户端,故在本地再使用Proxifier/Sockcap会出现流量传输死循环的情况。下个方案我们来解决这个问题。
0x04
方案三:SOCKS5代理+Proxifier/Sockcap
4.1 跳板服务器配置
这里我们使用绿色单exe版SOCKS5代理服务器软件goproxy,项目地址如下:
在跳板服务器上,使用以下命令即可快速启动SOCKS5代理服务。
proxy.exe socks -t tcp -p "0.0.0.0:38080"4.2 笔记本配置
在本机使用Proxifier将需要代理的工具设置好代理,当然如果该工具有代理功能就不用了。
4.3 方案缺点
1. 渗透中需要使用的工具,我们得一一为它们设置好代理,比较繁琐。
2. 有些工具,你为它设置代理后,依然不能用,比如nmap。
下个方案我们来解决这些问题。
0x05
方案四:VPN
以上方案,优点很明显,缺点也很明显。为了实现对目标站点的全端口渗透无疑最好的方案是将跳板服务器搭建成VPN服务器了,然后笔记本直接通过VPN来访问目标站点,其他无需设置。即可使得所有工具都能访问到目标站点服务器的所有端口。
5.1下载安装
去官网下载OpenVPN(我下载是openvpn-install-2.3.10-I601-x86_64.exe),并在客户端和服务器按照以下同样的方式安装OpenVPN。安装过程没啥好说的,主要注意到以下这一步时,要选择红方框中的两个选项,不然安装完无法使用命令行制作证书。
安装完成后系统会多出一张网卡TAP-Windows Adapter V9。
5.2 系统设置
设置跳板服务器用于访问目标站点的网卡共享给OpenVPN的虚拟网卡TAP-Windows Adapter V9,这步很重要!
网上说需要修改注册表,测试发现不改也行,这里做个记录,说不定有的环境需要。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters将IPEnableRouter改为15.3 生成VPN证书
<1> 初始化配置
init-config<2> 复制配置文件为批处理
vars<3> 清除key文件夹内的文件,文件夹不存在会自动创建
clean-all<4> 生成证书及key,需要填写一些参数,建议不要默认
build-ca<5> 创建服务端证书及key,需要填写一些参数,建议不要默认,一路选y
build-key-server server<6> 创建一个客户端证书及key,需要填写一些参数,建议不要默认,一路选y
build-key client<7> 生成1024bit的key(pem文件),并结束此次创建
build-dh将新生成的keys目录下所有文件,全部拷贝到服务器OpenVPN的config目录下,
将keys目录下的client1.crt,client1.key和ca.crt复制到客户端的OpenVPN的config目录下。
5.4 编写服务端和客户端连接配置文件
在服务器上,在OpenVPN的sample-config目录下复制一个server.ovpn配置模板文件,到config目录。以下列举的为需要修改的配置项,其他可以使用默认配置。
# VPN服务器的地址local 192.168.149.140# 使用tcp协议proto tcp# 将目标站点所在的网段,写成路由推送给VPN客户端push "route 10.0.3.0 255.255.255.0"# 给VPN客户端推送的DNS(在内网一般不用写)push "dhcp-option DNS 114.114.114.114"# build-dh命令生成的是1024位的pem文件dh dh1024.pem在客户端,在OpenVPN的sample-config目录下复制一个client.ovpn配置模板文件,到config目录。以下列举的为需要修改的配置项,其他可以使用默认配置。
# 远程VPN服务器地址remote 192.168.149.140 1194# 使用TCP协议,与服务端相同proto tcp最后先启动服务器端,右键托盘图标>connect,小图标变绿色代表启动成功,若不成功可以查看下log日志,排查下原因。然后再启动客户端,操作一致。
5.5 方案缺点
配置相对比较繁琐。
0x06
总结
这些方案我特意选择了比较简单易用的软件,并作了一个记录。方便自己某时需要,能快速突破限制,节省渗透时间。同时解决方案中推荐的软件在Linux上也有,搭建的方式类似。每个方案有优点也有缺点,大家要看自己在现场的实际需求来选择!
0x07
参考文章
https://www.librehat.com/three-minutes-to-set-up-shadowsocks-server-on-windows/
https://www.i5seo.com/shadowsocks-sock5-pac-vpn-difference-between.html
http://www.fyluo.com/m/?post=198
https://www.landui.com/help/show-3871.html
https://www.cnblogs.com/lidabo/p/7027463.html
https://www.cnblogs.com/EasonJim/p/9657039.html
http://blog.shell909090.org/blog/archives/2724/
?p=9847
?p=9877