目录导航
IRIS介绍
Iris 代表事件响应调查系统(Incident Response Investigation System)。简而言之,它是事件响应分析师的协作平台,允许在技术层面共享调查。它是 Web 应用程序,因此它既可以安装在固定服务器上,也可以安装在笔记本电脑上,以便在可能无法使用互联网的情况下进行漫游调查。
它诞生于在分析师之间分享漫长而复杂的调查的斗争之后。当前的大多数类似平台要么是商业平台,要么是针对事件处理和分类步骤,而不是调查本身。
Iris 还处于早期阶段。已经可以在生产中使用了,但是请做好数据库的备份,不要将接口暴露在互联网上。我们强烈建议使用专用且安全的专用网络。
我可以用 Iris 做什么?
你可以 :
- 根据需要与尽可能多的分析师一起进行调查。每个人都有自己的账户
- 并行运行任意数量的调查
- 对于每项调查:
- 关联客户
- 创建高级摘要
- 以 Kandan 板的形式创建笔记
- 创建 IOC
- 创建资产(计算机、服务器、帐户、防火墙或任何你想要的)
- 将 IOC 与资产相关联
- 深入了解之前在调查中遇到的资产和 IOC
- 创建参考资产和 IOC 的适当时间表
- 从时间线创建攻击的自动图表
- 登记证据
- 通过模块化管道上传和处理证据(例如:EVTX 解析和注入数据库或数据可视化器)
- 设置任务并将其分配给人员以跟踪一切
- 登记调查的每一个步骤
- 基于模板生成报告,自动填充调查中注册的元素
- 生成一份活动报告,其中包含注册的每个步骤以及每个分析师的自动注册条目
- 在所有调查中搜索注释和 IOC
- 开发您自己的模块和管道来处理证据并满足您的需求。这些是通过 RabbitMQ 处理的。

我不能用 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_PASSWORD和DB_PASS(您也可以自定义用户名)
- IRIS 秘密:SECRET_KEY和SECURITY_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 令牌。它可以在左侧面板的用户名和我的设置下找到。

如果令牌暴露并需要更改,可以使用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 的模块,作为社区的示例。让我们用这个来解释如何添加和使用新模块。
模块管理
要添加模块,用户可以单击“+”按钮:

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

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

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

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

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

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

现在模块已配置并启用,让我们看看如何使用它!
注意:作为临时修复,在添加和配置模块后,您必须重新启动 IRIS 服务 (docker),否则工作人员将无法正确安装模块。
如何使用模块
如开头所述,一个模块扩展了 IRIS 的功能。目前,它允许将您的需求证据导入我们所谓的管道,数据将在模块中处理(检查、解析、摄取……)。在我们提供的模块中,IrisEVTXModule 摄取 EVTX 文件,将它们解析为 JSON,然后使用其 HTTP 事件收集器 (HEC) 端点将结果发送到 Splunk 实例。
在 IRIS 中,文件总是在案例的上下文中导入。要导入文件,用户可以单击then选项卡。Manage cases
Update

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

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

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

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

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

报告
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 进行更改,您需要手动更新数据库。
注意力
不要删除和重新创建用户!这将在关系中造成不一致,并可能破坏一切。
- 使用 Python BCrypt 生成新密码的哈希值
import bcrypt print(bcrypt.hashpw(<new_password>, bcrypt.gensalt())
- 连接到 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 是什么意思?
最初是事件响应调查系统。但它可以是您真正想要的任何东西。
官网地址:
项目地址
GitHub:
https://github.com/dfir-iris/iris-web
转载请注明出处及链接