Cobalt Strike 介绍

Cobalt Strike: C/S架构的商业渗透软件,适合多人进行团队协作,可模拟APT做模拟对抗,进行内网渗透。

本文讲解3.12版本,该版本支持了Unicode编码。

Cobalt Strike整体功能了解参考MITRE ATT&CK™

Cobalt Strike的C/S架构

  • 客户端(Client GUI)
    • 团队成员使用的图形化界面
  • 服务器(Team Server)
    • 控制 - Team Server是Cobalt Strike中所有payload的主控制器,与victim的所有连接bind/reverse都由Team Server管理。
    • 日志记录 - Cobalt Strike中发生的所有事件 保存在logs文件夹
    • 信息搜集 - 收集在后渗透阶段发现的、或攻击者在目标系统上用于登录的所有凭据credentials
    • 自定义脚本 - cat teamserver可看到该文件是一个简单的bash脚本(可根据自己要求修改) 调用Metasploit RPC服务msfrpcd并启动服务器cobaltstrike.jar

基本步骤

  • (可选步骤)选取C2域名
  • (可选步骤)扩展Team Server - 选取或自定义一个C2通信配置文件Malleable C2 profile 可设置有效的SSL证书等
  • (可选步骤)扩展Client功能 - 使用AggressorScripts修改或扩展Cobalt Strike 3.* 的客户端功能
  • 启动团队服务器Team Server
  • Client 登录Team Server
  • 启动监听器Listener
  • 生成payload
  • (可选步骤)对payload进行免杀 尽量避免被victim的杀毒软件报毒
  • 使用任意途径以实现victim主机执行payload
  • 对victim主机所在网络进行后渗透操作

运行环境

  • Team Server 推荐运行环境
    • Kali Linux 1.0, 2.0 – i386 and AMD64
    • Ubuntu Linux 12.04, 14.04 – x86, and x86_64
  • Client GUI 运行环境
    • Windows 7 and above
    • macOS X 10.10 and above
    • Kali Linux 1.0, 2.0 – i386 and AMD64
    • Ubuntu Linux 12.04, 14.04 – x86, and x86_64

扩展性

CS的自带的某些功能可能已过时,但其扩展性是非常强大,利用好CS的扩展性十分有用!

  • Team Server 的扩展性
    • C2通信配置文件 - Malleable C2 profile
      • 定义C2的通信格式,修改CS默认的流量特征,以对抗流量分析
      • 使用前强烈推荐使用团队服务器上的脚本对配置文件进行本地的单元测试以检查语法./c2lint my.profile
      • 每个Cobalt Strike团队服务器只能加载一个配置文件,如果需要多个配置文件,可以启动多个团队服务器,每个都有自己的配置文件,可从同一个Cobalt Strike客户端连接到这些服务器
    • 外部C2(第三方C2) - External C2 (Third-party Command and Control)
      • C2 over chat protocols
      • C2 over network covert channels
      • C2 trough database fields
      • C2 trough synced locations (owncloud / RSYNC etc.)
      • ...
  • Client GUI 的扩展性

启动团队服务器Team Server

执行sudo ./teamserver看到如下说明:

[*] Generating X509 certificate and keystore (for SSL)
[*] ./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD]

    <host> is the (default) IP address of this Cobalt Strike team server
    <password> is the shared password to connect to this server
    [/path/to/c2.profile] is your Malleable C2 profile
    [YYYY-MM-DD] is a kill date for Beacon payloads run from this server
  • 启动参数./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD]
    • 1 - 必填参数host 本服务器外网IP/域名
    • 2 - 必填参数password Client GUI连接时需要输入的密码
    • 3 - 可选参数Malleable C2 communication profile 指定C2通信配置文件 该功能体现了CS的强大扩展性
    • 4 - 可选参数kill date 指定所有payload的终止日期
# 启动Team Server
 # team server 必须以 root 权限运行 以便于监听端口号为0–1023的listener
 # 默认使用50050端口 监听来自团队成员CS Client的连接请求
 # 例
 sudo ./teamserver this.CShost.com pAsSXXXw0rd

Client登录团队服务器

macOS下启动CS Client GUI ./Cobalt Strike

java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar $*

团队成员A首次登录,需要输入连接信息(会自动保存为一个team server profile下次可直接登录),登录到团队服务器Team Server。

可通过Cobalt Strike - > Preferences - > Team Servers维护本地的登录信息配置文件的列表team server profiles

Client GUI 图形界面

概览

注:使用Aggressor Script可以修改或扩展Cobalt Strike 3.* 的客户端功能和界面

当你没有手动加载过任何Aggressor Script时,登录后的Client GUI默认界面如下图:

逐个讲解

  • 顶部菜单 - CS的所有功能和配置 主要使用ViewAttack

  • toolbar - 工具栏为经常使用的功能提供了一键入口(toolbar中所有功能都可以在顶部菜单找到 所以可设置不显示toolbar)
BeaconCheatSheet.pdf (0.449 MB) 下载附件
点击收藏 | 16 关注 | 6
登录 后跟帖