02第5页 · STIX深度表达与工程实践 / 共7页

STIX 2.1深度表达与工程实践

第2页回答了"情报怎么传",本页回答"情报怎么写"。深入STIX 2.1的18种SDO、2种SRO与18种SCO的对象模型:Indicator的模式语言与置信度、Observed Data与Indicator的证据分界、Sighting命中回传、Relationship知识图谱、TLP标记的机器化落地、有效期衰减,以及发布前的校验工具链——确保每一份共享出去的Bundle语义无损、责任可溯、分级可控。

SDO×18SRO×2SCO×18PatterningSightingMarking置信度cti-stix-validator
对应研究内容C1的语义层深化 · 为C5管道提供对象级标准
目标受众TIP平台研发、情报分析师、SOC集成工程师
前置阅读第2页 §03 集合与对象资源

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共享的绝对主力对象,其核心字段与工程含义如下:

字段类型/取值工程要点
patternSTIX Patterning语言字符串必填。表达式如 [domain-name:value = 'evil.example'];支持AND/OR/NOT、LIKE、IN、时间窗口等运算,一对多指标应写为一个pattern而非多个Indicator
pattern_typestix / 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用于"已知误报"的反向共享,同样有价值
confidence0—100整数0表示完全无置信度,100表示完全确定。须与生产侧多源交叉验证机制(子课题01)联动,禁止无依据地给高分
kill_chain_phaseskill-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命中次数与首末次时间——供生产者计算指标存活周期与攻击规模
summarytrue表示"声明见过但不给细节"(敏感环境下保护观测方),是隐私与共享的平衡阀
{
  "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)应约定消费方对过期指标的处理方式——降级为观察而非直接删除,保留追溯能力。
快衰减
钓鱼域名/URL
存活周期以小时—天计,建议7—30天衰减窗口,sighting可续期
中衰减
IP/基础设施
云主机 churn 快,建议30—90天窗口并结合whois变更检测
慢衰减
文件哈希/证书
样本与证书复用周期长,建议180天以上,依赖family标签维护

注:上述窗口为本课题基于钓鱼指标存活规律的工程建议值,非外部统计结论,各社区应依据自身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种)直接对应,值与类型一一映射
攻击指标Indicatorpattern承载检测表达式
攻击方法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官方规范与参考实现,对象字段、关系词表与模式语言语法以规范原文为准。

[1]

OASIS《STIX Version 2.1》官方规范(OS版本):docs.oasis-open.org/cti/stix/v2.1/os/stix-v2.1-os.html

[2]

OASIS CTI官方文档站(STIX 2.1对象与关系详解、示例):oasis-open.github.io/cti-documentation

[3]

OASIS官方STIX 2.x校验工具cti-stix-validator:github.com/oasis-open/cti-stix-validator

[4]

STIX 2.1 Patterning规范(第9章)与cti-pattern-validator:github.com/oasis-open/cti-pattern-validator

[5]

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

[6]

FIRST《Traffic Light Protocol (TLP) v2.0》(标记定义与使用规则):first.org/tlp