跳到内容
安全案例与剧本(SOAR)

安全案例与剧本(SOAR)

Security Events 会把检测规则、威胁情报和已连接的安全产品发现的问题转化为案例:每件值得调查的事对应一个案例,关于同一用户、主机或地址的所有检测都会归入其中。分析师在队列中处理案例,剧本则自动或一键对案例做出响应。

工作原理

flowchart TB subgraph sources["检测"] direction LR rules["检测<br/>规则"] ~~~ intel["威胁<br/>情报"] ~~~ products["已连接的<br/>产品"] end sources --> group{"是否已有关于同一<br/>实体的未关闭案例?"} group -->|"是"| join["该检测<br/>并入此案例"] group -->|"否"| open["打开一个新案例"] join --> playbooks["运行剧本"] open --> playbooks playbooks --> work["分析师<br/>处理案例"] work --> close["给出结论后关闭"]

从检测到已关闭的案例

打开 产品 → Security Events → 安全案例 → 未结案例 查看队列。分配给我、无人认领、已关闭案例 和 全部案例 是旁边各自独立的页面,分别列出其名称所指的案例。

开始之前

案例和剧本遵循三个 Security 角色的权限。Project Owner 和 Project Admin 可以执行所有操作。

角色能做什么
Security Admin一切操作,包括删除案例和设置剧本
Security Member打开、分配、修改和关闭案例,撰写备注,运行剧本,以及批准或拒绝剧本的步骤
Security Viewer读取案例、检测、备注、剧本及其运行记录

其中每一项权限也都可以单独授予,从创建案例到批准剧本的步骤都是如此;请参阅 权限参考。

案例从何而来

来源何时打开案例停用方式
检测规则规则匹配时规则的 匹配时 步骤中的 Open a Case on Match
威胁情报某个事件提到已知指标时情报源的 匹配时 步骤中的 Open a Case on Match
已连接的产品导入的产品自身警报达到或高于连接的阈值时在连接的 Polling 步骤中,把 Open Cases From 设为 从未
人员有人从 安全案例 中打开案例,或在事件面板中使用 Open Case 时无

所有来源默认都是打开的。除非你选择其他级别,否则连接会为 高及以上 的警报打开案例;低于该级别的警报仍会作为事件导入。

检测如何分组

每个检测都关于某个实体:即其规则分组所依据的值,例如暴力破解规则中的 IP 地址,或威胁情报匹配所提到的指标。没有实体的检测会单独存在,不与其他检测合并。

  • 如果已有关于该实体的未关闭案例,检测就会并入其中。案例的实体和 ATT&CK 映射随之扩充,其优先级会提升到该检测的优先级,但绝不会降低。
  • 如果没有这样的案例,就会打开一个新案例,以该检测命名,优先级与该检测相同。
  • 再次触发的检测会在它所在的行上累加计数,而不是新增一行。

案例的优先级由检测的严重程度决定:

严重程度优先级
Critical 或 FatalCritical
HighHigh
Medium、Unknown 或 OtherMedium
LowLow
InformationalInformational

处理案例

案例会依次经历四种状态。它可以跳过某个状态,例如直接从 New 关闭的误报,也可以被重新打开。

状态含义
New还没有人查看过
Investigating有人正在查明发生了什么
Contained威胁已无法再造成危害,但仍有清理工作要做
Closed已处理完毕,并对其性质给出了结论

案例页面上有处理它所需的一切:

  • 顶部:Assign to Me、Run Playbook、声明事件 和 Close Case 按钮,状态步骤,以及它们旁边菜单中的优先级。
  • Status200 AI:Status200 AI 对案例的研判、它建议的优先级和剧本,以及背后的证据。请参阅 安全中的 Status200 AI。
  • Detections:触发后打开或并入该案例的检测、触发次数,以及最新的匹配事件。
  • 实体:案例涉及的用户、主机和地址,以及它们最近 7 天在你所有安全事件中的活动。每个实体都可以在 关联分析 中打开。
  • MITRE ATT&CK:案例的检测所映射的战术和技术,每一项都链接到 attack.mitre.org 上的对应页面。
  • 剧本运行记录:每个剧本在该案例上逐步做了什么,以及等待审批的步骤。
  • 备注 和 时间线:团队写下的内容,以及发生过的一切和操作人。

要同时处理多个案例,请在队列中选中它们,然后使用 Assign to Me、Change Status 或 Change Priority。

关闭案例

Close Case 会要求填写结论和一条可选的结案备注:

结论含义
True Positive确实发生了恶意或未经授权的活动
Benign Positive活动真实存在但符合预期,例如渗透测试或管理任务
False Positive检测有误:规则或数据误读了正常活动
Undetermined没有足够的信息来判断

概览页面会统计这些结论。如果某条规则的案例总是以 False Positive 关闭,这条规则就需要调优了。

从 Google SecOps 警报打开的案例,如果其连接打开了 案例关闭时关闭其警报,也会在 Google SecOps 中关闭这些警报,并附上结论和关闭说明:参见 Google SecOps。

声明事件

声明事件 会以你选择的严重程度为该案例打开一个 Status200 事件(incident),并在两者之间建立双向链接:事件的描述中会写明该案例,案例的页眉会链接到该事件。之后由值班、状态页面和事后分析接手。此操作需要一个既能处理案例、又能创建事件的角色。

通知

Status200 会就案例上的三件事通知相关人员。无需任何人做任何设置:一个只点击了 开启推荐设置 的项目,也会通过电子邮件和推送收到其 High 和 Critical 案例的通知。

通知通知谁默认方式
新的安全案例所有能查看项目案例的人:当案例以他们所选的优先级或更高优先级打开,或提升到该优先级或更高时电子邮件和推送,针对 High 和 Critical 案例
分配给我的安全案例案例被分配给的人,以及案例被分配给的团队的成员电子邮件和推送
等待我审批的剧本步骤案例相关人员中能够批准该步骤的人:案例被分配给的人及其团队的成员。如果他们都无法批准,则通知项目中所有能够批准的人电子邮件和推送
  • 只有能查看案例的人才会收到相关通知:Project Owner、Project Admin,以及 Security Admin、Security Member 和 Security Viewer 角色。仅限于某些标签的角色,只会收到带有这些标签的案例的通知。
  • 没有人会因为自己做的事而收到通知:手动打开案例、分配案例或启动运行的人不会收到相应通知。
  • 每个人对一个案例只会收到一次通知。一个以 Medium 打开、之后提升到 Critical 的案例,会在提升时通知选择了 High 或 Critical 的人,而不会再次通知选择了 Medium 的人,因为他们在案例打开时已经收到过通知。
  • 通过 发送测试攻击 发起的测试攻击会打开一个不通知任何人的案例。
  • Critical 案例和等待审批的步骤会立即发送,绝不会被压在 邮件汇总 中延后发送。
  • 案例的 时间线 会显示通知了谁以及何时通知。

选择你收到的通知

每个人都可以在 用户设置 → 通知设置 → 安全 下自行选择:每种通知的渠道(电子邮件、短信、电话、推送、Telegram、Slack、Microsoft Teams 或 Webhook),以及在 新的安全案例 下选择会通知自己的优先级:

选项通知哪些优先级的案例
仅严重Critical
高和严重High 和 Critical(默认)
中及以上Critical、High 和 Medium
低及以上除 Informational 以外的所有优先级
所有案例所有优先级

安全案例不会发送 WhatsApp 消息。推送通知会打开 Status200 应用,其中的链接会在浏览器中打开该案例。

发布到 Slack 和 Microsoft Teams 频道

要发布到频道,请在 产品 → Security Events → 工作区 → Slack(或 Microsoft Teams)下添加一条规则。两者都未连接时,该区域只有一项:连接 Slack 或 Teams。规则会指定要发布到的频道(在 Microsoft Teams 中还包括聊天),并且可以按需指定它针对哪些案例:

条件匹配内容
安全案例优先级严重、High、Medium、Low 或信息
安全案例标题、安全案例描述案例标题或描述中包含的文本,或其开头、结尾的文本
安全案例状态新增、正在调查、Contained 或已关闭
安全案例来源Detection Rule、Threat Intel、Connected Product 或 Manual
安全案例标签案例的标签

这三种通知都会发布到案例当时所匹配的每条规则的频道。一条 安全案例优先级 包含 严重 和 High 中任意一项的规则,会在 High 和 Critical 案例打开时发布它们,并在 Medium 案例提升到 High 时发布它。安全案例永远不会拥有专属频道。

剧本

剧本是在案例上运行的一系列步骤。请在 产品 → Security Events → Playbooks 下从模板或空白创建剧本,然后在它的页面上添加步骤。

剧本何时运行

触发方式运行时机
Case Opened案例打开时运行一次
Detection Added每当有新的检测并入未关闭的案例时
研判为可能恶意当 Status200 AI 的研判把案例判读为 可能为恶意 时,运行一次
Manual仅当有人从案例中运行它时

任何已启用的剧本也可以通过案例上的 Run Playbook 手动运行。自动运行的剧本可以用以下设置缩小范围:

  • For Cases At Least:只针对该优先级或更高优先级的案例。
  • Only For Detections From:只在案例背后的检测来自该来源时运行。
  • Only For These Detection Rules:只在该检测来自这些规则之一时运行。

已停用的剧本既不会自动运行,也不能手动运行。

步骤

类别步骤作用
案例Assign the case把案例分配给某个人、某个团队或两者
案例Set the priority提高或降低案例的优先级
案例Set the status把案例移到 Investigating、Contained 或 Closed,并附上你选择的结论
案例Add a note在案例上写一条备注,例如给分析师的检查清单
案例Add labels为案例添加标签
调查Check entities against threat intel在你的威胁情报中查找每个实体,匹配时可以提高优先级
调查Look up entity activity统计每个实体在最近一段时间内的安全事件,并记录到案例上
通知Email people通过电子邮件向用户和团队发送案例摘要及其链接
通知Post to Slack把案例摘要发布到某个 Slack 频道
通知Post to Microsoft Teams把案例摘要发布到某个 Microsoft Teams 频道
升级Page on-call运行一个值班策略
升级Declare an incident打开一个与案例关联的 Status200 事件
遏制Suspend the user in Okta在 Okta 中暂停案例涉及的用户
遏制End the user's Okta sessions让案例涉及的用户退出 Okta 登录,并吊销其令牌
遏制Contain the host in CrowdStrike通过 CrowdStrike Falcon 对案例涉及的主机进行网络遏制
遏制Isolate the device in Microsoft Defender通过 Microsoft Defender for Endpoint 隔离案例涉及的主机
遏制Unsuspend the user in Okta在 Okta 中取消暂停案例涉及的用户
遏制Lift containment in CrowdStrike解除 CrowdStrike Falcon 对案例涉及的主机施加的网络遏制
遏制Release the device in Microsoft Defender在 Microsoft Defender for Endpoint 中将案例涉及的主机解除隔离
自动化Send a webhook把案例以 JSON 格式 POST 到某个 URL
自动化Run a workflow以案例作为输入,启动一个 Status200 工作流

一个剧本最多有 25 个步骤。它们按顺序运行,每个步骤在前一个完成后才开始。每个步骤还可以设置:

  • Needs Approval:在运行到该步骤之前暂停,直到有人在案例上批准它。切断某人访问的四个步骤始终如此,除非 Security Admin 将其关闭。
  • Only If Threat Intel Matched:除非本次运行中之前的 Check entities against threat intel 步骤发现了已知指标,否则跳过该步骤。
  • Carry On If It Fails:即使该步骤失败,也继续运行下一个步骤。关闭此项时,失败的步骤会停止本次运行。

遏制

遏制类步骤通过与该产品的 安全事件连接 执行操作,这个连接需要的不只是读取权限:

步骤连接所需权限
Suspend the user in Okta、End the user's Okta sessions、Unsuspend the user in OktaOkta System Log一个有权管理用户的 API 令牌
Contain the host in CrowdStrike、Lift containment in CrowdStrikeCrowdStrike Falcon一个具有 Hosts 写入范围的 API 客户端
Isolate the device in Microsoft Defender、Release the device in Microsoft DefenderMicrosoft Defender XDR一个具有 Machine.Isolate 权限的应用

遏制类步骤只作用于案例涉及的用户或主机,绝不会作用于案例提到的所有用户或主机:

  • 案例中某个检测分组所依据的值,例如“不可能的旅行”规则分组所依据的账户,或已连接产品的警报中提到的主机。
  • 案例中被你的威胁情报列为指标的用户或主机。

按地址分组的案例,例如针对你的 VPN 的暴力破解,并不涉及以上任何一种:它的遏制类步骤会被跳过,它尝试过的账户和它攻击的网关都不会被触及。一个步骤最多作用于 10 个用户或主机。它会按名称在产品中查找每一个,并在运行上说明对每一个做了什么:已完成、早已完成、未找到、被拒绝或受保护。

受保护的实体

菜单中 Playbooks 下的 Protected Entities 列出任何剧本都不会遏制的用户和主机,例如紧急访问账户、域控制器和 VPN 网关。值的匹配不区分大小写,* 代表任意字符序列:svc-* 会保护所有服务账户。步骤会把受保护的用户或主机报告为受保护,并且不会触及它。这个列表由 Security Admin 维护。

审批

切断某人访问的四个步骤会等待审批。只有 Security Admin 可以为其中某个步骤关闭 Needs Approval,Status200 会记录是谁关闭的。审批时会在 Act On 下列出该步骤将要作用的用户或主机,每一个都已勾选:取消勾选该步骤不应触及的那些。受保护的用户或主机不会列为可选项。发起运行的人不能批准它的步骤:要由其他人批准,不过发起人仍然可以拒绝该步骤。

撤销

撤销类步骤和它们所撤销的步骤一样,作用于案例涉及的用户或主机。运行停止后,被遏制的用户或主机在其步骤上还会有一个专属按钮:Unsuspend、Lift Containment 或 释放。已结束的 Okta 会话无法撤销。每次撤销都会记录在案例的时间线上和项目的审计日志中。

消息

备注、电子邮件、Slack 帖子和 Teams 帖子都可以使用案例的值:

占位符替换为
{{case.number}}案例编号,例如 CASE-42
{{case.title}}案例标题
{{case.priority}}Critical、High、Medium、Low 或 Informational
{{case.status}}New、Investigating、Contained 或 Closed
{{case.assignee}}案例分配给了谁
{{case.url}}指向 Status200 中该案例的链接
{{case.entities}}案例涉及的用户、主机和地址
{{case.detections}}案例包含的检测数量

没有自定义消息的电子邮件或帖子会发送案例摘要。

运行与审批

每次运行都会逐步列在其案例上,以及 产品 → Security Events → Playbooks → 剧本运行记录 下:

运行状态含义
Queued等待工作进程
Running正在运行其步骤
Waiting for Approval停在一个需要审批的步骤之前
Succeeded每个步骤都已运行或被跳过
Failed某个步骤失败,运行已停止
Cancelled有人取消了它,或拒绝了某个步骤

等待审批的步骤会在运行上显示 Approve 和 Reject,并可附上一条可选的评论。批准后,运行从该步骤继续;拒绝则会结束运行。审批决定、决定人及其评论都会记录在该步骤上、案例的时间线上以及项目的审计日志中。菜单中 Playbooks 下的 等待审批 列出等待决定的运行并显示其数量;剧本运行记录 列出所有运行。

如果某次运行失去了工作进程的响应(例如在重启之后),它会被重新接手:排队中的运行会在 2 分钟后重新排队,30 分钟没有任何动静的运行会被判定为失败。

概览

产品 → Security Events → 概览 是打开该产品时进入的页面:

  • 分配给你的未关闭案例、尚无人接手的未关闭案例,以及等待审批的剧本步骤;每个数字都会打开列出它们的页面。
  • 平均确认时间、平均遏制时间 和 平均关闭时间,基于最近 30 天内打开的案例:分别是从案例打开到有人接手(分配给某个人,或将其移出 New 状态)、到 Contained、到 Closed 所用的时间。仍在等待中的案例不计入平均值。
  • 30 天内每天打开的案例数(按优先级划分),以及 14 天内每天产生的检测数(按来源划分)。
  • 按优先级和状态划分的未关闭案例、最近 30 天的结论、案例背后的 ATT&CK 战术、触发最多的检测,以及被最多检测结果提及的实体。

在这些内容上方,一个横条显示安全的设置情况:来源、检测、案例和剧本,各自带有数字。还没有完成设置的项目会在那里看到 开启推荐设置 和 发送测试攻击;请参阅 安全入门。没有任何需要处理的内容时,页面显示 一切正常,有可以展示的数据时才会显示图表。

查找威胁

  • 实体 按最近一天、一周或一个月内被检测结果提及的次数,对用户、主机、地址和哈希进行排名,并可在 30 天的事件中查找任意值。
  • Rule Library 提供现成的检测规则,覆盖身份、端点、云、网络、Web 和 Kubernetes 威胁。每条规则都是针对所有已连接来源规范化后的字段编写的 Sigma 规则。添加规则 会把它创建为你自己的检测规则,处于启用状态,并且打开的是案例而不是警报;之后可以像其他规则一样在 Detection Rules 下修改它。标记为 推荐 的规则会在 Status200 已有的数据中发现威胁,一个按钮即可添加您还没有的那些规则。
  • ATT&CK Coverage 绘制 MITRE ATT&CK 矩阵,点亮已启用规则所覆盖的技术,并以轮廓标出规则库中的规则能够覆盖的技术。

自动化

  • 工作流:案例或备注在创建、更新或删除时可以启动工作流。Run a workflow 步骤会启动一个以 Webhook 为触发器的工作流。
  • API:与 Status200 的其他部分一样,案例、备注、检测、剧本、运行和受保护的实体也都有 REST API,位于 /security-case、/security-case-note、/security-detection、/security-playbook、/security-playbook-run 和 /security-protected-entity 下。请参阅 API 参考。
  • AI 代理:MCP 服务器提供了用于案例、备注、检测和剧本的工具。请参阅 MCP 服务器。

故障排除

规则匹配了,但没有打开案例

检查规则 匹配时 步骤中的 Open a Case on Match。如果检测涉及的实体已有未关闭的案例,该检测会并入那个案例,而不会另开一个:请在那个未关闭案例的 Detections 下查找它。

案例没有通知到任何人

查看案例的 时间线,其中会显示通知了谁。新的安全案例 通知会发送给案例达到其所选优先级的人,因此 Medium 案例不会通知任何保留默认设置 高和严重 的人。请检查应收到通知的人能否查看安全案例(拥有某个 Security 角色,或是 Project Owner 或 Project Admin),以及他们在 用户设置 → 通知设置 → 安全 下是否开启了该通知。

剧本没有运行

检查剧本是否已启用、它的 触发器 设置是否合适(Case Opened 只在案例打开时运行一次),以及案例是否满足它的 For Cases At Least、Only For Detections From 和 Only For These Detection Rules 设置。手动打开的案例没有检测,因此限定了来源或规则的剧本不会在它上面运行。

遏制类步骤失败

在案例上打开这次运行:该步骤会针对每个用户或主机说明产品是拒绝了操作、没有找到它,还是无法连接。请检查连接的凭据是否有权做出该更改,并使用连接所在行中的 测试连接。

遏制类步骤被跳过

案例不涉及任何用户或主机,例如只涉及一个地址,或者它涉及的每个用户或主机都受保护。在案例上打开这次运行:该步骤会说明是哪一种情况。

后续步骤