Splunk 威胁情报丰富化实战指南:基于 STIX/TAXII、CIM 数据模型与 IOC 置信度体系构建 TI 管道
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
本指南以 Anthropic-Cybersecurity-Skills 仓库中 standards.md 为核心骨架,系统讲解在 Splunk Enterprise Security 中落地威胁情报(Threat Intelligence)丰富化的完整链路:从 STIX/TAXII、OpenIOC、OCSF 等情报标准与 Splunk CIM 数据模型的对应关系,到 IOC 类型与置信度阈值的设计,再到 KV Store 集合、lookup 表、correlation search 与多源丰富化管道的工程实现。读完本文,你将掌握一套可复制的"情报接入 → 归一化存储 → 关联匹配 → 事件丰富化"的 SOC 检测增强方案,并能直接复用仓库中的配置片段与 Python 参考实现。
一、为什么需要威胁情报丰富化
Splunk Enterprise Security(ES)中的 Threat Intelligence Framework 能让 SOC 团队自动将失陷指标(IOC)与安全事件关联起来。框架负责摄入威胁情报源,把指标归一化写入 KV Store 集合,再通过基于 lookup 的关联搜索(correlation search)标记出命中的事件。Splunk Threat Intelligence Management 则进一步将多来源的收集、归一化和丰富化集中管理,让分析人员在事件发生时立刻获得威胁上下文,显著缩短告警分诊时间。
该技能位于本仓库的soc-operations子域,通过 SKILL.md 的元数据声明,它覆盖了 NIST CSF 的 DE.CM-01(持续监控)、DE.AE-02(事件关联)、RS.MA-01(事件响应流程)等控制项,并与 MITRE ATT&CK 的 T1071(应用层协议)、T1105(工具传输)、T1041(C2 信道外传)技术点对应,可作为合规落地与攻击检测的双重依据。
适用场景
- 部署或配置 Splunk 环境的威胁情报丰富化能力;
- 建立与合规要求对齐的安全控制(如 NIST CSF 连续监控与事件分析);
- 建设或改进本领域的安全架构;
- 开展需要该实现支撑的安全评估。
前置条件
- Splunk Enterprise Security 7.x 或更高版本;
- Threat Intelligence Management 插件或 Threat Intelligence Framework;
- 外部威胁情报源的 API Key(如 MISP、OTX、VirusTotal、AbuseIPDB);
- 启用并正确配置 KV Store;
- 具备配置 modular input 的管理员权限。
二、威胁情报标准:情报的"语言"与"运输协议"
standards.md 首先界定了情报世界的关键标准,它们是构建管道时必须理解的基础。
STIX(Structured Threat Information eXpression)
- STIX 2.1 是当前表示威胁情报的标准版本,用于在威胁情报平台与 SIEM 之间交换情报;
- 定义了一组标准化对象:
Indicator(指标)、Malware(恶意软件)、Attack Pattern(攻击模式)、Threat Actor(威胁行为者)、Campaign(攻击活动)等; - 在 Splunk 场景中,STIX 通常作为情报平台的交换格式(interchange format),经 TAXII 传输后由 modular input 解析落入 KV Store。
TAXII(Trusted Automated eXchange of Indicator Information)
- 是承载 STIX 数据的传输机制;
- TAXII 2.1 提供 RESTful API 用于订阅情报源集合;
- 支持Collection(集合)与Channel(频道)两种共享模型,Collection 模型最常见于订阅威胁情报服务。
在 SKILL.md 中,TAXII 源通过threatlist类型 modular input 接入,直接指定 TAXII 2.1 的 URL 与 Collection 名称即可(见下文"接入配置")。
OpenIOC
- Mandiant 提出的开源 IOC 共享框架;
- 基于XML 的指标定义格式,适合表达复杂的组合型 IOC 规则(如"某文件同时出现于某进程且访问某域名"),在需要精确匹配多个条件的场景仍有价值。
OCSF(Open Cybersecurity Schema Framework)
- 用于归一化安全事件数据的行业标准;
- OCSF 1.0 于 BlackHat 2023 发布;
- 它与 Splunk CIM 的定位一致——把异构安全事件映射为统一字段,从而让情报匹配与数据分析基于同一套语义,减少字段差异带来的误报与漏报。
三、Splunk CIM 数据模型与 TI 关联字段映射
情报丰富化的核心难点之一,是"情报字段"与"事件字段"的对应。standards.md 给出了 Splunk CIM 中各数据模型与 TI 关联字段的标准映射:
| 数据模型(Data Model) | TI 关联字段 |
|---|---|
| Network_Traffic | src_ip, dest_ip, dest_port |
| Web | url, http_user_agent, domain |
| src_user, file_hash, url | |
| Endpoint | process_hash, file_hash, dest |
| Authentication | src_ip, user, app |
| DNS | query, answer, src_ip |
配合 api-reference.md 中 ES TI Framework 的集合-模型对应关系,可以看到每个情报集合都服务于一个或多个数据模型:
| Collection | Lookup | 数据模型 |
|---|---|---|
| ip_intel | ip_intel_lookup | Network_Traffic |
| domain_intel | domain_intel_lookup | Network_Resolution |
| file_intel | file_intel_lookup | Endpoint |
| email_intel | email_intel_lookup | |
| http_intel | http_intel_lookup | Web |
实际使用中,correlation search 会以tstats聚合数据模型字段,再lookup命中情报集合,例如 api-reference.md 中给出的基础匹配:
| tstats summariesonly=t count from datamodel=Network_Traffic by All_Traffic.dest_ip | rename All_Traffic.dest_ip as ip | lookup ip_intel_lookup ip OUTPUT threat_key description | where isnotnull(threat_key)四、IOC 类型、Splunk 字段与置信度阈值
为了控制误报,standards.md 对不同 IOC 类型设定了差异化的置信度阈值(Confidence Threshold):
| IOC 类型 | Splunk 字段 | 置信度阈值 |
|---|---|---|
| IP 地址 | ip_intel | > 70% |
| 域名 | domain_intel | > 70% |
| 文件哈希(SHA256) | file_intel | > 80% |
| URL | url_intel | > 75% |
| 邮箱地址 | email_intel | > 80% |
这套阈值的设计逻辑值得关注:
- IP/域名的生命周期短、被共享范围大,故阈值相对较低(70%),以捕捉更多 C2、扫描器等短暂指标;
- 哈希与邮箱的误伤成本高(哈希可能撞上合法文件、邮箱可能被滥用举报),故阈值更高(80%),只在证据充分时告警;
- URL 介于两者之间(75%),兼顾了情报新鲜度与误报控制。
在 correlation search 中,阈值通过where子句落实。例如 SKILL.md 的域名关联搜索:
index=dns sourcetype=stream:dns query_type=A OR query_type=AAAA | lookup domain_threat_intel_lookup domain as query OUTPUT threat_type as domain_threat, confidence as domain_confidence, source as ti_source | where isnotnull(domain_threat) AND domain_confidence > 70 | stats count dc(src_ip) as unique_sources values(src_ip) as source_ips by query, domain_threat, ti_source | eval severity=case(domain_confidence > 90, "critical", domain_confidence > 70, "high", true(), "medium") | eval description="DNS queries to malicious domain ".query." from ".unique_sources." hosts - Threat: ".domain_threat同时,template.md 中的 KV Store 集合模板也明确了confidence字段的合法取值范围为 0–100,severity取值限定为 critical/high/medium/low,方便你在接入新情报源时对齐 Schema。
五、威胁情报框架架构:从情报源到 Notable Event
SKILL.md 给出了完整的管道架构,这也是 workflows.md 中"TI Feed 集成工作流"的落点:
External TI Sources (STIX/TAXII, CSV, API) | v Modular Inputs (download and parse feeds) | v KV Store Collections (normalized IOC storage) |-- ip_intel |-- domain_intel |-- file_intel |-- url_intel |-- email_intel | v Threat Intelligence Lookups | v Correlation Searches (match events against IOCs) | v Notable Events (enriched with TI context)对应的标准运维工作流(workflows.md)分为六个阶段:
- 识别相关 TI 源:商业情报源(Recorded Future、Mandiant)、开源情报源(OTX、AbuseIPDB、VirusTotal)、行业 ISAC、内部威胁列表;
- 配置 Modular Inputs:设定轮询间隔、配置认证、把情报源字段映射到 Splunk 字段;
- 归一化到 KV Store:解析原始情报数据、映射标准字段名、设置置信度、追加来源归属;
- 创建 Lookup 定义:编写 transforms.conf 条目、配置字段映射、在合适位置启用 automatic lookup;
- 构建关联搜索:用 IOC lookup 匹配事件、叠加资产/身份丰富化、基于置信度设置严重级别;
- 监控与维护:跟踪情报源新鲜度、移除过期指标、统计各来源命中率。
IOC 生命周期管理
workflows.md 同时定义了指标从进入到退出的完整生命周期:
Ingestion --> Validation --> Active Use --> Aging --> Expiration --> Removal | | | | | v v v v v Raw feeds Dedup and Correlation Reduce Archive parsed confidence matching confidence or delete scoring weighting这与仓库中的 process.py 实现一一对应:ThreatIndicator类用is_expired(max_age_days=90)判断指标是否过期,ThreatFeed.get_active_indicators()在摄入时自动剔除过期条目,而to_kv_store_record()负责把指标对象转成 KV Store 记录,其中first_seen/last_seen采用 ISO 时间戳,配合confidence(0–100 截断)与tags作为老化与去重的依据。
六、情报源接入配置
STIX/TAXII 源(inputs.conf)
# inputs.conf - TAXII feed configuration [threatlist://taxii_feed_example] description = TAXII 2.1 Threat Feed type = taxii url = https://threatfeed.example.com/taxii2/ collection = threat-indicators-v21 polling_interval = 3600 api_key = <encrypted_api_key> disabled = falsepolling_interval = 3600表示每小时拉取一次;api_key应使用 Splunk 加密存储,不要明文写入。
CSV 威胁列表源
# inputs.conf - CSV threat list [threatlist://custom_blocklist] description = Internal threat blocklist type = csv url = https://internal.company.com/threat-feeds/blocklist.csv polling_interval = 1800 disabled = false基于 API 的自定义 Modular Input(OTX 示例)
SKILL.md 提供了基于 Splunk Python SDKsplunklib.modularinput的完整采集器,核心逻辑如下:
# bin/threatfeed_otx.py - OTX AlienVault feed collector import json import sys import requests from splunklib.modularinput import Script, Scheme, Argument, Event class OTXFeedInput(Script): def get_scheme(self): scheme = Scheme("OTX AlienVault Feed") scheme.description = "Collects IOCs from AlienVault OTX" scheme.use_external_validation = False scheme.streaming_mode = Scheme.streaming_mode_xml api_key_arg = Argument("api_key") api_key_arg.data_type = Argument.data_type_string api_key_arg.required_on_create = True scheme.add_argument(api_key_arg) pulse_days_arg = Argument("pulse_days") pulse_days_arg.data_type = Argument.data_type_number pulse_days_arg.required_on_create = False scheme.add_argument(pulse_days_arg) return scheme def stream_events(self, inputs, ew): for input_name, input_item in inputs.inputs.items(): api_key = input_item["api_key"] pulse_days = int(input_item.get("pulse_days", 30)) headers = {"X-OTX-API-KEY": api_key} url = f"https://otx.alienvault.com/api/v1/pulses/subscribed?modified_since={pulse_days}d" try: response = requests.get(url, headers=headers, timeout=60) response.raise_for_status() data = response.json() for pulse in data.get("results", []): for indicator in pulse.get("indicators", []): event = Event() event.stanza = input_name event.data = json.dumps({ "indicator": indicator["indicator"], "type": indicator["type"], "pulse_name": pulse["name"], "pulse_id": pulse["id"], "description": indicator.get("description", ""), "created": indicator.get("created", ""), "threat_source": "OTX", "confidence": pulse.get("adversary", "unknown"), }) ew.write_event(event) except requests.RequestException as e: ew.log("ERROR", f"OTX feed collection failed: {str(e)}") if __name__ == "__main__": sys.exit(OTXFeedInput().run(sys.argv))对应地,api-reference.md 记录了 OTX REST API 的用法,供手工调试与集成:
# 获取 pulse 指标 curl "https://otx.alienvault.com/api/v1/pulses/PULSE_ID/indicators" # 搜索 pulses curl -H "X-OTX-API-KEY: $OTX_KEY" \ "https://otx.alienvault.com/api/v1/search/pulses?q=ransomware&page=1"仓库中的 agent.py 也实现了fetch_otx_pulse_iocs(pulse_id),它使用 15 秒超时、200 状态码校验,并把 OTX 指标按type字段(IPv4/IPv6 → ip_intel,domain/hostname → domain_intel,FileHash-SHA256/FileHash-MD5 → file_intel)分流到不同集合——这正是"按类型归一化"的代码级体现。
七、构建丰富化 Lookup:KV Store 集合与 transforms.conf
KV Store 集合定义(collections.conf)
SKILL.md 给出三类核心集合的 Schema:
# collections.conf [ip_threat_intel] field.ip = string field.threat_type = string field.confidence = number field.source = string field.description = string field.first_seen = time field.last_seen = time field.severity = string [domain_threat_intel] field.domain = string field.threat_type = string field.confidence = number field.source = string field.whois_registrar = string field.whois_created = string [file_hash_intel] field.file_hash = string field.hash_type = string field.malware_family = string field.confidence = number field.source = string field.detection_names = string值得注意的是field.confidence = number与field.first_seen = time等类型声明,它们直接决定了下游eval与比较运算符(如domain_confidence > 70)能否正确工作——若类型错配为 string,数值比较会出现语义错误。
Lookup 表定义(transforms.conf)
# transforms.conf [ip_threat_intel_lookup] external_type = kvstore collection = ip_threat_intel fields_list = ip, threat_type, confidence, source, description, severity [domain_threat_intel_lookup] external_type = kvstore collection = domain_threat_intel fields_list = domain, threat_type, confidence, source [file_hash_intel_lookup] external_type = kvstore collection = file_hash_intel fields_list = file_hash, hash_type, malware_family, confidence, sourcefields_list限定了 lookup 暴露给搜索的字段,即OUTPUT子句可引用的范围。
通过 REST API 管理 KV Store
api-reference.md 给出了直接操作 KV Store 的 REST 方式,适合脚本化灌入或批量同步:
# 创建集合 curl -k -u admin:pass -X POST \ "https://localhost:8089/servicesNS/nobody/SA-ThreatIntelligence/storage/collections/config" \ -d name=ip_intel # 插入单条记录 curl -k -u admin:pass -X POST \ "https://localhost:8089/servicesNS/nobody/SA-ThreatIntelligence/storage/collections/data/ip_intel" \ -H "Content-Type: application/json" \ -d '{"ip":"198.51.100.42","threat_key":"c2_server","weight":"3"}' # 批量插入 curl -k -u admin:pass -X POST \ "https://localhost:8089/servicesNS/nobody/SA-ThreatIntelligence/storage/collections/data/ip_intel/batch_save" \ -H "Content-Type: application/json" \ -d '[{"ip":"1.2.3.4","threat_key":"malware"},{"ip":"5.6.7.8","threat_key":"c2"}]'同时也可用 Splunk Python SDK 以编程方式写入(api-reference.md):
import splunklib.client as client service = client.connect( host="localhost", port=8089, username="admin", password="changeme" ) # 访问 KV store 集合 collection = service.kvstore["ip_intel"] collection.data.insert(json.dumps({ "ip": "198.51.100.42", "threat_key": "c2_server" }))源码级的记录结构对照
仓库 process.py 的ThreatIndicator.to_kv_store_record()展示了程序化构造记录的标准结构:以indicator_type决定主键字段名(ip →ip、domain →domain、file_hash →file_hash),并生成_key(由indicator_type:value:source的 SHA256 前 16 位构成,实现跨源去重),同时写入threat_type/confidence/source/description/severity/first_seen/last_seen/tags。这与 template.md 的集合模板字段完全一致,可直接作为自定义采集器输出格式的参考。
八、丰富化关联搜索(Correlation Searches)
IP 关联搜索:情报 + 资产双重丰富
SKILL.md 的 IP 关联搜索把"威胁命中"与"资产价值"组合成分级紧迫度(urgency):
| tstats summariesonly=true count from datamodel=Network_Traffic where All_Traffic.action=allowed by All_Traffic.src_ip, All_Traffic.dest_ip, All_Traffic.dest_port, _time span=5m | rename "All_Traffic.*" as * | lookup ip_threat_intel_lookup ip as dest_ip OUTPUT threat_type, confidence, source as ti_source, severity as ti_severity | where isnotnull(threat_type) | lookup asset_lookup ip as src_ip OUTPUT asset_name, asset_owner, asset_priority | eval urgency=case( ti_severity=="critical" AND asset_priority=="critical", "critical", ti_severity=="high" OR asset_priority=="critical", "high", ti_severity=="medium", "medium", true(), "low" ) | eval description="Connection from ".src_ip." (".asset_name.") to known malicious IP ".dest_ip." (".threat_type.") - Source: ".ti_source该搜索体现了三条可复用设计:summariesonly=true优先走 tstats 摘要以保障性能;lookup ... OUTPUT将情报字段改名(如source as ti_source)避免与事件字段冲突;eval urgency=case(...)把"情报严重度 × 资产优先级"映射为告警紧迫度,减少对低价值资产的噪音告警。
域名关联搜索:按置信度分级
前文已展示域名搜索,其severity依据domain_confidence动态分级(>90 critical、>70 high),并用dc(src_ip)统计触达恶意域名的独立主机数,辅助判断感染面。
文件哈希关联搜索:命中即严重
index=endpoint sourcetype=sysmon EventCode=1 | lookup file_hash_intel_lookup file_hash as Hashes OUTPUT malware_family, confidence as hash_confidence, source as ti_source | where isnotnull(malware_family) | stats count values(ParentCommandLine) as parent_commands by Computer, User, Image, malware_family, ti_source | eval severity="critical" | eval description="Known malware ".malware_family." executed on ".Computer." by ".User." - Binary: ".Image已知恶意软件在本机执行是确定性事件,因此直接固定severity="critical",并回溯ParentCommandLine帮助判断投递向量。
源码与 SPL 的一致性
process.py 的generate_spl_correlation(indicator_type)内置了 ip/domain/file_hash 三类 SPL 模板,其结构(tstats → lookup → where 阈值 → stats 聚合)与 SKILL.md 的示例一致,可视为"配置文档即代码"的校验参考;agent.py 的build_spl_correlation_search()则给出另一套基于 ES 标准集合名(ip_intel_lookup等)的简化模板,两者字段命名差异提醒你:实际部署时务必让 transforms.conf 中的 lookup 名与搜索脚本中的引用保持一致。
九、多源丰富化管道:威胁 + 地理 + 归属三方叠加
单条情报匹配往往不够,SOC 需要把情报与地理信息、Whois 归属信息叠加,构建完整上下文。SKILL.md 的多源管道示例:
index=firewall sourcetype=pan:traffic action=allowed | eval indicators=mvappend(src_ip, dest_ip) | mvexpand indicators | lookup ip_threat_intel_lookup ip as indicators OUTPUT threat_type as ip_threat, confidence as ip_confidence, source as ip_ti_source | lookup geo_ip_lookup ip as indicators OUTPUT country, city, latitude, longitude | lookup whois_lookup ip as indicators OUTPUT org as ip_org, asn as ip_asn | where isnotnull(ip_threat) | stats count values(ip_threat) as threat_types values(ip_ti_source) as intel_sources values(country) as countries values(ip_org) as organizations latest(_time) as last_seen earliest(_time) as first_seen by src_ip, dest_ip, dest_port | eval enrichment_context="Threat: ".mvjoin(threat_types, ", ")." | Geo: ".mvjoin(countries, ", ")." | Org: ".mvjoin(organizations, ", ")要点拆解:
mvexpand把src_ip/dest_ip展开为多行,使一次搜索同时匹配两端 IP;- 三个 lookup 依次叠加情报(威胁类型)、地理(国家/城市)、归属(Org/ASN);
- 最终
eval enrichment_context合成一行可读上下文,直接写入 Notable Event 供分析人员速读。
十、情报仪表盘:覆盖率与新鲜度监控
丰富化管道上线后,必须持续观测"情报源质量",否则过期指标会持续产生误报。SKILL.md 给出两个即用型面板搜索:
IOC 覆盖率统计
| inputlookup ip_threat_intel_lookup | stats count by source, threat_type | sort -count | head 20情报源新鲜度监控
| inputlookup ip_threat_intel_lookup | eval age_days=round((now() - strptime(last_seen, "%Y-%m-%dT%H:%M:%S")) / 86400, 0) | stats count avg(age_days) as avg_age_days max(age_days) as max_age_days by source | eval status=case(avg_age_days > 30, "STALE", avg_age_days > 7, "AGING", true(), "FRESH")其中strptime(last_seen, "%Y-%m-%dT%H:%M:%S")的时间格式必须与采集器写入 KV Store 的last_seen保持一致——这正是 process.py 使用 ISO 格式datetime.utcnow().isoformat()写入的原因。
情报源质量评估指标
workflows.md 给出了情报源的量化体检表,可作为面板阈值与告警规则的依据:
| 指标 | 良好 | 警告 | 严重 |
|---|---|---|---|
| 情报源延迟(Feed latency) | < 1 小时 | 1–24 小时 | > 24 小时 |
| 误报率(False positive rate) | < 5% | 5–15% | > 15% |
| 命中率(Hit rate) | > 1% | 0.1–1% | < 0.1% |
| 覆盖重叠率(Coverage overlap) | < 30% | 30–60% | > 60% |
| 指标新鲜度(Indicator freshness) | < 7 天 | 7–30 天 | > 30 天 |
template.md 的"Feed Health Dashboard"模板也预设了同样的健康指标基线(平均新鲜度 < 7 天、30 天命中率 > 0.5%、误报率 < 5%、重叠率 < 30%),可直接用于建设团队内部的持续质量看板。
十一、管道模拟与验证:跑通参考实现
仓库提供了两个可直接运行的 Python 参考实现,用于在真实 Splunk 环境之外验证管道逻辑。
运行 process.py:
python3 skills/building-threat-intelligence-enrichment-in-splunk/scripts/process.py其__main__演示了完整闭环:创建 OTX 与 AbuseIPDB 两个样例源 → 灌入 5 条指标 →ingest_all_feeds()归一化进 KV Store 模拟集合 → 用 4 条模拟网络事件执行simulate_correlation()→ 打印命中结果与自动生成的 SPL。其中值得注意的验证点:
- 去重:同一 IP
203.0.113.50同时出现在 OTX 与 AbuseIPDB,靠_key(type:value:source 哈希)区分来源记录; - 置信度截断:
ThreatIndicator.__init__用min(100, max(0, confidence))强制将置信度钳制在 0–100; - 过期清理:
get_active_indicators(90)剔除超过 90 天未见的指标。
运行 agent.py:
python3 skills/building-threat-intelligence-enrichment-in-splunk/scripts/agent.py它会打印 TI 集合与 lookup 的对应关系、三类 SPL 关联查询,以及将 OTX 样例指标转换为ip_intel/domain_intel/file_intel记录的结果。若本机未安装requests,程序会降级为requests available: False并跳过在线拉取,仍可验证本地转换与 SPL 生成逻辑。
十二、最佳实践与踩坑提示
综合 standards.md、workflows.md、SKILL.md 与两个参考脚本,落地时的关键实践可归纳为:
- 字段名严格对齐:collections.conf 的字段类型、transforms.conf 的
fields_list、SPL 中的OUTPUT名称、脚本写入的 JSON key 四者必须一致,任何一层的拼写漂移都会导致 lookup 静默失败; - 置信度阈值分级落地:按 standards.md 的表(IP/域名 70%、URL 75%、哈希/邮箱 80%)在
where子句中实现,并接受后续命中率统计的反馈微调; - 时间戳格式统一:
first_seen/last_seen统一使用 ISO 8601 写入,新鲜度面板的strptime才能正确解析; - 来源追溯不可省略:每条记录必须携带
source与description,否则命中后无法回查"哪个情报源说了什么",也会让 api-reference.md 中按 source 统计覆盖率的查询失去意义; - 生命周期自动化:把"老化→降权→过期→归档/删除"固化为计划任务或 enrichment 脚本,避免 KV Store 无限膨胀并持续误报;
- 质量看板先行:先部署第十节的覆盖率与新鲜度面板,再批量接入新源,用 workflows.md 的质量表对每个源做准入评估。
结语
从 STIX/TAXII/OCSF 的标准语义,到 CIM 数据模型字段映射,再到 KV Store 集合、lookup 与 correlation search 的工程落地,本仓库的 SKILL.md、standards.md、workflows.md、api-reference.md 以及 process.py、agent.py 构成了一个从规范到代码、从配置到验证的完整闭环。按文中的阈值体系、配置模板与质量监控面板实施,即可在 Splunk ES 中构建一条低误报、可审计、可持续维护的威胁情报丰富化管道。
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考