用于检测与响应的图谱平台
Grapl 是一个基于图的 SIEM 平台,由事件响应工程师构建并为其服务。
Grapl 已停止作为公司运营。因此,此代码不再积极开发,但将保持归档状态。
Grapl 的核心利用图数据结构,确保您可以高效地查询和连接数据,为检测建模复杂的攻击者行为,并轻松深入可疑行为,以全面了解正在进行的入侵。
有关 Grapl 的更深入概述,请阅读此处。
本质上,Grapl 将获取原始日志,将其转换为图,并将这些图合并到主图中。然后,它将编排攻击签名的执行,并提供进行研究的工具。
您可以在 BSidesLV 或 BSides 旧金山 观看我们的一些演讲。
Grapl 原生支持以下节点:
Grapl 原生支持以下输入格式来生成图:
Grapl 在设计时就考虑了插件——操作员可以轻松支持新的输入日志格式和新的节点类型。
请记住,Grapl 尚未达到稳定的 1.0 状态,并且是一个快速发展的项目。预计会有一些小错误和破坏性变更!
有疑问?尝试在此仓库中开启一个问题,或加入 Grapl Slack 频道(点击邀请)。
身份
如果您熟悉 Sysmon 等日志源,其最佳特性之一是进程被赋予身份。Grapl 将相同概念应用于任何支持的日志类型,从伪标识符(如进程 ID)中辨别出规范身份。
Grapl 随后将此身份概念与其图方法相结合,使推理实体及其行为变得容易。此外,此身份特性意味着 Grapl 仅存储日志中的唯一信息,这意味着您的数据存储增长速度低于日志量的线性增长。
这降低了存储成本,并为您提供了查看数据的中心位置,而不是将数据分散在数千条日志中。例如,给定一个进程的规范标识符,您可以通过选择节点查看其所有信息。
分析器 https://grapl.readthedocs.io/en/latest/analyzers/implementing.html
分析器是您的攻击签名。它们是部署到 Grapl 的 S3 存储桶的 Python 模块,在 Grapl 主图发生变化时被编排执行。
分析器不是尝试为攻击行为确定二元的“好”或“坏”值,Grapl 利用风险概念,然后自动关联风险以揭示环境中风险最高的部分。
当主图更新时,分析器实时执行,使用常数时间操作。Grapl 的分析器框架将自动批处理、并行化和优化您的查询。通过利用常数时间和次线性操作,Grapl 确保随着您的组织增长以及数据量随之增长,您仍然可以依赖查询的高效执行。
Grapl 提供了一个分析器库,使您能够使用纯 Python 编写攻击签名。参见此仓库的示例。
以下是如何检测 svchost.exe 的可疑执行的简要示例:
class SuspiciousSvchost(Analyzer):
def get_queries(self) -> OneOrMany[ProcessQuery]:
invalid_parents = [
Not("services.exe"),
Not("smss.exe"),
Not("ngentask.exe"),
Not("userinit.exe"),
Not("GoogleUpdate.exe"),
Not("conhost.exe"),
Not("MpCmdRun.exe"),
]
return (
ProcessQuery()
.with_process_name(eq=invalid_parents)
.with_children(
ProcessQuery().with_process_name(eq="svchost.exe")
)
)
def on_response(self, response: ProcessView, output: Any):
output.send(
ExecutionHit(
analyzer_name="Suspicious svchost",
node_view=response,
risk_score=75,
)
)
将分析器保留在代码中意味着您可以:
查看 Grapl 的分析器部署插件,了解如何将分析器保留在 git 仓库中,并在推送到 master 时自动部署。
事件响应(Engagements)
Grapl 提供了一种称为事件响应 (Engagement) 的调查工具。事件响应是一个隔离的图,代表分析器判定为可疑的子图。
利用 AWS Sagemaker 托管的 Jupyter Notebooks 和 Grapl 提供的 Python 库,您可以扩展任何可疑子图以涵盖攻击的完整范围。当您使用 Jupyter Notebook 扩展攻击范围时,事件响应图将更新,可视化地表示攻击范围。

事件驱动且可扩展
Grapl 被设计为可扩展——没有服务能够满足每个组织的需求。每个原生 Grapl 服务都通过发送和接收事件来工作,这意味着要扩展 Grapl,您只需开始订阅消息。
这使得 Grapl 可以轻松扩展或集成到您现有的服务中。
Grapl 还提供了一个插件系统(目前处于测试版),允许您扩展平台的能力——添加自定义节点和查询功能。