Caldera 4.0.0 使用说明

初识

CALDERA是一个网络安全平台,旨在轻松自动化模拟攻击,协助红队,自动化事件响应

Github仓库:GitHub - mitre/caldera: Automated Adversary Emulation Platform

环境

  • Linux or MacOS

  • Python 3.7+ (with pip3)、GoLang 1.13+

安装环境

Linux

1.我们到GitHub上的MITER官方CALDERA主页,在Kali上使用GitHub的克隆命令去下载

git clone https://github.com/mitre/caldera.git --recursive --branch

2.源码下载好后进入目录,安装框架所需模块

cd caldera
pip3 install -r requirements.txt

3.启动CALDERA攻击模块

python3 server.py --insecure

Mac

对于mac,还需要安装upx

brew install upx

4.当出现了如图的All systems ready说明可以访问了

Caldera 4.0.0 使用说明_第1张图片

4.1.然后用chrome访问ip:8888即可看到登录页面,默认账号为admin/adminred/adminblue/admin

4.2.如果不想用8888端口,可以修改conf/default.yml或者登录进去之后,在CONFIGURATION->configuration下修改

Caldera 4.0.0 使用说明_第2张图片

攻击演示

攻击介绍

本次攻击演示会涉及到agents、abilities、adversaries、operations模块的利用

·agents连接到caldera的简单的客户端程序,用以接收指令,执行指令并将结果回传给服务端。目前默认的agent是使用go语言进行编写的,方便跨平台。

·abilities是描述ATT&CK矩阵内特定的某一项具体攻击技术(过程),用yml格式保存。

·adversaries配置文件是ATT&CK TTP的集合,旨在主机或网络上创建特定效果。配置文件可用于攻击性或防御性用例,还允许上传自定义payload来作为战术的一部分进行使用

·operations可以使用许多可选配置启动操作,启动操作后,用户可以通过单击操作GUI模式中的"下载报告"按钮,以JSON格式导出操作报告。

·具体详情参考 '概念'

输出结果

初级教程:靶机桌面会先弹出记事本,等记事本消失后再弹出计算器,其次弹出powershell,后台会执行whoami、ipconfig、创建注册表删除注册表、创建a.txt,a写入a.txt,删除a.txt和删除powershell操作

攻击流程

1.选择agents模块,打开模块后,先点击” deploy an agent”(建立一个代理)

Caldera 4.0.0 使用说明_第3张图片

2.然后根据我们的需求选择payload类型和靶机的操作系统,我选择的54ndc47(sandcat)

Caldera 4.0.0 使用说明_第4张图片

3.在这里我选择windows系统的payload

Caldera 4.0.0 使用说明_第5张图片

4.app.contact.http这一栏输入CALDERA服务端的IP和端口号(默认8888)。

Caldera 4.0.0 使用说明_第6张图片

5.复制其中任意一个payload,在靶机上(win+x)打开powershell,去执行生成的payload

Caldera 4.0.0 使用说明_第7张图片

6.回到caldera的agents界面,可以看到靶机已上线

Caldera 4.0.0 使用说明_第8张图片

·以上为靶机上线caldera操作

这里初级用法我是自己内置的手法去攻击,方便内部演示。大家可直接学习中级用法,和高级用法

7.初级用法

7.1用内置好的手法去攻击,这个方式更有利于初学者,上手方便

·选择adversaries,选择攻击

Caldera 4.0.0 使用说明_第9张图片

7.2.这里是攻击流程及方式

Caldera 4.0.0 使用说明_第10张图片

7.3.选择operations,创建一个操作

Caldera 4.0.0 使用说明_第11张图片

7.4.定义这次攻击的名称,选择一个组,选择一个攻击方式,Auto-close策略是否开启。其它几项大家需根据实际情况进行配置,我这里选择默认,点击start即可开始

Caldera 4.0.0 使用说明_第12张图片

7.5.开始之后会自动执行如图这样操作流程

Caldera 4.0.0 使用说明_第13张图片

7.6.可以去View Command去查看执行的操作,View Output查看返回的结果,success代表执行成功,failed代表执行失败

Caldera 4.0.0 使用说明_第14张图片

Caldera 4.0.0 使用说明_第15张图片 

Caldera 4.0.0 使用说明_第16张图片

7.7.受害主机桌面上会先弹出记事本,等记事本消失后再弹出计算器,最后弹出powershell

Caldera 4.0.0 使用说明_第17张图片

8.中级用法

8.1.自己内置手法去攻击,

8.2.选择abilities,去创建一个abilities( 能力)

Caldera 4.0.0 使用说明_第18张图片 

8.3.这里可以选择系统内置的payload,也可不选,我是添加的payload,command是需要执行的命令,其他选项自行描述即可

Caldera 4.0.0 使用说明_第19张图片 

8.4.如何上传自己所需payload

把自己载好的payload直接上传到安装caldera对应的payloads文件夹,然后回到caldera页面刷新即可

cd caldera/plugins/atomic/payloads

Caldera 4.0.0 使用说明_第20张图片

Caldera 4.0.0 使用说明_第21张图片

Caldera 4.0.0 使用说明_第22张图片

 

8.5.选择adversaries,+New新建攻击方式,填好名称,以及描述后create(创建)

Caldera 4.0.0 使用说明_第23张图片

8.6.添加一个ability(能力)

Caldera 4.0.0 使用说明_第24张图片 

8.7.选择刚刚新建的ability,最后保存并添加

Caldera 4.0.0 使用说明_第25张图片 

Caldera 4.0.0 使用说明_第26张图片

8.8.就会发现多了一条adversaries,点击Save Profile(保存)

Caldera 4.0.0 使用说明_第27张图片 

8.9.选择operations去攻击,新建operations,自定义本次攻击名称,选择好对应命名的adversary,最后 start即可

Caldera 4.0.0 使用说明_第28张图片

Caldera 4.0.0 使用说明_第29张图片 Caldera 4.0.0 使用说明_第30张图片 

9.高级用法

9.1.编写yam去进行攻击

---
​
- id: a69794b0-ff99-4e8c-9c9c-1ac96b4fabf5
  name: 内容输出
  description: whoami内容输出到whoami.txt
  tactic: collection
  technique:
    attack_id: T1999
    name: Data from Local System Too
  platforms:
    windows:
      cmd:
        command: |
          whoami > whoami.txt
        parsers:
          plugins.stockpile.app.parsers.ssh:
            - source: remote.ssh.cmd

9.2.保存为gongji.yml,上传到.yml文件指定目录/root/caldera/plugins/stockpile/data/abilities,这里我上传到了指定目录下的collection目录(其他目录都可)

/root/caldera/plugins/stockpile/data/abilities/collection

9.3.使用python3生成,首先倒入uuid包,然后输入命令uuid.uuid4(),生成id

uuid.uuid4()

Caldera 4.0.0 使用说明_第31张图片 

9.4.获得uuid后,再替换掉之前的gongji名称

mv gongji.yml 56a4c7e4-a624-484b-93da-df85d637800a.yml 

Caldera 4.0.0 使用说明_第32张图片 

9.5.去caldera主页刷新即可看到新增的ability

Caldera 4.0.0 使用说明_第33张图片

Caldera 4.0.0 使用说明_第34张图片 

9.6.点击Adversaries,再点击ADD按钮,然后添加自己的yml。输入名称后点击保存。add ability,选择collection,就可以看到我们新增的Technique和ability

Caldera 4.0.0 使用说明_第35张图片 

Caldera 4.0.0 使用说明_第36张图片 

9.7.后面操作同上(8.8)

9.8.输出结果

Caldera 4.0.0 使用说明_第37张图片

 Caldera 4.0.0 使用说明_第38张图片 

概念

abilities

·能力(ability)是描述ATT&CK矩阵内特定的某一项具体攻击技术(过程),用yml格式保存。 · command(必需) 所需要执行的代码

·payload(可选) 该ability运行所需要的文件

·cleanup(可选) 将计算机还原到运行该ability之前的状态

·parser(可选) 将command的结果解析成一个新的facts

Caldera 4.0.0 使用说明_第39张图片

adversaries

·adversaries配置文件是ATT&CK TTP的集合,旨在主机或网络上创建特定效果。配置文件可用于攻击性或防御性用例,还允许上传自定义payload来作为战术的一部分进行使用

Caldera 4.0.0 使用说明_第40张图片 

·可以选择一个配置,右侧会列出当前配置的一些功能

Caldera 4.0.0 使用说明_第41张图片 

·如果需要添加ATT&CK里的某种策略和技术,可以点击add ability添加

Caldera 4.0.0 使用说明_第42张图片

 

·选择某个ability之后会弹出描述和相应的这个ability所执行的命令

Caldera 4.0.0 使用说明_第43张图片 

operations

·配置好以上策略之后,即可在operations发起攻击

Caldera 4.0.0 使用说明_第44张图片 

·定义这次攻击的名称,选择一个组,选择一个配置,Auto-close策略是否开启。其它几项大家需根据实际情况进行配置,我这里选择默认,点击start即可开始

Caldera 4.0.0 使用说明_第45张图片 

Caldera 4.0.0 使用说明_第46张图片

 

·绿色表示成功红色表示失败蓝色表示超时,点击每个时间轴右边的view output可查看运行结果

Caldera 4.0.0 使用说明_第47张图片

access

·在这里,你可以用数据库中的ability给任何agent分配任务--在操作的范围之外。这对于进行初始访问攻击特别有用。要做到这一点,在本地部署一个agent,下发 pre-ATT&CK或初始访问战术任务,指向任何目标。你甚至可以远程部署一个agent,把它作为代理来进行初始访问攻击。在右边,你会看到直接分配给agent的每项ability。

Caldera 4.0.0 使用说明_第48张图片 

atomic

·Atomic 插件从其开源 GitHub 存储库导入所有 Red Canary Atomic 测试

compass

·创建可视化效果以浏览 TTP

·1点击"生成图层"

·2单击"+"以在导航器中打开新选项卡

·3选择"打开现有图层"

·4选择"从本地上传"并上传生成的图层文件

Caldera 4.0.0 使用说明_第49张图片 

debrief

·提供了整体活动信息图,并对选定的一组操作进行分析。它提供操作元数据的集中视图和操作、所使用的技术和策略以及操作发现的事实以图形方式显示。

·该插件还支持以PDF格式导出

Caldera 4.0.0 使用说明_第50张图片

manx

·PLUGINS中的manx终端插件,它通过一个原始的TCP套接字与服务器通信。除了作为一个正常的agent运行之外,Manx还可以作为一个反向shell。当您部署它时,您将看到会话在下面弹出,允许您手动与受影响的主机进行交互。

sandcat

·Sandcat插件,也称为54ndc47,是CALDERA附带的默认代理。54ndc47 是用 GoLang 编写的,以实现跨平台兼容性。

·54ndc47 代理需要在端口 8888 上连接到 CALDERA。

stockpile

PLUGINS中的stockpile为能力数据库,库中包含一组TTP(abilities),adversary配置,数据源(data sources)和规划器(planners)。这些可用于针对目标主机构建动态操作(operations)。

我们以后写的yml,都是要放在这里面的。plugins/stockpile/data/*

training

·里面包含一些使用教程

Fact

·Fact是关于给定计算机的可识别信息(如主机名,用户名,文件扩展名等),fact可在能力(ability)中的command使用变量来引用。

·fact由三部分组成:

·name:一个具有3个属性的描述符,例如 host.user.name,代表主机用户名

·value:任意的字符串,例如“administrator”

·source:重要性得分,默认为1

·blacklist:0或者1,如果为1则表示该fact不可用,例如将(host.ip.address,"192.168.1.5")设置为1,则在横向移动的时候不会尝试该地址

*Advanced*` *->* `*Fact Sources*` -> `+ add fact

Rules

·rule是对CALDERA进行限制或设置界限的一种方式。rule与fact直接相关,应包括在fact表中。

·rule的作用类似于防火墙规则,有三个关键部分:fact、action和match。

·fact指定了rule将适用的fact的名称。

·Action(ALLOW,DENY)将允许或拒绝使用该fact,如果它与规则匹配的话。

·在多个rule匹配同一fact分配的情况下,以最后的为主。

举例:

  - action: DENY
    fact: my.host.ip
    match: .*
  - action: ALLOW
    fact: my.host.ip
    match: 10.245.112.0/24

·规则将允许 CALDERA 仅在 10.245.112.1 到 10.245.112.254 范围内运行

objectives

·可以在app/objects/c_objective.py中检查 Objective 对象

·目标对象利用四个属性,如下所述

·id:目标的id

·name:目标的名称

·description:目标的描述

·goals:目标对象的列表

目前,可以通过创建objective YAML文件或通过objectives web UI模式将目标添加到caldera

id: 7ac9ef07-defa-4d09-87c0-2719868efbb5
name: testing
description: This is a test objective that is satisfied if it finds a user with a username of 'test'
goals:
  - count: 1
    operator: '='
    target: host.user.name
    value: 'test'

·目标可以通过对手web UI绑定到对手,也可以通过向对手的yaml文件添加类似于以下内容的行来绑定到对手

objective: 7ac9ef07-defa-4d09-87c0-2719868efbb5

planners

·策略器(planner)是caldera中的一个模块(单独的py文件),其中包含运行操作(operation)应如何使用哪种能力(ability)以及以什么顺序执行的决策逻辑

Sources

·Advanced中的sourcesred收集的数据片段,事实是可识别的数据片段,由代理收集或在服务器启动时加载。来源是事实的集合。规则是确保不能使用特定特性的边界。

Local.yml文件

·Caldera的配置文件,示例如下所示

Caldera 4.0.0 使用说明_第51张图片 

·其中memory表示使用内存中的数据库,每次关闭caldera不保存本次运行的数据。

Exfil_dir表示agent将收集到的文件发送给caldera时的目录。

contacts

·记录caldera通过所有协议发出的命令

Caldera 4.0.0 使用说明_第52张图片 

obfuscators

·Advanced中的obfuscators为红队行动前混淆模式的介绍,方便红队使用该功能,用于逃避检测。

·目前提供的混淆模式:

·plain-text:明文

·base64:base64编码混淆

·base64jumble:混淆base64中的命令,然后添加字符以逃避base64检测。这可能会导致重复连接运行。

·caesar cipher:凯撒加密混淆

·base64noPadding:base64编码混淆,然后删除填充

·Steganography:图像隐写

configuration

·对通讯地址及插件进行配置

File upload & download

·将文件上传到caldera服务器上,路径为配置文件中的exfil_dir

·curl -F 'data=@path/to/file' http://localhost:8888/file/upload

·下载指定文件到本地中

·curl -X POST -H "file:wifi.sh" http://localhost:8888/file/download > wifi.sh

具体yml样例

---
​
- id: 300157e5-f4ad-4569-b533-9d1fa0e74d74
  name: Compress staged directory
  description: Compress a directory on the file system
  tactic: exfiltration
  technique:
    attack_id: T1002
    name: Data Compressed
  platforms:
    darwin:
      sh:
        command: |
          tar -P -zcf #{host.dir.staged.private}.tar.gz #{host.dir.staged.private} && echo #{host.dir.staged.private}.tar.gz
        cleanup: |
          rm #{host.dir.staged.private}.tar.gz
        parser:
          name: line
          property: host.dir.compress.private
          script: ''
    linux:
      sh:
        command: |
          tar -P -zcf #{host.dir.staged.private}.tar.gz #{host.dir.staged.private} && echo #{host.dir.staged.private}.tar.gz
        cleanup: |
          rm #{host.dir.staged.private}.tar.gz
        parser:
          name: line
          property: host.dir.compress.private
          script: ''
    windows:
      psh,pwsh:
        command: |
          Compress-Archive -Path #{host.dir.staged.private} -DestinationPath #{host.dir.staged.private}.zip -Force;
          ls #{host.dir.staged.private}.zip | foreach {$_.FullName} | select
        cleanup: |
          rm #{host.dir.staged.private}.zip
        parser:
          name: line
          property: host.dir.compress.private
          script: ''

注意:

本教程仅供自己闲暇学习交流使用,请勿用于非法用途。否则,本人不承担任何法律责任!!

你可能感兴趣的:(web安全,网络安全)