01 · STIX 2.1对象模型全景
STIX 2.1(2021年6月成为OASIS标准)将威胁情报表达划分为四个层次:领域对象(SDO)、关系对象(SRO)、网络可观测对象(SCO)、元对象(SMO),外加用于传输封装的Bundle对象。准确理解这一模型是跨平台无损共享的前提——TAXII传输的只是Bundle外壳,语义价值全部来自内部对象。
| 层次 | 数量 | 组成与作用 |
|---|---|---|
| SDO 领域对象 | 18种 | 攻击模式(attack-pattern)、战役(campaign)、处置建议(course-of-action)、分组(grouping)、身份(identity)、指示器(indicator)、基础设施(infrastructure)、入侵集(intrusion-set)、位置(location)、恶意软件(malware)、恶意软件分析(malware-analysis)、备注(note)、观察数据(observed-data)、意见(opinion)、报告(report)、威胁行为者(threat-actor)、工具(tool)、漏洞(vulnerability)。注意:incident对象在2.1中保留未启用,预计后续版本定义 |
| SRO 关系对象 | 2种 | relationship(通用二元关系)与sighting(命中观测,携带count等特殊属性),是构建知识图谱与反馈闭环的核心 |
| SCO 可观测对象 | 18种 | 域名(domain-name)、URL、IPv4/IPv6地址、文件(file)、哈希(artifact)、邮箱(email-addr/email-message)、X.509证书(x509-certificate)、网络流量(network-traffic)、进程(process)、注册表项等,即IOC的机器表达载体 |
| SMO 元对象 | 3类 | 标记定义(marking-definition,承载TLP等)、语言内容(language-content,多语言翻译)、扩展定义(extension-definition,自定义扩展) |
建模原则:IOC共享场景下90%以上的传输负载由 indicator + SCO + marking-definition 三件套构成;关系对象(relationship/sighting)决定情报能否从"指标清单"升级为"知识图谱";报告(report)对象用于封装长文分析。切忌为用而用——每增加一种对象类型,消费方的解析成本同步上升。
02 · Indicator对象深度解析
Indicator(指示器)是IOC共享的绝对主力对象,其核心字段与工程含义如下:
| 字段 | 类型/取值 | 工程要点 |
|---|---|---|
| pattern | STIX Patterning语言字符串 | 必填。表达式如 [domain-name:value = 'evil.example'];支持AND/OR/NOT、LIKE、IN、时间窗口等运算,一对多指标应写为一个pattern而非多个Indicator |
| pattern_type | stix / snort / yara | 值为stix时pattern_version应为2.1;snort/yara规则型指标的消费端是IDS而非SIEM,需按类型路由 |
| valid_from / valid_until | 时间戳 | 有效期界定。钓鱼域名类指标建议显式设置valid_until并结合第07节的衰减机制处理,避免僵尸指标长期占位 |
| indicator_types | 开放词表 | 常用anomalous-activity(异常活动)与malicious-activity(恶意活动);benign用于"已知误报"的反向共享,同样有价值 |
| confidence | 0—100整数 | 0表示完全无置信度,100表示完全确定。须与生产侧多源交叉验证机制(子课题01)联动,禁止无依据地给高分 |
| kill_chain_phases | kill-chain-phase对象 | 建议统一使用MITRE ATT&CK战术名(reconnaissance、resource-development等),为子课题03的ATT&CK映射预留语义接口 |
| labels / external_references | 字符串列表/引用列表 | labels已废弃(2.1用indicator_types),但生产环境为兼容旧消费端可保留;external_references应指向原始报告或分析文章URL |
2.1 Pattern语法示例
# 单指标:钓鱼域名 [domain-name:value = 'ibank-secure-example.com'] # 复合条件:同一TLS证书指纹关联的域名与IP [x509-certificate:hashes.'SHA-256' = 'AAAA...' AND (domain-name:value MATCHES '^login-[a-z0-9]+\\.example\\.net$' OR ipv4-addr:value = '198.51.100.23')] # 时间窗口:近7天内观察到的C2心跳 [network-traffic:dst_ref.value = '198.51.100.23' AND network-traffic:dst_port = 443 AND network-traffic:start > '2026-09-01T00:00:00Z']
常见错误:①pattern中混入正则特殊字符未转义;②把observable直接当indicator("观察到"≠"判定为恶意");③一对多关系拆成大量孤立Indicator,丢失关联上下文。STIX模式语言完整语法以规范第9章为准。
03 · 观察数据与指标的关系
Observed Data(观察数据)记录"我们看到了什么事实",Indicator记录"我们认为什么是恶意的",两者不可混用:前者是取证证据,后者是研判结论。混淆二者的后果是消费端把"中性观测"直接加入阻断清单,造成误封。
- 典型链路:传感器采集→Observed Data落库→分析研判→产出Indicator(pattern引用相关SCO)→共享分发;
- 隐私分界:Observed Data可能含内网IP、用户账号等敏感信息,共享时必须剥离或泛化(第3页§06脱敏要求在此落地);Indicator的pattern本身只含恶意基础设施特征,天然低敏;
- 数量控制:一次观察可能产生数十万SCO(如全量NetFlow摘要),共享包中只应携带与研判结论直接相关的最小子集,其余留在本地取证库。
04 · Sighting对象与命中回传
Sighting是STIX 2.1两种SRO之一,语义为"某实体观测到某对象"。它是共享闭环的关键回传载体,直接支撑第3页信誉机制与第4页度量体系:
| 字段 | 说明 |
|---|---|
| sighting_of_ref | 必填,指向被观测对象(Indicator、Malware、Threat Actor等SDO)的id |
| where_sighted_refs | 观测方身份(Identity对象),多组织命中即多源确认,置信度加权依据 |
| observed_data_refs | 支撑本次命中的证据(Observed Data对象引用,可省略细节只回传计数) |
| count / first_seen / last_seen | 命中次数与首末次时间——供生产者计算指标存活周期与攻击规模 |
| summary | true表示"声明见过但不给细节"(敏感环境下保护观测方),是隐私与共享的平衡阀 |
{
"type": "sighting", "spec_version": "2.1",
"id": "sighting--e5f6a7b8-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
"created": "2026-09-05T09:12:00.000Z",
"modified": "2026-09-05T09:12:00.000Z",
"sighting_of_ref": "indicator--7f1e2d3c-4b5a-4c6d-8e7f-9a0b1c2d3e4f",
"where_sighted_refs": ["identity--c3a85f28-7a2f-4d4f-8a3c-3a2b1c4d5e6f"],
"count": 3,
"first_seen": "2026-09-04T22:10:00.000Z",
"last_seen": "2026-09-05T08:40:00.000Z",
"summary": false
}05 · 关系对象与知识图谱构建
Relationship对象以source_ref + relationship_type + target_ref三元组表达实体关联。规范附录A给出了推荐关系词表,跨平台共享时优先使用规范词表内的类型(indicates、uses、attributed-to、targets、communicates-with、delivers、exploits等),自定义关系应通过extension-definition登记说明。
# 关系三元组示例链:
# threat-actor --uses--> malware --communicates-with--> infrastructure
# indicator --indicates--> malware
# campaign --attributed-to--> intrusion-set
{
"type": "relationship", "spec_version": "2.1",
"id": "relationship--1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"relationship_type": "indicates",
"source_ref": "indicator--7f1e2d3c-4b5a-4c6d-8e7f-9a0b1c2d3e4f",
"target_ref": "malware--9a8b7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d",
"confidence": 75
}注:示例中的UUID为格式示意,生产环境必须由STIX库按UUIDv4规范生成;关系对象的created_by_ref不可省略(否则无法归责)。
06 · 数据标记与分级落地
第3页的TLP分级在STIX中的落地载体是marking-definition对象:通过object_marking_refs把标记应用到整个对象,或通过granular_markings只标记对象的特定字段(用于同对象内不同字段不同级别,如域名可GREEN、内网资产字段AMBER)。
# TLP:GREEN标记定义(definition_type为tlp,definition.value即级别)
{
"type": "marking-definition",
"spec_version": "2.1",
"id": "marking-definition--00000000-0000-4000-8000-000000000001",
"created": "2026-09-01T00:00:00.000Z",
"definition_type": "tlp",
"definition": { "tlp": "green" }
}
# 应用到Indicator(生产环境应使用FIRST公布的TLP标记定义标准ID)
"object_marking_refs": ["marking-definition--00000000-0000-4000-8000-000000000001"]合规要点:①TLP 2.0(2022年8月发布)级别名为CLEAR/GREEN/AMBER/AMBER+STRICT/RED,与STIX 1.x时代的TLP:WHITE不兼容,混合环境需做映射;②转发第三方情报时必须保留原始标记,不得擅自降级;③statement类型标记用于"自定义保密声明",适合承载IEP条款摘要。
07 · 置信度与有效期衰减
静态指标的有效期随时间衰减:一个今天高置信度的钓鱼域名,30天后可能已 sinkhole(无害化)或被合法重新注册。本课题采用"双维管理":
- 置信度维度:confidence字段表达生产者当前的确信程度,由多源命中数、来源信誉、首次观测时长共同计算(继承子课题01模型);
- 时间维度:valid_until硬过期 + 衰减评分软降级。参考MISP的Decaying Model机制:按指标类型设定衰减函数(域名类快衰减,哈希类慢衰减),命中(sighting)可"回血"延长生命周期;
- 消费端契约:共享协议(第3页§07)应约定消费方对过期指标的处理方式——降级为观察而非直接删除,保留追溯能力。
注:上述窗口为本课题基于钓鱼指标存活规律的工程建议值,非外部统计结论,各社区应依据自身sighting数据校准。
MISP自2.4.116版本起内置衰减模型(Decaying Model)功能:以Taxonomy标签的numerical_value计算base_score,再按模型参数的lifetime与decay_speed随时间多项式衰减;每次Sighting会将score重置回base_score并重启衰减——与本节"命中回血"机制完全一致,可直接作为社区衰减策略的实现底座。MISP默认模型库(misp-decaying-models仓库)中即预置phishing-model(钓鱼网站快速衰减)与vishing-model(语音诈骗号码快速衰减)模型,社区起步期可直接采用并按自身sighting数据校准参数。
08 · 完整工程示例:带分级的可共享Bundle
综合前述各节,一个符合第3页合规审查要求的生产级共享包应包含:身份声明、标记定义、Indicator及其证据链关系:
{
"type": "bundle",
"id": "bundle--f0e1d2c3-b4a5-46c7-98d0-e1f2a3b4c5d6",
"objects": [
{ "type": "identity", "spec_version": "2.1",
"id": "identity--c3a85f28-7a2f-4d4f-8a3c-3a2b1c4d5e6f",
"created": "2026-09-01T00:00:00.000Z", "modified": "2026-09-01T00:00:00.000Z",
"identity_class": "organization", "name": "DiMiao Threat Intel Lab" },
{ "type": "marking-definition", "spec_version": "2.1",
"id": "marking-definition--00000000-0000-4000-8000-000000000002",
"created": "2026-09-01T00:00:00.000Z",
"definition_type": "tlp", "definition": { "tlp": "clear" } },
{ "type": "indicator", "spec_version": "2.1",
"id": "indicator--7f1e2d3c-4b5a-4c6d-8e7f-9a0b1c2d3e4f",
"created_by_ref": "identity--c3a85f28-7a2f-4d4f-8a3c-3a2b1c4d5e6f",
"created": "2026-09-06T02:00:00.000Z", "modified": "2026-09-06T02:00:00.000Z",
"indicator_types": ["malicious-activity"],
"name": "仿冒银行登录域名(示例)",
"description": "仿冒某商业银行网银登录页,用于窃取账号密码。域名与IP均为保留示例值。",
"pattern": "[domain-name:value = 'ibank-secure-example.com']",
"pattern_type": "stix", "pattern_version": "2.1",
"valid_from": "2026-09-06T02:00:00.000Z",
"valid_until": "2026-10-06T02:00:00.000Z",
"confidence": 85,
"object_marking_refs": ["marking-definition--00000000-0000-4000-8000-000000000002"],
"kill_chain_phases": [{"kill_chain_name": "mitre-attack", "phase_name": "initial-access"}],
"external_references": [{"source_name": "internal-analysis",
"url": "https://ti.example.com/reports/2026-0906-001"}]
}
]
}09 · 常见建模误区与校验工具
- 误区一:ID不稳定。同一对象的id在其生命周期内不可变,修改内容只更新modified时间戳并递增版本;重新生成UUID等于制造重复情报。
- 误区二:缺失created_by_ref。无生产者身份的对象无法归责、无法计入信誉、不合规——这是共享审查的一票否决项。
- 误区三:Bundle当数据库。Bundle仅为传输/存储容器,无语义;需要上下文语义时用Grouping或Report对象。
- 误区四:标记缺失。无TLP标记的共享对象按最严格级别处理(宁可不共享),这是第3页§02"默认从紧"原则的机器化执行。
校验工具链:发布前使用OASIS官方cti-stix-validator做模式与一致性校验;使用cti-pattern-validator校验pattern语法;消费端入库前做schema校验+TLP标记强制检查。校验失败的对象不得进入共享队列(第4页§01管道"分级标注"关卡的执行标准)。
10 · SCO类型完整清单与选用建议
STIX 2.1定义18种SCO(网络可观测对象),按用途分组如下,供建模选型快速查阅:
| 分组 | 类型 | 典型用途 |
|---|---|---|
| 网络类 | ipv4-addr、ipv6-addr、domain-name、url、network-traffic、autonomous-system、mac-addr | 基础设施指标表达的主力分组,覆盖钓鱼对抗绝大多数场景 |
| 文件与内容 | file、artifact | 样本与投递文档的哈希、元数据及原始内容(注意artifact体积控制) |
| 主机与进程 | process、software、windows-registry-key、mutex、directory | 样本行为与主机痕迹,多用于内部狩猎,共享时须注意上下文敏感性 |
| 身份与邮件 | email-addr、email-message、user-account | 钓鱼邮件分析(发件人、主题、正文头字段),共享前执行第3页§09脱敏 |
| 密码学与杂项 | x509-certificate | 证书指纹关联同批仿冒站点,发现攻击者基础设施集合 |
最小选用集建议:domain-name、url、ipv4-addr、file、x509-certificate五种SCO即可覆盖钓鱼对抗90%以上的指标表达;每新增一种类型,消费方解析器与存储schema的兼容成本同步上升——遵循"够用即止"的建模纪律。
11 · STIX 2.1与GB/T 36643-2018的映射要点
GB/T 36643-2018《信息安全技术 网络安全威胁信息格式规范》(2018-10-10发布,2019-05-01实施)定义网络安全威胁信息的三域八组件模型:对象域、方法域、事件域三个域;可观测数据、攻击指标、安全事件、攻击活动、威胁主体、攻击目标、攻击方法、应对措施八个组件。与STIX 2.1的对应关系(本课题映射建议,非国标原文规定):
| 国标组件 | STIX 2.1对应对象 | 映射说明 |
|---|---|---|
| 可观测数据 | SCO(18种) | 直接对应,值与类型一一映射 |
| 攻击指标 | Indicator | pattern承载检测表达式 |
| 攻击方法 | attack-pattern | 可关联MITRE ATT&CK技术ID |
| 攻击工具 | tool / malware | 按是否为恶意代码区分选型 |
| 脆弱性 | vulnerability | 可关联CVE编号 |
| 威胁主体 | threat-actor / intrusion-set | 个体与组织级威胁主体分层表达 |
| 攻击目标 | identity / location / infrastructure | 共享场景中通常隐去或泛化(合规要求) |
| 应对措施 | course-of-action | 承载处置建议(阻断、缓解) |
| 安全事件 / 攻击活动 | report / campaign组合表达 | STIX 2.1中incident对象保留未启用,以组合方式表达事件域 |
转换纪律:向国内监管或行业平台报送时按接收方schema做映射导出;映射过程必须保留原始STIX对象与转换日志,避免双向转换的语义损耗,并保证任何时候可从国标格式无损回溯至STIX 2.1原始对象。
12 · 版本协商与互操作演进
12.1 spec_version字段与对象版本语义
每个STIX 2.x对象必须携带spec_version字段声明其遵循的规范版本(如"2.1")。对象身份由id唯一确定,内容由modified时间戳确定版本——同一id的多次修订构成版本链,消费端按(id, modified)二元组去重与对账,这正是TAXII versions端点(第2页§12.1)返回结构的设计依据。
12.2 2.1与2.0的互操作边界
- 向后兼容的边界:STIX 2.1新增的对象类型(如grouping、location、malware-analysis)与属性,纯2.0实现的消费端无法解析——共享前必须确认下游消费栈的版本能力;
- 协商机制:TAXII 2.1提供spec_versions匹配过滤器,客户端可在Poll时声明只接收特定版本对象;API根的version字段声明服务端支持的STIX版本集合,客户端应以Discovery响应为准自动适配;
- 降级策略:面向混合版本社区共享时,枢纽可维护"2.1原始对象+2.0兼容导出"双集合:高保真层走2.1,兼容层剥离2.1专有对象后按2.0导出,二者以同一Bundle id关联。
12.3 规范演进跟踪纪律
STIX/TAXII由OASIS CTI TC持续维护(规范文档附"Latest stage"链接指向最新阶段版本),社区应指定专人跟踪规范修订动态与OASIS互操作测试文档更新,将"规范变更评估"纳入季度评审会固定议程;在OASIS正式发布新版本之前,一切"下版本将如何如何"的转述均不作为本课题设计依据。
本节参考来源(第5页)
以下均为OASIS官方规范与参考实现,对象字段、关系词表与模式语言语法以规范原文为准。
OASIS《STIX Version 2.1》官方规范(OS版本):docs.oasis-open.org/cti/stix/v2.1/os/stix-v2.1-os.html
OASIS CTI官方文档站(STIX 2.1对象与关系详解、示例):oasis-open.github.io/cti-documentation
OASIS官方STIX 2.x校验工具cti-stix-validator:github.com/oasis-open/cti-stix-validator
STIX 2.1 Patterning规范(第9章)与cti-pattern-validator:github.com/oasis-open/cti-pattern-validator
MISP官方博客《Decaying of Indicators》(指标衰减功能权威介绍,2019-09-12发布,功能自MISP 2.4.116起提供):misp-project.org/2019/09/12/Decaying-Of-Indicators.html;MISP默认衰减模型仓库:github.com/MISP/misp-decaying-models
FIRST《Traffic Light Protocol (TLP) v2.0》(标记定义与使用规则):first.org/tlp