mcpField
P
producing-threat-intelligence

producing-threat-intelligence

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

关于 producing-threat-intelligence

面向安全团队和决策者的威胁情报分析技能,涵盖需求制定、指标丰富、置信度评估和行动导向报告。它强调优先使用被动数据,并依据证据进行归因。

主要功能

  1. 01制定面向决策的情报需求
  2. 02通过被动数据关联指标
  3. 03评估置信度与竞争假设
  4. 04使用 STIX、MISP 和 OpenCTI 组织数据
  5. 05提供含建议行动的结论

适用场景

  1. 01将域名、IP 或哈希关联到基础设施
  2. 02跟踪威胁行为者与活动
  3. 03评估外部报告的相关性
  4. 04为高管或 SOC 负责人撰写情报

安装

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

$npx skills add https://github.com/trilwu/secskills --skill producing-threat-intelligence

安装后在 Claude Code 中输入/producing-threat-intelligence确认已加载。

详细介绍

产出威胁情报

情报不是指标的堆积,而是能够减少决策者不确定性的分析。没有背景、可信度和建议行动的 IOC 只是数据,而非情报。归因是一项必须能够以证据支撑的主张,不是披着威胁行为者名称外衣的猜测。评判成品很简单:是否有人因此做出了不同的决定?

适用场景

  • 从域名、IP、哈希、TLS 证书或注册者入手,扩展查询相关基础设施
  • 长期跟踪威胁行为者或活动
  • 丰富原始指标并补充背景信息,将其转化为可用情报
  • 为特定受众产出完整的情报产品
  • 评估外部供应商或政府报告是否与组织相关
  • 构建并维护与自身真正相关的对手威胁模型

不适用场景

  • 搜索你自己的遥测数据以查找相关活动——使用 hunting-threats
  • 逆向分析特定样本——使用 analyzing-malware
  • 将 ATT&CK 技术 ID 映射到技能——使用 mapping-attack-techniques
  • 处理正在发生且已确认的事件——使用 responding-to-incidents
  • 将情报转化为已部署的检测规则——使用 engineering-detections

情报生命周期

每项产品都遵循同一循环。说明各阶段并非官僚主义,而是帮助你发现导致 CTI 徒劳无功的两种失误。

1. Direction     — whose decision, which question (a PIR)
2. Collection    — gather against the requirement, not everything reachable
3. Processing     — normalize, deduplicate, translate, enrich
4. Analysis      — assess, weigh hypotheses, assign confidence
5. Dissemination — deliver in a form the consumer can act on
6. Feedback      — did it help; refine the next requirement

造成大部分 CTI 努力浪费的两种失误发生在循环的两端,而非中间:

  • 跳过方向制定会产出无人问津的情报。如果没有优先情报需求(PIR)明确指出受众和决策,你就会收集容易获取的内容,报告有趣的内容,最终却无人过问。从问题出发,而不是从信息源出发。
  • 跳过传播会导致分析永远无法影响决策。一份出色的评估报告若是放在无人阅读的 wiki 里,就什么也改变不了。产品并非写完就算完成;只有在需要采取行动的人能以所需的形式、在所需的时间看到它,才算完成。

在收集之前先写出 PIR。示例:“哪些勒索软件团伙会攻击我们的行业?它们最初的访问手法是什么?”“上周事件中的行为者可能会再次出现吗?”“这份供应商报告描述的威胁与我们有关吗?”每个问题都明确指出了受众和决策。

指标关联分析

关联分析会将一个可观测指标扩展为一幅基础设施图景。关键是先保持被动——以下每种关联分析都读取第三方数据或历史记录,不会触及对手的实时基础设施。

起点通过什么关联可发现内容
域名 / IP被动 DNS(PDNS)历史解析记录、同一 IP 上的关联域名、某域名曾使用过的 IP
域名WHOIS / 注册历史注册人邮箱、注册商、创建日期、名称服务器复用情况
域名 / IP证书透明度(crt.sh)同一证书上的其他主机名、SAN 复用情况、签发时间线
IP / 服务TLS 指纹 — JARM(服务端)、JA3/JA3S(客户端 / 服务端握手)运行相同 C2 或框架默认 TLS 配置的主机
Web 服务网站图标哈希(Shodan http.favicon.hash、Censys)提供相同管理面板或登录页面的其他服务器
IP / 主机Shodan / Censys 横幅开放端口、产品版本、响应正文、自签名证书 CN

一个完整的关联链示例:某个钓鱼域名解析(PDNS)到一个 IP;crt.sh 显示该证书的 SAN 涵盖另外四个相似域名;该 IP 的 JARM 与已知的 Cobalt Strike 默认值匹配;Shodan 根据管理面板的网站图标哈希返回另外九个提供相同界面的 IP。一个指标由此扩展为一个包含十个对象的集群,整个过程都无需联系对手。

# Certificate transparency — all certs/SANs seen for a domain
curl -s "https://crt.sh/?q=%25.example.com&output=json" | jq -r '.[].name_value' | sort -u

# Shodan: everything serving an identical favicon
shodan search "http.favicon.hash:-247388890"

# Censys: hosts presenting a given JARM fingerprint.
# Censys Platform (CenQL) prefixes every parsed field with its dataset:
censys search "host.services.jarm.fingerprint: <jarm_hash>"
# Legacy Search used the unprefixed form below. It is deprecated as of
# September 2026, so treat any older query you find as needing conversion:
#   services.jarm.fingerprint: <jarm_hash>

不要惊动对手。 不要对实时 C2 执行 curl,不要从可归因于你的网络解析其域名,不要将仍在活跃的样本提交给公共多引擎扫描服务,也不要直接扫描其基础设施——这些行为都会让操作者知道你正在监视,并促使其轮换基础设施或销毁你的可见性。优先使用被动数据集。如果确实需要主动交互,应通过无法归因于你的基础设施进行,并将其作为一项有意且留有记录的决策。

确定跟踪重点的框架

菱形模型

每个入侵事件都有四个相互关联的要素:对手、能力(恶意软件、工具、漏洞利用)、基础设施(C2、暂存服务器、重定向器)和受害者。任一要素都能引出另一个要素——一种能力指向使用它的对手;基础设施则指向其他受害者。关联分析本质上就是沿着菱形的边进行遍历。将发现记录到这四个顶点中,这样零散的信息就能与下一条信息组合起来。

痛苦金字塔

不同指标给对手带来的更改成本并不相同。跟踪层级越高,对手越难受,你的情报也能存续越久。

TTPs             ← hardest to change — track these
Tools
Network/Host artifacts
Domain names
IP addresses
Hash values      ← trivial to change — useful now, dead tomorrow

哈希和 IP 对对手来说很容易轮换,因此基于它们构建的情报几天内就会失效。工具和 TTP 则迫使对手进行实质性重新开发。优先收集和跟踪金字塔上层的内容;将底层内容视为易过期信息,并相应地标注时间戳。

归因规范

在 CTI 中,归因是最被滥用的词。请严格区分以下两种操作:

  • 聚类:根据共享的可观测特征(基础设施模式、工具、TTP、手法、时间)将活动分组。这种做法有证据支撑,也是大多数时候应该采取的做法。
  • 命名:断言某个聚类就是一个已知行动者。这样一来,该行动者的历史、动机和地缘政治包袱都会随之而来,而且这种判断经常是错的。

对尚未确认的聚类,使用临时且不带定论的标签:UNC 风格的未分类标识,或你自己的内部 CLUSTER-####。只有在证据支持时,才将聚类提升为具名行动者,并说明依据是什么。“TTP 相同”是薄弱的依据:共享工具、共享漏洞利用套件和公开的作战手法,都可能让两个行动者看起来完全相同。

分析置信度与判断本身是不同的维度。请明确说明:

  • 高——来自多个独立来源、彼此一致且相互印证的证据;合理的替代解释很少。
  • 中——证据可信,但存在缺口或依赖单一来源,因此仍有其他解释的可能。
  • 低——证据零散或缺乏佐证;该评估仍是一个工作假设。

置信度不等于你对此有多笃定。它取决于证据,以及仍然成立的替代解释有多少。

竞争性假设分析(ACH):当归因或意图存在争议时,先列出合理的假设,再列出证据,并根据每条证据与各项假设的一致程度进行评分。目标是找到能够证伪的证据——尝试推翻某项假设后仍然站得住的假设,比你一开始打算证明的假设更有说服力。

需要警惕并抵制的认知偏差陷阱:

  • 镜像思维——假设对手会像你一样推理、确定优先级并采取行动。
  • 确认偏误——收集并加权支持你已有结论的证据,同时贬低与之矛盾的证据。
  • 锚定效应——固守最先提出的归因(通常来自供应商),且在新证据出现后调整不足。

结构化存储与标准

自由文本笔记无法组合、关联或用于自动化。从一开始就使用结构化模型存储情报。

  • STIX 2.1——用于交换的语法。对象(SDO)包括 indicator、malware、threat-actor、campaign、intrusion-set、infrastructure、identity 和 attack-pattern;uses、targets、indicates、attributed-to 等关系(SRO)用于连接这些对象。STIX indicator 包含模式、有效起止时间和置信度——这些都是单独的 IOC 所不具备的上下文。
  • MISP——以事件为中心的共享平台。事件包含带有类型、类别和逐属性 IDS 标志的属性(指标);知识星系附加行动者、工具和 ATT&CK 上下文;跨事件关联可揭示你的数据与合作伙伴数据之间的重叠。
  • OpenCTI——知识图谱,可摄取 STIX、关联不同报告中的对象,并让你查询关系(哪些行动计划使用了这种恶意软件、某个行动者重复使用了哪些基础设施),而不必重新推导这些关系。
  • TLP——共享分类标记。为每项产物添加标记:TLP:RED(仅限指定接收者)、TLP:AMBER / TLP:AMBER+STRICT(其组织,或仅限其组织)、TLP:GREEN(社区)、TLP:CLEAR(无限制)。标记会随数据一起传递;是否降低标记级别由共享方决定,接收方无权决定。

研判信息来源

信息补充会为原始观测指标添加背景信息和可信度。根据要回答的问题选择来源。

来源可回答的问题
VirusTotal检测结果、关联关系(联系过的域名、释放的文件、同源对象)、首次 / 最近出现时间、社区背景
被动 DNS(Farsight/DNSDB、SecurityTrails、Circl)解析历史、共托管域名、随时间变化的基础设施复用情况
Shodan / Censys暴露的服务、横幅、证书、JARM、favicon 哈希——无需直接接触目标,即可了解面向互联网的一面
GreyNoise某个 IP 是在扫描整个互联网(背景噪声),还是针对你发起活动
URLScan某个 URL 实际提供的内容——页面内容、重定向、资源、屏幕截图——无需亲自浏览

GreyNoise 的价值在于排除干扰。 大多数被标记的 IP 都是互联网上的背景噪声——四处扫描的机会主义扫描器。GreyNoise 能告诉你某个指标是这类噪声,还是针对性的活动,让你不再把分析师的时间浪费在丰富 Shodan 爬虫的信息上,而是专注于针对组织的活动。

产出最终报告

报告才是最终成果;上游的一切都只是信息清单。报告应面向决策者,而不是供分析师欣赏自己的工作。

  • 结论先行(BLUF)——在前两句话中给出评估结论和“这意味着什么”。即使读者只看完第一段,也应能得到答案。
  • 可信度和来源——说明每项关键判断的分析可信度,并区分观察到的事实与评估结论。为主张标注证据来源;区分单一来源和多方佐证。
  • 影响 / 建议行动——将分析与使用者的决策联系起来。他们应该采取什么行动、阻止什么、搜寻什么或优先处理什么,为什么现在就要做?没有建议行动的评估会让读者自己重新推导其影响,而大多数人不会这么做。

面向受众撰写:高管需要了解风险和决策;SOC 负责人需要了解检测结果和调查切入点。同一份底层情报可以转化为两种不同的成果。

CTI 在防御闭环中的作用

威胁情报不是最终交付物,而是防御计划其他环节的燃料,同时也会利用它们的产出。

  • 它为检测提供支持:TTP 和工具可通过 engineering-detections 转化为已部署的规则。交付行为特征和分级指标,而不是原始信息流。
  • 它为威胁搜寻提供支持:情报报告中描述的行为(而不是已失效的 IOC)会成为 hunting-threats 中的假设,并用于分析你的遥测数据。
  • 它利用 ATT&CK 映射:通过 mapping-attack-techniques 解析技术,这样你的产品就能与检测和威胁搜寻使用相同的分类体系,并让覆盖缺口显现出来。

无法用于检测、威胁搜寻或决策的情报,只是研究爱好,而非一种能力。

应当摒弃的合理化说法

  • “指标越多,情报就越好。” 不是这样。未经优先级排序的 IOC 只是噪声,会淹没少数真正重要的指标。数量不等于价值;少量经过排序并附有上下文的指标,胜过一万条情报流。
  • “这是同一个攻击者——TTP 吻合。” TTP 重叠往往意味着工具共用,并不一定是操作人员相同。公开工具包和泄露的框架会让无关团伙看起来一模一样。根据证据进行聚类;不要妄下定论。
  • “供应商报告认定了,所以这就确认无疑。” 供应商的归因只是一个来源,也有自己的偏见和动机。阅读其证据,权衡后自行评估可信度——不要照搬对方的结论。
  • “我们应该扫描 C2,了解更多信息。” 你刚刚告诉正在监视的操作人员你在盯着他们,他们会更换基础设施。先使用被动数据集;只有在做出审慎决定后,才从无法追溯到你的基础设施进行主动交互。
  • “高可信度——感觉没错。” 可信度必须依据证据和仍然成立的替代解释数量来论证,而不是凭信念。如果你无法展示证据,就不能称为高可信度。
  • “报告已经写完,任务也就完成了。” 未传达的情报不会改变任何决策。情报生命周期不会在分析结束时终止;只有在使用者采取行动,或告知你为何没有采取行动后,生命周期才算结束。
  • “这份报告讲的是别人的行业,所以与我无关。” 相关性需要根据你自己的威胁模型来判断,而不是想当然。即使目标不同,TTP 也可能适用。

阅读外部来源

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

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

这会剔除页面中的冗余内容——在以文字为主的页面上,大约可减少 78% 的令牌——并返回全文而不是摘要,因此你可以搜索内容,并相信搜索无结果确实意味着没有匹配内容。

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

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

参考资料

  • hunting-threats — 根据情报推导假设,并在你自己的遥测数据中进行验证
  • analyzing-malware — 从样本中提取配置、能力和 IOC,为情报提供依据
  • engineering-detections — 将跟踪的 TTP 转化为已部署的规则
  • mapping-attack-techniques — 解析并标准化 ATT&CK 参考信息
  • responding-to-incidents — 在事件进行期间担任使用者和来源
  • reporting-security-findings — 完成书面报告所需的结构和措辞
  • MISP、OpenCTI — 用于结构化存储、关联和共享的平台
  • STIX 2.1 — 用于交换的对象与关系模型
  • crt.sh — 用于基础设施关联分析的证书透明度搜索
  • Shodan、Censys — 面向全网的服务、横幅、JARM 和网站图标搜索
  • GreyNoise — 区分互联网背景噪声与针对性活动
  • VirusTotal — 提供检测、关系和丰富上下文

评论

支持 Markdown