mcpField
T
triaging-security-alerts

triaging-security-alerts

github.com/trilwu安全17750 次安装12 周前更新
代码仓库

关于 triaging-security-alerts

帮助安全分析师处理 SIEM、EDR 或云安全告警,并形成可复核的处置结论。它区分真实阳性、良性真实阳性和误报,结合环境基准、证据和限时调查决定关闭或升级。

主要功能

  1. 01区分三类告警处置结论
  2. 02按最有效的判别线索排序调查
  3. 03设置调查时限并处理模糊告警
  4. 04记录证据与处置理由
  5. 05将误报和调优问题反馈给检测工程

适用场景

  1. 01处理 SIEM、EDR 或云安全告警队列
  2. 02判断告警是否应升级为事件
  3. 03复核其他分析师的处置结论
  4. 04识别需调优或移除的噪声检测

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/trilwu/secskills --skill triaging-security-alerts

安装后在 Claude Code 中输入/triaging-security-alerts确认已加载。

详细介绍

安全告警分诊

分诊是安全领域工作量最大的工作,却鲜少有人撰文讨论。其产出是一项日后能够站得住脚的处置结论——最常见的情况是,有人质问你为何关闭了一条早于安全事件发生的告警。

有三个特点让这项工作很难。绝大多数告警都不是安全事件,因此每次分诊时,初始判断都不利于告警确实代表安全事件的可能性。两类错误的代价极不对称:错误升级告警会浪费数小时,错误关闭告警则会让安全事件造成损失。而告警队列还会不断涌入,因此在一条告警上无限投入精力,就意味着从下一条告警那里抽走精力。

适用场景

  • 处理来自 SIEM、EDR 或云安全工具的告警队列
  • 判断告警是否应升级为安全事件
  • 整理积压告警,或调查一条反复出现的特定告警
  • 审查另一位分析师的处置结论
  • 判断是否应调整或移除嘈杂的检测规则

不适用场景

  • 告警已确认是恶意活动——停止分诊,改用 responding-to-incidents;分诊到响应开始时结束
  • 没有告警作为起点,正在搜寻安全受侵迹象——使用 hunting-threats;威胁搜寻由假设驱动,分诊由队列驱动
  • 重写检测规则——使用 engineering-detections 或 writing-sigma-rules; 将分诊发现反馈给相关流程,而不要在队列处理中途直接调整规则
  • 分析告警指向的样本——使用 analyzing-malware
  • 深入调查特定的受侵主机——使用 investigating-windows-endpoints 或相关的云调查技能

三种处置结论,而非两种

常见的错误是将判断简化为二元的真/假。实际有三种结论,而混淆最后两种会毁掉你的检测计划:

处置结论含义正确操作
真阳性检测正确触发,活动具有恶意性升级给安全事件响应团队
良性真阳性检测正确触发,活动已获授权关闭告警,并记录授权背景。不要因此调整掉该规则
误报检测逻辑有误——匹配的活动并非规则声称要匹配的情况关闭告警,并将其作为逻辑缺陷提交给检测工程团队

管理员为内存测试而合法转储 LSASS,是一种良性真阳性:规则完全正常地发挥了作用。将其归为误报,会让人削弱一条设计和运行都完全正确的规则。长此以往,这样就会让检测计划悄然失效。

基准率的影响胜过证据

大多数分诊错误并非源自误读证据,而是源自对先验概率的判断有误。

假设某项检测的准确率为 99%,在 10,000 台主机上触发,其中只有 1 台确实受侵。它大约会产生 100 条误报告警和 1 条真阳性告警。一条阳性告警确实代表主机受侵的可能性约为 1%——即使检测准确率达到 99% 也是如此。这就是为什么“工具标记了它”本身几乎没有说服力,也解释了为什么仅凭工具给出的严重程度就升级告警的分析师几乎总会判断错误。

实际工作中的影响:

  • **严重程度是规则的属性,而不是告警的属性。**检测规则的编写者在你的环境出现之前就已赋予它严重程度。
  • **思考还有什么原因会产生这个信号。**如果日常管理操作、备份软件或漏洞扫描器都能解释它,那么在没有相反证据之前,这些解释远比主机受侵更有可能。
  • **相互印证胜过信心。**两个相互独立的弱信号指向同一结论,对后验概率的影响远大于一个强信号,因为它们的良性解释很少会同时出现。
  • **罕见的事确实罕见——但罕见不代表无害。**明确先验概率的目的,是要求证据真正克服这一先验,而不是为每条告警都寻找借口。

按最省力的判别因素进行告警研判

先处理最能以最低成本区分良性与恶意活动的问题。不要执行固定的补充信息检查清单。

  1. 这是什么资产,谁在使用它? 域控制器和开发人员的笔记本电脑,即使出现相同活动,也应有不同的先验判断。
  2. 这对这台主机或这个用户来说正常吗? 首先查看频率和历史记录。每天持续运行了八个月的操作属于基线,而不是事件。
  3. 是否经过授权? 查看变更工单、维护窗口和部署流水线。大多数良性真阳性到这一步就能判定。
  4. 父进程是什么,进程链又是怎样的? 来源比工件本身更有判别力。powershell.exe 毫无意义;由 winword.exe 启动则另当别论。
  5. 最后再查外部信誉。 哈希和 IOC 查询是最后一个低成本步骤,而不是第一步。信誉良好不能证明不存在针对性活动;信誉不良也仍需结合上述本地上下文判断。

只要有一项足以定论,就立即停止。每条告警都跑完所有步骤,只会让队列赢。

限时处理与升级

开始前先设定时限——常规告警通常为 15 分钟。时限一到,你必须做出选择,不能选择“继续深挖”:

  • 证据足以关闭 → 记录证据后关闭。
  • 证据足以升级 → 升级。
  • 两者都不足 → 仍然升级。 如果一条告警在整个限时内都无法判定,本身就是一种信号。存在歧义不是让告警继续留在队列中的理由,而是说明它需要你无力提供的更多资源。

遇到以下任一情况,应立即升级,无需完成初步研判:确认在核心关键资产上执行了操作;在域控制器或身份提供程序上访问凭据;存在横向移动证据;安全工具被禁用;或任何涉及备份基础设施的情况。拖延处理这些情况,判断错误的代价太高。

关闭的告警必须有证据支撑

记录你检查了什么、发现了什么,以及哪些情况会改变你的判断。没有推理依据的处置结果无法复核,而导致安全事件的告警总会被复查。

需要警惕的说法是*“未发现入侵证据”,而诚实的表述应是“未收集能够显示入侵情况的遥测数据”*。前者终止了问题;后者揭示了可见性缺口,应归入 engineering-detections。

每项处置结果也都应向检测工程提供反馈:误报是逻辑缺陷;反复出现的良性真阳性说明缺少授权上下文筛选条件;一条规则若数月来只产生噪声,就应进行评估并移除,而不是忍受。

应当摒弃的自我安慰

  • “工具将其评为严重,所以这件事很严重。” 严重性是规则作者根据通用环境设定的。你的本地基准率才是依据。
  • “它之前触发过一百次,但每次都没事。” 以往无害只能作为证据,不能作为证明——而且,知道规则会被忽略的攻击者恰恰会利用这一点。检查这次事件的具体情况。
  • “用户说是他们自己操作的。” 这只能证明有人使用了该账户,不能证明没有其他人也使用了该账户。账户遭入侵的用户也会接电话。请结合遥测数据交叉验证。
  • “它自己停止了,所以问题已经解决。” 活动停止,既可能是操作者完成了行动,也可能是转移目标或暂时沉寂。在安全领域,没有问题会自行解决。
  • “我什么都没找到,所以这是误报。” 你没有检查或没有收集的遥测数据中缺少证据,不等于误报。请明确说明你指的是哪种情况。
  • “这是已知误报。” 那就应该调整规则或过滤掉。如果它仍在触发,要么缺少相应调整,要么它实际上是被错误标记的良性真阳性——这两种情况都需要采取行动,而不是直接定性。
  • “我会继续调查,直到确定为止。” 没有“确定”这一选项,而且队列仍在不断涌入。请设定时间限制,遇到模糊情况就升级处理。
  • “升级上报无害事件会显得我很粗心。” 升级处理模糊情况说明系统在正常运作。悄悄关闭模糊事件才是事后审查会发现的失误。

阅读外部来源

将公开的安全公告、规范和供应商报告获取为 Markdown:

curl -sL "https://defuddle.md/<url>"      # scheme in the path is optional

这会剥除页面中的样板内容——对于纯文本页面,令牌数大约减少 78%——并返回全文而非摘要,因此你可以用 grep 搜索,也可以相信未找到结果。

有三种情况不适用。获取 JSON 和 API 响应时应直接获取原始内容,因为可读性提取会破坏结构化数据。获取需要身份验证或由 JavaScript 渲染的页面时,也应直接访问,因为它会以匿名方式获取页面。此外,切勿通过它访问对手基础设施(网络钓鱼链接、C2、恶意软件托管站点)、客户端拥有的主机或演练 URL——请求会离开你的机器并发送给第三方;如果访问的是正在运行的对手基础设施,还会向操作者暴露你的行动。

有些网站会屏蔽提取器,并返回错误信息而非页面内容——例如 freedesktop.org 返回的 {"error":"Failed to fetch: 418 I'm a teapot"}。这表示获取请求遭到拒绝,并不表示来源网站声称相关内容不存在。得出任何结论之前,请直接重新获取该 URL。

参考资料

  • responding-to-incidents — 真阳性事件接下来应如何处理
  • engineering-detections — 误报和规则调整缺口应如何反馈
  • hunting-threats — 与队列驱动的分流处理相对应的假设驱动方法
  • investigating-windows-endpoints — 分流升级后如何深入分析主机

评论

支持 Markdown