Cobalt Strike 4.8 Client Docker 部署指南
为解决java环境不兼容问题,将 Cobalt Strike 4.8 汉化版客户端(Java Swing GUI)完整容器化,通过浏览器远程桌面访问。 Github项目链接
📋 前置要求
- Docker Desktop: 20.10+(含 Compose v2)
- 内存: 至少 4GB 可用(容器限制 2GB)
- CPU: 建议 2 核以上
🏗️ 技术架构
┌─────────────────────────────────────────────┐
│ Docker Container (Ubuntu 20.04) │
│ │
│ entrypoint.sh (PID 1 入口) │
│ ├─ [启动前] start_vnc.sh 清理残留 │
│ │ (锁文件/socket/孤儿进程/shm) │
│ └─ exec supervisord │
│ ├─ [vncserver] Xvnc :99 │
│ │ └─ 内联再清一次锁后启动 (:5900) │
│ ├─ [noVNC] websockify (:6080) │
│ │ └─ 浏览器 WebSocket→VNC │
│ └─ [csclient] start.sh → CS GUI │
│ (DISPLAY=:99) │
└─────────────────────────────────────────────┘
↑ port 6080 / 5900
浏览器 http://localhost:6080
关键设计点:
- 单一 X server:
Xvnc :99同时充当显示服务器和 VNC 服务,CS GUI 与 VNC 画面天然同步(不再用 Xvfb,避免双 display 不同步问题)。 - 每次启动自动清理:
entrypoint.sh在拉起 supervisord 前执行start_vnc.sh,删除上次异常退出残留的/tmp/.X99-lock、陈旧 socket、孤儿 Xvnc/java 进程和共享内存段;supervisord 的[program:vncserver]又内联清一次锁——彻底杜绝重启后Server is already active for display 99。 - 免密访问:
-SecurityTypes None,连接无需密码。 - supervisord 作 PID 1:统一管理所有子进程,任一崩溃可自动重启。
- 中文字体:预装
fonts-wqy-zenhei+fonts-noto-cjk,汉化界面正常显示。
📁 目录结构
CobaltStrike-Docker-Client/
├── Dockerfile # 镜像定义 (Java 11 + TigerVNC + noVNC)
├── docker-compose.yml # 容器编排 (端口/资源/volume)
├── entrypoint.sh # 容器入口: 清理 → supervisord
├── start_vnc.sh # 启动前自动清理残留锁/socket/进程
├── supervisord.conf # 进程管理配置 (Xvnc/noVNC/CS)
├── start.sh # CS 客户端启动脚本
├── .dockerignore # 构建忽略规则
├── README.md # 本文件
├── prepare.bat # (可选) 从原始目录整理文件
├── deploy.bat # Windows 一键 build/up/down/logs
└── cobaltstrike-client/ # ⚠️ volume 挂载源目录
├── cobaltstrike-client.jar # 主客户端包
├── cobaltstrike.jar # 核心库
├── uHook.jar # Hook 库
├── cobaltstrike.auth # ⚠️ 授权文件(必需!)
└── plugin/ # 插件目录 (Erebus/Ladon/TaoWu/XieGongZi...)
🚀 快速开始
项目已包含全部客户端文件,直接构建即可:
cd C:\Users\17856\Desktop\CTF\CobaltStrike-Docker-Client
# 构建镜像(首次约 3-5 分钟,需下载依赖)
docker-compose build --no-cache
# 启动容器
docker-compose up -d
# 查看日志确认各服务就绪
docker-compose logs -f
访问界面
打开浏览器访问 👉 http://localhost:6080 (无需密码)
或用任意 VNC 客户端连接 localhost:5900(无密码)。

🔧 常用命令
docker ps # 查看容器状态
docker-compose logs -f # 实时日志
docker-compose down # 停止并清理
docker-compose restart # 重启
docker exec -it cobaltstrike-4.8-client bash # 进入容器调试
docker-compose up -d --build # 改文件后重建
⚙️ 自定义配置
修改资源限制(编辑 docker-compose.yml)
mem_limit: 4g # 最大内存
cpus: 4.0 # CPU 核心数
shm_size: '2g' # 共享内存
修改 noVNC 端口
ports:
- "8080:6080" # 宿主机端口:容器端口
局域网其他机器访问
把端口映射改为 "0.0.0.0:6080:6080",再从其他机器访问 http://<你的IP>:6080。
⚠️ 生产环境务最好加 nginx + WebSocket SSL,并改用带密码的 VNC,切勿裸暴露公网。
📝 注意事项
- 合法用途:仅用于获得授权的渗透测试 / CTF / 研究。
- 首次启动慢:Java GUI 预热需时间,耐心等 10-20 秒。
- 数据持久化:Java 配置经 volume (
cs-java-config) 保存。 - 更新流程:改客户端文件 →
restart;改构建配置 →build --no-cache && up -d。