
专为异步取证数据展示而构建的应用程序,基于 Elasticsearch 后端。
该应用程序旨在导入 Mandiant Redline "collections" 文件,并提供了灵活的搜索、堆叠和标记功能。
该应用的诞生源于无法在单一视图中控制多个调查(或数百个终端)的需求。
为了导入 Redline 审计数据,我们创建了 nightHawkResponse,这是一个完全成熟的 GOpher 应用程序,旨在配合此框架使用。该应用的源代码在此仓库中提供,已编译的二进制文件并运行在 ISO 中,从初次启动即可导入数据。
我们目前正在开发一个新的主要版本,预计于 2020 年 3 月发布。新版本旨在实现以下目标:
我们意识到该仓库中存在太多变动部分,难以有效管理整个仓库、轻松管理实体并保持一切更新。我们还认为,Elastic 中的核心数据应被 Kibana 更有效地利用,因此我们决定通过开发一个插件来实现这一目标,与 Kibana 卓越的工作流程协同工作。
安装
API 文档将在 Wiki 中提供
2016 年 9 月 1 日:版本 1.0.3
功能:
视频演示:nightHawk Response Platform
为了使 nightHawk 用户使用更简单,我们构建了一个 ISO,其中所有内容均已设置好即可使用。这意味着您将获得以下内容:
/opt/nighthawk/etc/nightHawk.json 文件中找到这些设置的列表。启动系统:
在构建带有提供的 ISO 的 VM 之前,请考虑以下事项:
待处理:将 Elastic 服务设置为双节点,每个节点分配四分之一系统内存。这意味着如果您分配了 2GB RAM,每个 ES 节点将获得 512MB,系统将保留 1GB 用于运行。
如果您希望以任何其他方式进行设置,请 SSH 进入盒子并按需配置。
至少应考虑 20GB 的空间。一个审计文件可能很大,因此建议您分配大量存储空间以处理导入多个集合。
待处理:为大规模实例提供基于用户的存储设置。如果您想要设置额外的分区,可以自行完成,只需进行少量更改即可将 ES 数据存储指向您的新分区。_
安装:
下载 ISO:nightHawk v1.0.3
配置硬件,将 ISO 挂载到 VM 中,启动安装脚本。
完成后,在您的浏览器(Chrome/FireFox)中,转到 https://192.168.42.173。
使用 'nighthawk/nighthawk' 登录系统 - 点击“转到站点”进入应用程序
如果您需要访问 Kibana,请转到 https://192.168.42.173:8443。
如果您需要 SSH 进入盒子,登录信息为 admin/nightHawk。
如果您想要更改 IP 地址(在整个应用程序中反映); /opt/nighthawk/bin/nighthawkctl set-ip <新IP地址>
Redline 审计收集脚本可在本仓库的根目录中找到。当使用独立的 redline 收集器时使用此脚本,因为它将返回正确填充 nightHawk 所需的文档。
上传:
重要说明:
创建要上传的审计 zip 文件(Redline 独立收集器):
第 1 步:导航到 Sessions\AnalysisSessionX\Audits<ComputerName>,其中 X 是分析编号,多数情况下为 1。
第 2 步:创建包含审计文件的文件夹的 zip 包,例如 20160708085733
第 3 步:上传 20160708085733.zip
重要说明:使用现有的 HX 审计文件(HX 收集器): FireEye HX 审计文件的扩展名为 .mans。HX 审计文件与 Redline 收集器不同,因为 .mans 文件实际上是一个 zip 文件。这意味着可以直接上传,而 Redline 审计则需要按照上述说明操作。
导航到导航栏上的“上传”图标,选择一个审计 .zip 文件(或多个),输入案件名称(否则系统将为您提供一个),然后提交。如果您使用我们的 Redline 审计脚本构建集合,请遵循上面的“Redline 收集器”说明。
处理完成后,该端点将出现在“当前调查”树节点下。在端点下,您将看到该端点可用的所有审计类型。此 Web 应用的上传功能会生成 pOpen 子进程,调用 GO 应用程序解析 redline 审计并将数据推送到 Elasticsearch。上传有 2 个选项,一个是顺序上传,另一个是并发上传。
请注意:并发上传一次限于 5 个,且可能消耗大量资源;如果机器性能不足,请将使用限制在 2-3 个。
标记:
您可以单击任何表中的任何行(在响应视图中)来标记该数据。标记后,您可以在评论视图中查看评论。
Elasticsearch:
以下是自定义映射(在 git 根目录中提供)以及关于以下内容的不同建议说明:
文档通过 GO 应用被索引为父子关系。选择这种方式是因为它能够提供相对逻辑的路径来查看文档,即父节点是端点名称,子节点是审计类型。在父子关系文档上执行聚合操作似乎也是合理的。堆叠框架依赖于将父节点构建成数组,然后获取特定审计类型的所有子文档聚合。
Elasticsearch 设置需要调优和正确的设计认识。由于我们链接父子文档的方式,理解分片很重要。子文档始终路由到父文档,它不能独立存在。这意味着必须考虑索引上驻留了多少分片。根据我们的理解,选择包含多个节点且每个节点只有一个分片的配置可能是明智的。为了从这种设置中获得性能,我们正在研究分片路由搜索。
我们目前正在设计最佳配置以实现快速搜索。
此应用旨在实现极大的扩展性。从最初的设计概念,我们能够在单 CPU 2GB 的 Ubuntu VM(Macbook Pro)上运行 3 个 ES 节点,并管理约 400 万以上的文档(或 50 个端点导入)。如果投入生产,使用 64/128GB RAM 和 SAS 存储的设置,您将能够在众多分析师同时使用该应用时保持闪电般的文档检索响应时间。
注意事项:
DataTables 混合处理:
有些以摄入的审计类型过于庞大,无法将所有文档返回到表格中。例如,URL 历史和注册表可能返回 15k 个文档给 DOM,渲染这些内容会给客户端浏览器带来压力。为解决这一问题,我们对某些审计类型的结果使用了服务器端处理进行分页。这意味着您还可以在后端使用 Elasticsearch 在审计类型中进行文档搜索。
标记:
目前我们可以标记文档并查看这些评论。我们可以更新或更改它们。分析师能够为文档提供上下文信息,如日期/分析师姓名/评论。
依赖项(均已预装):
elasticsearch-dsl.py
django 1.8
python requests
待办事项:
处理句柄(进行中)。
用于基于时间的生成器的时间选择滑块(进行中)。
当前/先前调查的上下文菜单。
标记上下文。标记系统将集成到 WebSocket 循环中,用于分析师面板之间的实时评论(进行中)。
应用上下文。
能够在上下文之间移动端点。
可能重新设计节点树以基于调查日期驱动。
选择性堆叠,当前启用了根节点选择器。
分片路由搜索。
Redline 审计脚本模板。
与 AngularJS 更深入的集成(进行中)。
响应式设计(进行中)。
用于配置核心设置的管理控制页面(进行中)。
作者与说明:
我们一直在寻找志同道合的人为此项目做出贡献,我们绝不是网页设计大师,如果您认为我们可以做得更好,请提交 pull 请求,如果我们喜欢,我们将合并。
Daniel Eden 与 Roshan Maskey
致谢:
Mandiant Redline 开发者、AngularJS、Django 开发者、Angular-DataTables/DataTables、D3(Bostock)、Elasticsearch/ES-dsl.py、jsTree、qTip、GOlang、Python、Fahad Abdulaal(标志/视频)。
