一键导入
stix-bundle
STIX 2.1 bundle creation reference. Object types, relationships, and JSON templates for structured threat intelligence sharing.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
STIX 2.1 bundle creation reference. Object types, relationships, and JSON templates for structured threat intelligence sharing.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when documenting a named campaign across time and victims, the user asks to start or update a campaign record, or another skill identified a multi-incident cluster that warrants formal tracking. Provides the template (timeline, attribution, victimology, attack chain, Diamond Model mapping, IOC clusters) and the lifecycle from active to historical.
Use as the default entry point for any CTI request that doesn't name a specific skill. Activates when a user asks to investigate an indicator, profile a threat actor, write an assessment, enrich IOCs, or build detection rules. Routes to the right investigation or analysis skill, then auto-applies rigor skills (source rating, TLP, confidence, likelihood) on the output.
Use when the user wants to configure API keys for the CTI skills pack, asks "how do I set up keys", "configure VirusTotal", "add my Shodan key", or runs /cti-setup. Walks through API key configuration inside Claude Code without needing to run a shell script. Also handles re-running setup, adding individual keys, and verifying that configured keys work.
Use when a user asks to investigate, check, or characterize a domain or hostname. Chains VirusTotal, URLScan (search existing scans), Shodan (DNS resolve + host), OTX, ransomware.live (victim-status sweep), and optionally Censys. Returns reputation, resolution, hosting fingerprint, ransomware-claim status, and pivot candidates. Invoked by /cti-orchestrator when the target is a domain.
Use when a user asks to check, identify, or characterize a file hash (MD5, SHA-1, SHA-256). Chains VirusTotal and OTX, optionally triggers /malware-analysis for deeper behavioral review. Returns detection signals, malware family, behavioral tags, and pivot candidates (communicating IPs, dropped files). Invoked by /cti-orchestrator when the target is a hash.
Indicator pivoting methodology — how to use one known indicator to discover related infrastructure across the IOC graph. Decision tree by indicator type with concrete `/lookup-*` commands per pivot, a worked multi-hop example, pivot-quality scoring, and routing into the rigor pipeline. Use when the user asks "what else is connected to this IP / domain / hash / cert / actor?", needs to expand a single seed IOC into a campaign cluster, or wants the canonical reference for graph-walking IOCs.
| name | stix-bundle |
| description | STIX 2.1 bundle creation reference. Object types, relationships, and JSON templates for structured threat intelligence sharing. |
| user-invocable | false |
| metadata | {"version":"1.0.0"} |
STIX (Structured Threat Information Expression) 2.1 is the standard for representing and sharing cyber threat intelligence.
{
"type": "bundle",
"id": "bundle--<UUID>",
"objects": [
// Array of STIX Domain Objects (SDOs) and Relationship Objects (SROs)
]
}
Represents a pattern that can be used to detect suspicious activity.
{
"type": "indicator",
"spec_version": "2.1",
"id": "indicator--<UUID>",
"created": "2026-01-15T00:00:00.000Z",
"modified": "2026-01-15T00:00:00.000Z",
"name": "Malicious IP used by APT28",
"description": "C2 server observed in campaign targeting European government entities",
"pattern": "[ipv4-addr:value = '203.0.113.42']",
"pattern_type": "stix",
"valid_from": "2026-01-15T00:00:00.000Z",
"valid_until": "2026-04-15T00:00:00.000Z",
"kill_chain_phases": [
{
"kill_chain_name": "mitre-attack",
"phase_name": "command-and-control"
}
],
"confidence": 85,
"labels": ["malicious-activity"],
"object_marking_refs": ["marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9"]
}
| IOC Type | STIX Pattern |
|---|---|
| IPv4 | [ipv4-addr:value = '1.2.3.4'] |
| IPv6 | [ipv6-addr:value = '2001:db8::1'] |
| Domain | [domain-name:value = 'evil.com'] |
| URL | [url:value = 'https://evil.com/payload'] |
| SHA-256 | [file:hashes.'SHA-256' = 'abc123...'] |
| MD5 | [file:hashes.MD5 = 'abc123...'] |
[email-addr:value = 'phish@evil.com'] | |
| File name | [file:name = 'malware.exe'] |
| Combined | [file:hashes.'SHA-256' = 'abc...' AND file:name = 'payload.dll'] |
{
"type": "threat-actor",
"spec_version": "2.1",
"id": "threat-actor--<UUID>",
"created": "2026-01-15T00:00:00.000Z",
"modified": "2026-01-15T00:00:00.000Z",
"name": "APT28",
"description": "Russian state-sponsored threat actor also known as Fancy Bear, Sofacy",
"aliases": ["Fancy Bear", "Sofacy", "Pawn Storm", "Forest Blizzard"],
"threat_actor_types": ["nation-state"],
"roles": ["agent"],
"sophistication": "expert",
"resource_level": "government",
"primary_motivation": "political",
"goals": ["espionage", "disruption"]
}
{
"type": "malware",
"spec_version": "2.1",
"id": "malware--<UUID>",
"created": "2026-01-15T00:00:00.000Z",
"modified": "2026-01-15T00:00:00.000Z",
"name": "SUNBURST",
"description": "Backdoor trojanised into SolarWinds Orion software",
"malware_types": ["backdoor", "trojan"],
"is_family": true,
"kill_chain_phases": [
{"kill_chain_name": "mitre-attack", "phase_name": "initial-access"},
{"kill_chain_name": "mitre-attack", "phase_name": "command-and-control"}
]
}
{
"type": "attack-pattern",
"spec_version": "2.1",
"id": "attack-pattern--<UUID>",
"created": "2026-01-15T00:00:00.000Z",
"modified": "2026-01-15T00:00:00.000Z",
"name": "Phishing: Spearphishing Attachment",
"description": "Adversaries send spearphishing emails with malicious attachments",
"external_references": [
{
"source_name": "mitre-attack",
"external_id": "T1566.001",
"url": "https://attack.mitre.org/techniques/T1566/001"
}
],
"kill_chain_phases": [
{"kill_chain_name": "mitre-attack", "phase_name": "initial-access"}
]
}
{
"type": "campaign",
"spec_version": "2.1",
"id": "campaign--<UUID>",
"created": "2026-01-15T00:00:00.000Z",
"modified": "2026-01-15T00:00:00.000Z",
"name": "Operation Fancy Storm",
"description": "Targeted espionage campaign against European government entities",
"first_seen": "2025-11-01T00:00:00.000Z",
"last_seen": "2026-01-15T00:00:00.000Z"
}
{
"type": "identity",
"spec_version": "2.1",
"id": "identity--<UUID>",
"created": "2026-01-15T00:00:00.000Z",
"modified": "2026-01-15T00:00:00.000Z",
"name": "European Government Sector",
"identity_class": "class",
"sectors": ["government-national"]
}
{
"type": "relationship",
"spec_version": "2.1",
"id": "relationship--<UUID>",
"created": "2026-01-15T00:00:00.000Z",
"modified": "2026-01-15T00:00:00.000Z",
"relationship_type": "uses",
"source_ref": "threat-actor--<UUID>",
"target_ref": "malware--<UUID>",
"confidence": 85
}
| Source | Relationship | Target |
|---|---|---|
| threat-actor | uses | malware, attack-pattern, tool |
| threat-actor | targets | identity, vulnerability |
| threat-actor | attributed-to | identity (sponsoring nation) |
| campaign | uses | malware, attack-pattern, tool |
| campaign | targets | identity, vulnerability |
| campaign | attributed-to | threat-actor |
| indicator | indicates | malware, threat-actor, campaign |
| malware | targets | identity, vulnerability |
| malware | uses | attack-pattern |
These are the canonical marking-definition object IDs. Reference them from object_marking_refs; do not include the marking-definition object itself in the bundle (see below).
"marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9" // TLP:CLEAR
"marking-definition--34098fce-860f-48ae-8e50-ebd3cc5e41da" // TLP:GREEN
"marking-definition--f88d31f6-486f-44da-b317-01333bde0b82" // TLP:AMBER
"marking-definition--826578e1-40a3-4b46-a8d7-b76e4fd71d29" // TLP:AMBER+STRICT
"marking-definition--e828b379-4e03-4974-9ac4-e53a884c97c1" // TLP:RED
For bundles that will be imported into MISP via /lookup-misp upload-stix, only reference TLP marking-definition UUIDs in object_marking_refs. Don't include a {"type": "marking-definition", ...} object in the bundle's objects array.
The inline shape that older STIX 2.0 examples show — definition_type: "tlp" with definition: {"tlp": "clear"} — fails MISP's STIX 2 importer with "Does not match any TLP Marking definition!". MISP resolves the canonical UUIDs from its own catalog; supplying an inline copy triggers the spec-conformance check and the whole bundle is rejected.
✅ Correct (MISP-compatible) — reference only, marking resolved by consumer:
{
"type": "bundle",
"id": "bundle--...",
"objects": [
{
"type": "indicator",
"id": "indicator--...",
"object_marking_refs": ["marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9"],
"pattern": "[ipv4-addr:value = '203.0.113.42']",
"pattern_type": "stix",
"valid_from": "2026-04-26T00:00:00.000Z"
}
]
}
❌ Don't do this for MISP-bound bundles — inlined TLP definition trips the importer:
{
"type": "marking-definition",
"id": "marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9",
"definition_type": "tlp",
"definition": {"tlp": "clear"}
}
If you need a self-contained bundle for non-MISP consumers (offline ingest, archives, partners without a TLP catalog), the inline form is valid STIX 2.1 — keep a separate non-MISP variant rather than tweaking the MISP one.
If you need TLP applied inside MISP after import, do it via a tag-event call rather than a STIX marking — see tools/integrations/misp.md.
OpenCTI is not affected — it is STIX 2.1-native and imports bundles as-is via /lookup-opencti upload-stix, inline TLP marking-definitions included. Only MISP-bound bundles need the reference-only treatment above.
Write STIX bundles to: data/stix-bundles/YYYY-MM-DD-<context>.json