IRIS 事件响应协作平台

IRIS 事件响应协作平台

IRIS介绍

Iris 代表事件响应调查系统(Incident Response Investigation System)。简而言之,它是事件响应分析师的协作平台,允许在技术层面共享调查。它是 Web 应用程序,因此它既可以安装在固定服务器上,也可以安装在笔记本电脑上,以便在可能无法使用互联网的情况下进行漫游调查。

它诞生于在分析师之间分享漫长而复杂的调查的斗争之后。当前的大多数类似平台要么是商业平台,要么是针对事件处理和分类步骤,而不是调查本身。

Iris 还处于早期阶段。已经可以在生产中使用了,但是请做好数据库的备份,不要将接口暴露在互联网上。我们强烈建议使用专用且安全的专用网络。

我可以用 Iris 做什么?

你可以 :

  • 根据需要与尽可能多的分析师一起进行调查。每个人都有自己的账户
  • 并行运行任意数量的调查
  • 对于每项调查:
    • 关联客户
    • 创建高级摘要
    • 以 Kandan 板的形式创建笔记
    • 创建 IOC
    • 创建资产(计算机、服务器、帐户、防火墙或任何你想要的)
    • 将 IOC 与资产相关联
    • 深入了解之前在调查中遇到的资产和 IOC
    • 创建参考资产和 IOC 的适当时间表
    • 从时间线创建攻击的自动图表
    • 登记证据
    • 通过模块化管道上传和处理证据(例如:EVTX 解析和注入数据库或数据可视化器)
    • 设置任务并将其分配给人员以跟踪一切
    • 登记调查的每一个步骤
    • 基于模板生成报告,自动填充调查中注册的元素
    • 生成一份活动报告,其中包含注册的每个步骤以及每个分析师的自动注册条目
  • 在所有调查中搜索注释和 IOC
  • 开发您自己的模块和管道来处理证据并满足您的需求。这些是通过 RabbitMQ 处理的。
IRIS 事件响应协作平台

我不能用 Iris 做什么?

这是我们需要你的部分。Iris 旨在成为一个协作项目,因此欢迎提出任何想法。您可以前往该项目的 Github 并针对该想法创建一个问题。

Iris 是由什么制成的?

Iris 主要用 Python 3 编码。还有一些 HTML、CSS 和 javascript 用于界面。在幕后,Iris 依赖于:

  • 用于 Web 引擎的 Flask
  • 用于数据库的 SQLAlchemy 和 PostgresSQL
  • 用于作业处理的 RabbitMQ
  • 用于反向代理的 Nginx

快速入门

使用 Iris 的最直接和推荐的方法是使用 Docker。这是在这里介绍的。

1. 先决条件

硬件

Iris 不是很聪明,可以在小型笔记本电脑(4 核,8Gb 内存)上运行。然而,对于大型组织和大量使用,它需要大大扩展。我们还没有基准测试,但请记住,数据库可以快速增长,模块可以根据其目的提供资源。源代码包括一个突发测试,您可以调整该测试以重新创建 Iris 可能面临的负载。

Docker

需要 Docker 和 docker compose 来构建和运行项目。根据操作系统的不同,您可以在Docker的官方网站上找到安装它们的所有信息。

2. 构建

你已经找到了 Iris 的家并安装了 Docker 和 Docker compose,是时候构建容器了。Iris 分为 5 个 Docker 服务,每个服务都有不同的角色。

  • app - iris_webapp: 核心,包括web服务器、DB管理、模块管理等。
  • db: 一个 PostgresSQL 数据库
  • RabbitMQ:用于处理作业排队和处理的 RabbitMQ 引擎
  • worker: 依赖 RabbitMQ 的作业处理程序
  • nginx:一个 NGINX 反向代理

每个服务都可以独立构建,例如用于开发。在此 QuickStart 中,所有内容都将立即构建。

首先,克隆 iris-web 存储库。然后,在项目的根目录下,将.env.model文件复制到.env 中。如果您只是想尝试或开发,可以跳过此部分。如果在生产中使用,请在项目根目录配置.env文件:

  • Nginx:你可能想指定你自己的证书,如上所述
  • 数据库凭据:POSTGRES_PASSWORDDB_PASS(您也可以自定义用户名)
  • IRIS 秘密:SECRET_KEYSECURITY_PASSWORD_SALT

最后,您可以构建所有内容。

git clone https://github.com/dfir-iris/iris-web.git
cd iris-web
cp .env.model .env
# [... 可选地,按照上面指定的方式进行一些配置 ...]
docker-compose build

第一次构建应用程序可能需要很长时间。之后,如果服务需要更新,构建过程会更快。

3. 运行

需要最后一个命令:

docker-compose up

Iris 将在 Web 界面、端口 4433、HTTPS 协议上可用。默认情况下,administrator将创建一个帐户。密码会在第一次启动 Iris 时打印在 stdout 中,请注意。如果你想在第一次启动时定义一个管理员密码,你也可以在app docker实例中创建和定义环境变量IRIS_ADM_PASSWORD(参见webApp Dockerfile)。

应用程序接口

Iris 旨在可插入以适应现有环境并与之集成。

通过 REST API,人们几乎可以通过 Web 界面完成尽可能多的事情。

API 密钥

第一步是获取 API 密钥。每个用户都会自动获得一个 API 令牌。它可以在左侧面板的用户名和我的设置下找到。

IRIS 事件响应协作平台

如果令牌暴露并需要更改,可以使用Renew选项生成一个新令牌。更新令牌会撤销前一个令牌。

端点

此处提供了 API 可访问的端点列表。

使用方法

API 令牌是一个 Bearer,在发出请求时需要出现在头Authorization 中。例如,要列出所有案例:

 curl --request GET \
--url http://localhost:8000/manage/cases/list \
--header 'Authorization: Bearer mWpCUVNzBMU5EnbIAK50jLPhYjKBTHZjobdogc_n_yixpJTmt9tzAf8WYDI7m5XgB9wCJnlaXlHIh9RZjtp2fA' \
--header 'Content-Type: application/json'

撤销令牌的唯一方法是更新当前令牌。完成后,之前的 API 令牌在数据库中不再存在并且变得无效。

模块

Iris 能够通过模块化管道(例如:EVTX 解析和注入数据库或数据可视化器)上传和处理证据。模块化管道实际上是 Python 模块,必须安装在 iriswebapp 和 worker 的 Python 环境中(请参阅快速入门)。一旦安装在 Python 环境中,模块就可以在Advanced> 中进行管理Modules

此部分仅适用于具有 Admin 角色的用户。

我们提供了一个名为 IrisEVTXModule 的模块,作为社区的示例。让我们用这个来解释如何添加和使用新模块。

模块管理

要添加模块,用户可以单击“+”按钮:

IRIS 事件响应协作平台

然后用户必须输入预安装模块的名称。必须使用 pip 包的名称。

IRIS 事件响应协作平台

如果一切正常,该模块将出现在列表中。它当前被禁用,需要配置才能启用。为此,用户可以单击模块的名称:

将出现一个新文本框,显示有关模块的信息以及要配置的参数列表。必须配置每个必需参数才能启用模块。

IRIS 事件响应协作平台

配置完所有必填参数后,“启用按钮”就会出现,用户最终可以启用该模块。

IRIS 事件响应协作平台

就这样!用户可以在摘要中确认该模块确实已启用并可以使用。

IRIS 事件响应协作平台

最后,用户可以通过单击相应的按钮来禁用或删除模块。

IRIS 事件响应协作平台

现在模块已配置并启用,让我们看看如何使用它!

注意:作为临时修复,在添加和配置模块后,您必须重新启动 IRIS 服务 (docker),否则工作人员将无法正确安装模块。

如何使用模块

如开头所述,一个模块扩展了 IRIS 的功能。目前,它允许将您的需求证据导入我们所谓的管道,数据将在模块中处理(检查、解析、摄取……)。在我们提供的模块中,IrisEVTXModule 摄取 EVTX 文件,将它们解析为 JSON,然后使用其 HTTP 事件收集器 (HEC) 端点将结果发送到 Splunk 实例。

在 IRIS 中,文件总是在案例的上下文中导入。要导入文件,用户可以单击then选项卡。Manage casesUpdate

IRIS 事件响应协作平台

在 中,用户可以选择将文件发送到所需模块的管道。在我们的示例中,指的是 IrisEVTXModule 模块。下面,用户可以填写相应管道所需的参数。参数可以是可选的。最后,用户可以导入一个或多个文件,然后单击以开始由模块处理。Processing pipelineEVTX pipelineUpdate

您可以在下图中看到用户将导入四个 EVTX 文件。

IRIS 事件响应协作平台

用户可以使用各自的进度条跟踪不同文件的上传。

IRIS 事件响应协作平台

上传后,可以在仪表板的日志中观察任务的状态。Last automated tasks

IRIS 事件响应协作平台

单击“详细信息”会显示有关任务处理的信息。

IRIS 事件响应协作平台

模块对文件进行处理后,将导入的文件列表保存在Evidences相应案例的选项卡中。

IRIS 事件响应协作平台

报告

Iris 能够根据调查数据生成报告。可以在Advanced> 中管理报告模板Templates

笔记

此部分仅适用于具有 Admin 角色的用户。

模板结构

报告模板由标签组成,然后由 Iris 的模板引擎处理和归档。只要模板尊重标签,它们就可以具有任何形式。Iris 的源代码中提供了一个报告示例,.source > app > templates > docx_reports

以下标签可用。没有一个是强制性的。如果标签输入错误,生成步骤将产生错误消息。

暗示

标准对象可以通过. 列表对象可以循环:{{ objectname }}

{% for object in object_list %}
  {{ object.attribute }}
{% endfor %}
案例名称
案件名称

案例.描述
案例描述

case.open_date
开案日期

case.close_date
案件结束日期

case.opened_by
最初打开案例的用户

case.for_customer
与案例相关的客户

case.soc_id
与案例相关联的 SOC ID 号

证据
证据对象列表(见下文 -evidence作为循环变量给出)

证据.文件名
证据文件名

证据.date_ added
注册日期

证据.file_hash
证据的哈希

证据. added_by
添加证据的用户

国际奥委会
IOCs 对象列表(见下文 -ioc作为循环变量给出)

ioc.ioc_value
国际奥委会的价值

ioc.ioc_description
国际奥委会说明

ioc.ioc_type
国际奥委会类型

ioc.ioc_tags
标签链接到国际奥委会

笔记
笔记对象列表(见下文 -note作为循环变量给出)

note.note_title
笔记的标题

note.note_content
笔记内容

note.note_creationdate
笔记的创建日期

note.note_lastupdate
上次更新日期

任务
任务对象列表(见下文 -task作为循环变量给出)

task.task_title
任务名称

task.task_description
任务描述

task.task_open_date
任务开启日期

task.task_last_update
任务的最后更新

task.task_close_date
关闭日期

task.task_status
任务状态

task.task_tags
标签任务

时间线
事件对象列表(见下文 -event作为循环变量给出)

event.event_title
活动名称

event.event_content
活动内容

event.event_raw
活动的原始内容

event.event_date
事件发生的日期

event.event_source
事件来源

事件.类别
活动类别

event.event_tags
活动标签

event.last_edited_by
上次编辑事件的用户

事件.资产
链接到事件的资产名称列表

问答

案例

我可以恢复已删除的案例吗?

否。从数据库中删除案例并提交更改。除非您对数据库进行了备份(我们建议这样做),否则不会回来。

我可以恢复已删除的案例对象吗?

不会。每个对象(例如 IOC、资产、事件、笔记等)都会立即从数据库中删除并提交更改。

我可以添加新的资产类型吗?

是的。从具有管理权限的用户转到高级 > 资产类型。

我可以添加新的 IOC 类型吗?

还没有。但在未来的版本中它可能是可能的。

我可以为同一个客户创建两个同名的案例吗?

是的。案例使用唯一编号进行标识,因此它们可以具有相同的名称。

我可以将案例视图限制为一组用户吗?

不,请参阅安全。

我可以更改现有案例的名称或客户吗?

这些更改目前无法实现,但可能会在未来版本中实现。

操作

什么是密码策略?可以改变吗?

目前,密码策略是硬编码的,无法更改。它至少应为 12 个字符,并包含一个大写字母和一个数字。

我可以更改我的个人资料图片吗?

不,暂时不行。这不是我们的优先事项,它将在未来版本中发布。

我丢失了管理员密码,可以找回吗?

密码经过哈希处理,因此无法恢复。但是你可以改变它。

如果您有其他管理员用户

以该用户身份登录,只需前往高级 > 用户部分,然后更改管理员密码。

如果您没有其他管理员用户

您不能通过 Iris 进行更改,您需要手动更新数据库。

注意力

不要删除和重新创建用户!这将在关系中造成不一致,并可能破坏一切。

  1. 使用 Python BCrypt 生成新密码的哈希值
import bcrypt
print(bcrypt.hashpw(<new_password>, bcrypt.gensalt())
  1. 连接到 Postgresql 数据库iris_db并更新密码
/ # su postgres
/ # psql
postgres=# \c iris_db
postgres=# UPDATE user SET password = '<hash>' WHERE "user".name == 'administrator';

我可以删除用户吗?

不可以。为了保持数据库的一致性,很遗憾,如果用户进行了某些活动,则无法删除他们。

我可以删除客户吗?

不可以。为了保持数据库中的一致性,很遗憾,如果客户与案例相关联,则无法删除他们。

我可以创建组织或群组吗?

不。在未来的版本中可能有可能,但现在最好为受限情况启动一个新实例。

我可以创建更多角色吗?

不。在未来的版本中可能有可能,但现在最好为受限情况启动一个新实例。

我可以防止资产和 IOC 的反向引用吗?

不。在未来的版本中可能有可能,但现在最好为受限情况启动一个新实例。

我的报告模板未生成并生成错误

请三重检查标签中的错别字,因为没有容错能力。

整合

我可以用外部资源丰富 IOC 吗?

一些连接器已开发,但尚未发布。它们可能会在未来的版本中添加。在 app > iris_engine > connector > misp4iris 中有 MISP 的前提。

有 API 客户端吗?

还没有,但将来可能会有。

安全

我可以限制案例吗?

不。在未来的版本中可能有可能,但现在最好为受限情况启动一个新实例。

我可以在互联网上公开 IRIS 吗?

不 !请不要。该平台只能在受限环境中访问。

我发现了一个安全问题,我可以获得赏金吗?

不 – IRIS 是免费和开源的,因此没有赏金。请尽快报告,以便我们修复。

杂项

IRIS 是什么意思?

最初是事件响应调查系统。但它可以是您真正想要的任何东西。

官网地址:

https://dfir-iris.github.io/

项目地址

GitHub:

https://github.com/dfir-iris/iris-web

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。