Cobalt Strike 4.8 用户指南-第一节-Cobalt Strike介绍及安装

一、欢迎使用Cobalt Strike

Cobalt Strike 是一个用于对手模拟和红队行动的平台。用于执行有针对性的攻击并模拟高级威胁行为者的后渗透行动。本节介绍 Cobalt Strike 功能集支持的攻击过程。本手册的其余部分将详细讨论了这些功能。

# 概述

image-20230906092537101

image-20230906100326157

图中的 Intrumentation & Telemetry 大概可以翻译为「终端行为采集 Agent & 云端 行为分析引擎」。 Instrumentation 指的应该是安装在目标主机上的各类日志收集与监控类工 具, Telemetry 指的应该是将这些监控类工具所产出的各位监测日志进行归一化、汇聚到一个统 一分析引擎并等待引擎的研判结果这类的过程。

深思熟虑的有针对性的攻击从都是从侦察开始的。 Cobalt Strike 的系统分析器是一个 Web 应用程序,可以映射目标的客户端攻击面。从侦察中收集的见解将帮助你了解哪些选项最有可能攻击成功。

武器化是将后渗透的攻击载荷与将在目标上执行的文档或漏洞利用配对。Cobalt Strike具有将普通文档转换为武器化工件(Artifacts )的选项。Cobalt Strike还可以选择以各种格式导出其后渗透攻击载荷Beacon,以便与此工具集之外的工件(Artifacts )配对。

使用 Cobalt Strike 的鱼叉式网络钓鱼工具将武器化文档传递给目标网络中的一个或多个人。 Cobalt Strike 的网络钓鱼工具将保存的电子邮件重新用于精准的网络钓鱼。

使用 Cobalt Strike 的Beacon控制目标的网络。这种后渗透攻击载荷使用高级威胁恶意软件常见的异步“低速且缓慢”的通信模式。 Beacon 将通过 DNSHTTP 或 HTTPS 方式与控制端通信。 Beacon 还可以通过常见的代理配置回连多个主机以避免阻塞。

Exercise your target’s attack attribution and analysis capability with Beacon’s Malleable C2 language. Reprogram Beaconto use network indicators that look like known malware or blend in with existing traffic。

使用 Beacon 的 Malleable C2 扩展语言来锻炼目标的攻击归因和分析能力。对 Beacon重新编程,使其看起来像已知恶意软件或与现有流量混合的网络指示器。

所谓的「让流量看上去像一些知名的恶意软件」,如下图中所示的 GitHub 开源 C2 拓展 文件项目中的 crimeware 文件夹,就是通过配置 C2 拓展文件、让 Beacon的流量特征看上去像 Zeus、Asprox 等知名恶意软件。样可以达到掩盖、伪装 Beacon行动的目的。

image-20230906100856864

借助 Beacon 自动化功能以及通过命名管道和 TCP 套接字进行的点对点通信,深入受感染的网络、发现主机并进行横向移动。Cobalt Strike 经过优化,可以捕获信任关系,并通过捕获的凭据、密码哈希、访问令牌和 Kerberos 票证实现横向移动。

使用 Cobalt Strike 的user-exploitation工具展示有意义的业务风险。 Cobalt Strike 的工作流程可以轻松地在受感染的系统上部署击键记录器和屏幕截图捕获工具。使用浏览器劫持来获取受感染目标通过 Internet Explorer 登录的网站访问权限。这种 Cobalt Strike 独有的技术适用于大多数站点,并能绕过两因素身份验证。

Cobalt Strike 的报告功能可以重建客户的参与度。为网络管理员提供活动时间表,以便他们可以在监控设备中找到攻击痕迹。 可以将Cobalt Strike 生成高质量的报告作为独立报告呈现给客户或用作书面叙述的附录。

在上述每个步骤中,你将需要了解目标环境及其防御,并推理出利用可用资源实现目标的最佳方法。这就是规避。 Cobalt Strike 的目标并不是提供开箱即用的规避功能。Cobalt Strike在其潜在配置和执行攻击操作的选项方面都提供了很大的灵活性,可以根据自己的情况和目标进行调整。

# 1.1、安装和更新

Fortra LLC发行了适用于 WindowsLinux 和 MacOS X 的 Cobalt Strike 软件包。

Cobalt Strike使用C/S模式。客户端和服务端可以部署在同一台机器上,也可以分开部署。Cobalt Strike图形界面客户端被称为Cobalt Strike或者Cobalt Strike GUI,用于启动客户端的命令是cobaltstrikeCobalt Strike服务器成为Team Server,用于启动服务器端的命令是teamserver

安装 Cobalt Strike的基本过程包括下载将其压缩包到你的操作系统上,并运行更新。

# 1.1.1、开始之前

在安装Cobalt Strike之前,先仔细阅读本节内容。

系统要求

不管是运行服务端还是客户端都需要以下依赖条件或软件:

Java

Cobalt Strike 的 GUI 客户端和团队服务器需要以下 Java 环境之一:

  • Oracle Java 1.8
  • Oracle Java 11
  • OpenJDK 11

如果你的组织没有允许将 Oracle Java 用于商业用途的许可证,我们建议你使用 OpenJDK 11

支持的操作系统

Cobalt Strike Team Server 可以在Linux 系统上运行,并且已在以下基于 Debian 的 Linux 发行版上进行了测试(其他版本可能有效,但尚未测试):

  • Debian
  • Ubuntu
  • Kali Linux

Cobalt Strike Client支持的操作系统:

  • Windows 7及更高版本
  • MacOS X 10.13及更高版本
  • 带GUI的Linux发行版,比如Debian、Ubuntu和Kali Linux(其他版本可能有效,但尚未测试)

硬件要求

应满足以下最低硬件要求:

  • 2Ghz+ 处理器
  • 2GB 内存
  • 500MB以上可用磁盘空间
  • 在 Amazon 的 EC2 上,至少使用一个 High-CPU Medium (c1.medium, 1.7 GB) 实例。

Linux glibc

请注意,某些 Linux 发行版可能缺失或没有正确版本的 glibc。如果遇到该问题,请查看 Fortra 门户上的知识文章(https://community.fortra.com/kb-nav/kb-article/?id=3cbb3322-1ecb-ec11-a7b5-0022480b2f00&redirect=false)

# 1.1.2、安装OpenJDK

Cobalt Strike使用OpenJDK 11进行了测试,其启动器与正确安装的OpenJDK 11环境兼容。

Linux (Kali或Ubuntu )

1、更新APT软件源

sudo apt update

2、安装OpenJDK 11

sudo apt install openjdk-11-jdk

3、将OpenJDK 11设置为默认java执行器

sudo update-java-alternatives -s java-1.11.0-openjdk-amd64

其他Linux发行版

1、卸载当前的 OpenJDK 软件包

2、从https://jdk.java.net/archive/网站下载OpenJDK for Linux/x64压缩包

3、解压

tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz

4、将 OpenJDK 目录移动到 /usr/local

mv jdk-11.0.1 /usr/local

5、添加环境变量到~/.bashrc文件中:

JAVA_HOME="/usr/local/jdk-11.0.1"
PATH=$PATH:$JAVA_HOME/bin

6、刷新~/.bashrc以使新的环境变量生效:

source ~/.bashrc

MacOS X

1、从https://jdk.java.net/archive/网站下载OpenJDK for macOS/x64压缩包

2、打开终端,进入Downloads/目录

3、解压文件:

tar -zxvf openjdk-11.0.1_osx-x64_bin.tar.gz

4、移动解压文件到 /Library/Java/JavaVirtualMachines/目录

sudo mv jdk-11.0.1.jdk/ /Library/Java/JavaVirtualMachines/

MacOS X 上的 java 命令将使用 /Library/Java 中最高版本的 Java 作为默认值。

如果你看到 JRELoadError 消息,这是因为 Cobalt Strike 中包含的 JavaAppLauncher 存根从设定路径加载库以在存根进程中运行 JVM。发出以下命令来修复此错误:

sudo ln -fs /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin

将 jdk-11.0.2.jdk 替换为你的 Java 路径。下一个Cobalt Strike版本将使用更灵活的MacOS X的Java应用程序存根。

Windows

1、从https://jdk.java.net/archive/网站下载OpenJDK for Windows/x64压缩包

2、将其解压到c:\program files\jdk-11.0.1

3、将 c:\program files\jdk-11.0.1\bin 添加到用户的 PATH 环境变量中

  • 控制面板->系统->更改设置->高级>环境变量
  • 用户变量->PATH->编辑->新建->设置值为c:\program files\jdk-11.0.1->确定

Wayland Desktop不支持

WaylandX Windows系统的现代替代品。虽然Wayland已经取得了长足的进步,一些桌面环境将其用作默认窗口系统。不过,并非所有应用程序或应用程序环境在Wayland上都能 100% 完美运行。仍有错误和问题需要解决。

Java(或Wayland)中存在一些错误,可能会导致图形Java应用程序在Wayland桌面中运行时崩溃。这些错误会影响Cobalt Strike用户。不建议在 Wayland 桌面上使用 Cobalt Strike

确定是否在使用Wayland?

使用echo $XDG_SESSION_TYPE 命令确定是使用的wayland还是 x11

image-20230906110941108

如何在 Kali Linux 上禁用 Wayland

1、用文本编辑器打开 /etc/gdm3/daemon.conf

2、找到[daemon]部分

3、添加WaylandEnable=false保存配置并重启系统。

# 1.1.3、安装Cobalt Strike

安装如下说明安装Cobalt Strike

Cobalt Strike发行包(步骤一和三)包含特定操作系统的Cobalt Strike启动器,支持文件和更新程序。但不包括Cobalt Strike主程序。运行更新程序(步骤四)将下载Cobalt Strike主程序并执行最后的安装步骤。

1、下载适用于受支持操作系统的Cobalt Strike分发包。(提供一封电子邮件,其中包含下载链接)

2、配置好Java环境

3、解压缩下载的Cobalt Strike压缩文件

  • Linux :

    tar -zxvf cobaltstrike-dist.tgz
    
  • MacOS X

    1、双击 cobaltstrike-dist.dmg 文件进行装载

    2、将Cobalt Strike目录拖到Applications目录中

  • Windows

    1、禁用反病毒软件

    2、使用压缩软件解压文件到合适的位置

4、运行更新程序完成安装

  • Linux

    cd /path/to/cobaltstrike
    ./update
    
  • MacOS X

    打开Cobalt Strike目录,双击Update Cobalt Strike.command

  • Windows

    打开Cobalt Strike文件夹,双击运行update.bat

使用许可证密钥更新团队服务器和客户端软件。Cobalt Strike通常按用户授权。团队服务器不需要单独的许可证。

# 1.1.4、许可证授权文件

Cobalt Strike 的许可版本需要有效的授权文件才能启动。授权文件是一个加密的 blob,提供有关你的 Cobalt Strike 产品许可证的信息。这些信息包括:你的许可证密钥、许可证到期日期以及与你的许可证密钥关联的ID号。

如何获取授权文件

内置更新程序在运行时会向 Cobalt Strike 的更新服务器请求授权文件。即使你的 Cobalt Strike 版本是最新的,更新程序也会下载新的授权文件。这允许授权文件在运行时与 Fortra reports.server 中的许可证日期保持一致。

当我的许可证到期时会发生什么?

当授权文件过期时,Cobalt Strike 将拒绝启动。此外,获得许可的 Cobalt Strike 产品每天都会检查授权文件。如果授权文件在 Cobalt Strike 运行时过期,则 teamserver 将继续运行额外 14 天的宽限期。如果在此期间不更换授权文件,teamserver将关闭。

详情:

  • Teamserver 在启动时和每天上午 10 点检查许可证。
  • 当团队服务器启动时,团队服务器许可证到期会记录在事件日志中。
  • 连接到团队服务器的客户端将在许可证到期前 45 天开始显示许可证警告功能区。
  • 在每日许可证检查期间关闭服务器之前,正在运行的团队服务器将有 14 天的宽限期。
  • 如果你需要扩展正在运行的团队服务器的许可证,你可以在不同位置安装/更新 CobaltStrike,并将“cobaltstrike.auth”文件从新安装复制/替换到正在运行的实例中
# 1.2、启动团队服务器

Cobalt Strike 分为客户端组件和服务器组件。服务器组件,也就是团队服务器,是 ``Beaconpayload 的控制器,也是 Cobalt Strike 社会工程学攻击功能的托管主机。团队服务器还存储Cobalt Strike收集的数据并管理日志记录。

Cobalt Strike Teamserver 必须在受支持的 Linux 系统上运行。要启动Cobalt Strike teamserver,使用以下命令运行Cobalt Strike Linux安装文件中的teamserver脚本:

./teamserver <ip_address> <password> [<malleableC2profile> <kill_date>

image-20230906125644333

teamserver脚本使用以下两个必需参数和两个可选参数

IP 地址 -(必填)输入团队服务器的外部可访问 IP 地址。Cobalt Strike使用此值作为其功能的默认主机。

密码 -(必填)输入团队成员将用于将 Cobalt Strike 客户端连接到团队服务器的密码。

C2扩展配置 -(可选)指定有效的C2扩展文件。有关此功能的更多信息,后面会详细讲解

终止日期-(可选)以 YYYY-MM-DD 格式输入日期值。团队服务器将此终止日期嵌入到它生成的每个Beacon`stage`中。Beaconpayload将在此日期之后拒绝运行,如果在此日期后这个 ``Beaconpayload 醒来也会自动结束(对应 Beacon会话中的 exit 选项)。

当团队服务器启动时,它将发布团队服务器的SSL证书的 SHA256 哈希。将此哈希分发给你的团队成员。当你的团队成员连接时,他们的Cobalt Strike客户端将在向团队服务器进行身份验证之前询问他们是否识别此哈希。这是防止中间人攻击的重要保护措施。

# 1.3、启动Cobalt Strike 客户端

1、要启动 Cobalt Strike 客户端,使用适用于你的平台的软件包内的启动器。

​ 1、Linux:

./cobaltstrike

​ 2、MacOS X

​ 在Cobalt Strike目录中双击cobaltstrike

​ 3、Windows

​ 在Cobalt Strike目录中双击cobaltstrike.exe

启动后,将看到一个连接对话框

image-20230906130106463

2、Cobalt Strike 会跟踪你连接的团队服务器并记住你的信息。从连接对话框的左侧选择这些团队服务器配置文件之一,以使用其信息填充连接对话框。使用Alias NamesHost Names按钮切换主机列表的显示方式。活动连接将以蓝色文本显示。你可以通过 Cobalt Strike -> Preferences -> Team Servers来控制主机列表的初始显示方式、活动连接文本颜色以及列表样式。

参数选项:

Alias:输入主机别名或使用默认值,不能为空或以*开头。

Host:指定团队服务器的IP地址,不能为空

Port:服务器的端口(默认为50050)

User:你在团队服务器上的昵称,不能为空。

Password:连接到服务器的密码

3、点击 Connect 按钮来连接到 Cobalt Strike 的团队服务器。

如果你是第一次连接到此团队服务器,Cobalt Strike 将询问你是否识别此团队服务器的 SHA256哈希。

image-20230906131831799

4、如果确认无误,请按是,Cobalt Strike 客户端将连接到服务器并打开客户端用户界面。

image-20230906131949399

Cobalt Strike将会记住这个SHA256哈希值,以便将来连接。你可以通过 Cobalt Strike -> Preferences -> Fingerprints来管理这些哈希值。

# 1.4、分布式和团队行动

使用 Cobalt Strike 来协调红队的分散行动。使用一个或更多的远程主机分阶段的筹划 Cobalt Strike 基础设施。启动团队服务器并让你的团队与其建立连接。

image-20230906132219091

连接至一个团队服务器,你的团队将:

  • 使用相同的会话
  • 共享主机、捕获的数据和下载的文件
  • 通过共享事件日志进行通信

Cobalt Strike 客户端可以连接到多个团队服务器。 点击Cobalt Strike -> NewConnection可以设置新的连接。

当连接到多个服务器时,可以在Cobalt Strike底部切换。

image-20230906133333155

活动服务器将会以蓝色加粗文字线上。每一个团队服务器有它自己的按钮。在一个按钮上点击右键、选择重命名来使这个按钮的名称能够反映这台团队服务器在你行动中的作用。

当连接到多个团队服务器,Cobalt Strike 会汇总所有它连接的团队服务器的监听器。这种聚合允许你从一台团队服务器发送引用了托管在另一台团队服务器上的恶意网站的钓鱼邮件。在你行动的末期,Cobalt Strike 的报告功能会查询所有你连接到的团队服务器、合并这些数据来描述一个完整的行动。

重新连接客户端

当用户使用菜单、工具栏或开关栏服务器按钮启动客户端断开连接时,将显示一个带有重新连接(Reconnect)和关闭(Close)按钮的红色横幅。

image-20230906133902669

点击close关闭窗口。点击Reconnect以重新连接到团队服务器。

如果TeamServer不可用,则会显示一个对话框,询问你是否要重试(是/否)。如果选“是”,则再次尝试连接(如果需要,重复)。如果选“否”,对话框将关闭。

当 TeamServer 发起断开连接或其他网络中断时,红色横幅将显示一条消息,其中包含连接重试的倒计时。这将重复,直到与TeamServer建立连接或用户单击“关闭”。在这种情况下,用户可以与 UI 的其他部分进行交互。

当客户端重新连接时,红色的重新连接栏将消失。

# 1.5、编写Cobalt Strike脚本

Cobalt Strike 可通过它的 Aggressor Script 语言来为其编写脚本。Aggressor Script 允许修改和扩展Cobalt Strike客户端。

Aggressor Script 是 Armitage 的Cortana 脚本语言的精神继任者。

Aggressor Script 是一种脚本语言,用于红队操作和对手模拟,灵感来自可编写脚本的 IRC 客户端和机器人。它的目的是双重的。你可以创建长时间运行的机器人来模拟虚拟红团队成员,与你并排进行黑客攻击。你也可以使用它来扩展和修改Cobalt Strike客户端以满足你的需求。

加载脚本

Aggressor Script内置于Cobalt Strike客户端中通过 Cobalt Strike ->Script Manager 来对脚本进行管理。

image-20230906135020483

Cobalt Strike内部的默认脚本定义了Cobalt Strike的所有弹出菜单,并格式化了Cobalt Strike控制台中显示的信息。通过Aggressor Script引擎,你可以覆盖这些默认值和自定义Cobalt Strike

你也可以使用 Aggressor Script 为 Cobalt Strike 的 Beacon增加新的功能和自动执行某些任务。

要了解有关Aggressor Script 的更多信息,请参考后续章节<Aggressor Script >内容。

# 1.6、在MacOS X上运行客户端

Cobalt Strike 客户端最初可能无法在文件浏览器中显示“文档”、“桌面”和“下载”文件夹的内容。(例如加载脚本、上传文件、生成攻击载荷等)

默认情况下,OSX 限制应用程序对“文档”、“桌面”和“下载”文件夹的访问权限。需要显式授予这些应用程序对这些文件夹的访问权限。

由于Cobalt Strike是第三方应用程序,因此它并不像授予应用程序“Cobalt Strike”访问权限那么简单。你可能需要向运行 Cobalt Strike 客户端的 JRE 授予对文件系统的访问权限。你可以授予对特定文件和文件夹的访问权限或完全磁盘访问权限。

系统可能会提示你进行访问:

image-20230906140109059

如果访问之前被拒绝,你可能需要在 OSX 系统偏好设置/安全性与隐私/隐私对话框中编辑访问权限:

image-20230906140143564

请注意,使用JRE的其他应用程序也将具有此访问权限。

# 说明

本文由笔者在Cobalt Strike官方用户指南原文(https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/welcome_main.htm)基础上编译,如需转载请注明来源。

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值