building-attack-pattern-library-from-cti-reports

building-attack-pattern-library-from-cti-reports is a skill for Claude Code, Codex from autohandai/community-skills. It costs 44 tokens per session (2,882 once invoked), scanned C, a copy of building-attack-pattern-library-from-cti-reports, Apache-2.0.

A system for extracting attacker behaviours from cyber threat intelligence reports and storing them as structured attack patterns using STIX, a format for sharing threat information. The patterns are mapped to MITRE ATT&CK, a catalogue of adversary techniques.

In plain words
What is it for?
It helps analysts process PDF, HTML, or text reports, map behaviours to ATT&CK techniques, track tools and threat actors, and generate detection-rule templates.
Why use it?
It turns scattered reports into a searchable library that detection engineers can reuse. This reduces the effort needed to compare threats and create detection ideas.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit It helps analysts process PDF, HTML, or text reports, map behaviours to ATT&CK techniques, track tools and threat actors, and generate detection-rule templates.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/autohandai/community-skills/building-attack-pattern-library-from-cti-reports
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add autohandai/community-skills --skill building-attack-pattern-library-from-cti-reports
Clone the repo
git clone --depth 1 https://github.com/autohandai/community-skills

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for building-attack-pattern-library-from-cti-reports

README.md
[![agentmods](https://agentmods.dev/badge/skills/autohandai/community-skills/building-attack-pattern-library-from-cti-reports/github.svg)](https://agentmods.dev/skills/autohandai/community-skills/building-attack-pattern-library-from-cti-reports)
Your own site
<a href="https://agentmods.dev/skills/autohandai/community-skills/building-attack-pattern-library-from-cti-reports"><img src="https://agentmods.dev/badge/skills/autohandai/community-skills/building-attack-pattern-library-from-cti-reports/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for building-attack-pattern-library-from-cti-reports

Your own site · 80×15
<a href="https://agentmods.dev/skills/autohandai/community-skills/building-attack-pattern-library-from-cti-reports"><img src="https://agentmods.dev/badge/skills/autohandai/community-skills/building-attack-pattern-library-from-cti-reports.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 44 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,882 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin 88% copy Near-identical to another mod in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00044 $0.02882
Opus 5 $0.00022 $0.01441
Sonnet 5 $0.00009 $0.00576
Haiku 4.5 $0.00004 $0.00288

Measured 8d ago against content hash bc4ca5e45890, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade C, and why

building-attack-pattern-library-from-cti-reports scanned grade C with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

The scan reads SKILL.md. This mod also ships 1 executable file (scripts/agent.py), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Harvests environment variableshighData exfiltration

Enumerating or grepping the environment for keys collects credentials unrelated to what the mod says it does.

additional tooling. The actor leveraged Mimikatz to dump credentials from LSASS
Origin

This is a copy

88% identical to building-attack-pattern-library-from-cti-reports — 43 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

building-attack-pattern-library-from-cti-reports/SKILL.md · 295 lines

How it starts

The opening of the file, as written. The whole thing — 295 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Building Attack Pattern Library from CTI Reports

Overview

Cyber threat intelligence (CTI) reports from vendors like Mandiant, CrowdStrike, Talos, and Microsoft contain detailed descriptions of adversary behaviors that can be extracted, normalized, and cataloged into a structured attack pattern library. This skill covers parsing CTI reports to extract adversary techniques, mapping behaviors to MITRE ATT&CK technique IDs, creating STIX 2.1 Attack Pattern objects, building a searchable library indexed by tactic, technique, and threat actor, and generating detection rule templates from documented patterns.

Prerequisites

  • Python 3.9+ with stix2, mitreattack-python, spacy, requests libraries
  • Collection of CTI reports (PDF, HTML, or text format)
  • MITRE ATT&CK STIX data (local or via TAXII)
  • Understanding of ATT&CK technique structure and naming conventions
  • Familiarity with detection engineering concepts (Sigma, YARA)

Key Concepts

Attack Pattern Extraction

CTI reports describe adversary behaviors in natural language. Extraction involves identifying action verbs and technical terms that map to ATT&CK techniques, recognizing tool names and malware families, identifying infrastructure indicators, and mapping sequences of behaviors to attack chains (kill chain phases).

STIX 2.1 Attack Pattern Objects

STIX defines Attack Pattern as a Structured Domain Object (SDO) that describes ways threat actors attempt to compromise targets. Each pattern links to ATT&CK via external references, includes kill chain phases (tactics), and can be related to Intrusion Sets, Malware, and Tool objects.

Detection Rule Generation

Extracted attack patterns inform detection engineering by providing: specific procedure examples for Sigma rule creation, behavioral sequences for correlation rules, IOC patterns for YARA and Snort rules, and data source requirements for telemetry gaps.

Practical Steps

Step 1: Parse CTI Reports and Extract Behaviors

import re
import json
from collections import defaultdict

class CTIReportParser:
    """Parse CTI reports to extract adversary behaviors."""

    BEHAVIOR_INDICATORS = [
        "used", "executed", "deployed", "leveraged", "exploited",
        "established", "created", "modified", "downloaded", "uploaded",
        "exfiltrated", "injected", "enumerated", "spawned", "dropped",
        "persisted", "escalated", "moved laterally", "collected",
        "encrypted", "compressed", "encoded", "obfuscated",
    ]

    TOOL_PATTERNS = [
        r'\b(Cobalt Strike|Mimikatz|PsExec|BloodHound|Rubeus|Impacket)\b',
        r'\b(PowerShell|cmd\.exe|WMI|WMIC|certutil|bitsadmin)\b',
        r'\b(Metasploit|Empire|Covenant|Sliver|Brute Ratel)\b',
        r'\b(Lazagne|SharpHound|ADFind|Sharphound|Invoke-Obfuscation)\b',
    ]

    TECHNIQUE_KEYWORDS = {
        "spearphishing": "T1566",
        "phishing attachment": "T1566.001",
        "phishing link": "T1566.002",
        "powershell": "T1059.001",
        "command line": "T1059.003",
        "scheduled task": "T1053.005",
        "registry run key": "T1547.001",
        "process injection": "T1055",
        "dll side-loading": "T1574.002",
        "credential dumping": "T1003",
        "lsass": "T1003.001",
        "kerberoasting": "T1558.003",
        "pass the hash": "T1550.002",
        "remote desktop": "T1021.001",
        "smb": "T1021.002",
        "winrm": "T1021.006",
        "data staging": "T1074",
        "exfiltration over c2": "T1041",
        "dns tunneling": "T1071.004",
        "web shell": "T1505.003",
    }

    def parse_report(self, text, report_metadata=None):
        """Parse a CTI report and extract behaviors."""
        sentences = re.split(r'[.!?]\s+', text)
        behaviors = []

        for sentence in sentences:
            sentence_lower = sentence.lower()
            # Check for behavior indicators
            for indicator in self.BEHAVIOR_INDICATORS:
                if indicator in sentence_lower:
                    behavior = {
                        "sentence": sentence.strip(),
                        "action": indicator,
                        "tools": self._extract_tools(sentence),
                        "technique_hints": self._match_techniques(sentence_lower),
                    }
                    if behavior["technique_hints"]:
                        behaviors.append(behavior)
                    break

        print(f"[+] Extracted {len(behaviors)} behavioral indicators from report")
        return behaviors

    def _extract_tools(self, text):
        """Extract tool/malware names from text."""
        tools = set()
        for pattern in self.TOOL_PATTERNS:
            matches = re.findall(pattern, text, re.IGNORECASE)
            tools.update(matches)
        return list(tools)

    def _match_techniques(self, text):
        """Match text to ATT&CK technique hints."""
        matches = []
        for keyword, tech_id in self.TECHNIQUE_KEYWORDS.items():
            if keyword in text:
                matches.append({"keyword": keyword, "technique_id": tech_id})
        return matches

parser = CTIReportParser()
sample_report = """
The threat actor used spearphishing attachments with macro-enabled documents to
gain initial access. Once inside, they executed PowerShell scripts to download
additional tooling. The actor leveraged Mimikatz to dump credentials from LSASS
memory. They then used pass the hash techniques for lateral movement via SMB
to multiple systems. Data was staged in a compressed archive and exfiltrated
over the existing C2 channel. The actor established persistence through
scheduled tasks and registry run keys.
"""
behaviors = parser.parse_report(sample_report)

Read the full file on GitHub · 295 lines

Files

What ships with it

3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 295 lines · 44 tokens per session scan C bc4ca5e45890

Subscribe to this mod's changes

building-attack-pattern-library-from-cti-reports is a skill published in the GitHub repository autohandai/community-skills (11 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 44 tokens to every session and 2,882 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it C with 1 finding (harvests environment variables). It is 88% identical to building-attack-pattern-library-from-cti-reports, differing in 43 lines, and is treated as a copy.

Related

Other skills, from other repositories

building-attack-pattern-library-from-cti-reports

Extract and catalog attack patterns from cyber threat intelligence reports into a structured STIX-based library mapped to MITRE ATT&CK for detection engineering and threat-informed defense.

26zl/cybersec-toolkit · 44 tokens

building-attack-pattern-library-from-cti-reports

Parse cyber threat intelligence reports (Mandiant, CrowdStrike, Talos, Microsoft) with stix2, mitreattack-python, and spaCy to extract adversary behaviors, map them to MITRE ATT&CK technique IDs, and build a searchable STIX 2.1 attack-pattern library with detection templates. Use when cataloging attack patterns from…

Youngmaidainon/Agent-Level-Up · 104 tokens

building-attack-pattern-library-from-cti-reports

Extract and catalog attack patterns from cyber threat intelligence reports into a structured STIX-based library mapped to MITRE ATT&CK for detection engineering and threat-informed defense.

RobotFlow-Labs/skills-repo · 44 tokens

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use…

mukul975/Anthropic-Cybersecurity-Skills · 79 tokens

analyzing-threat-actor-ttps-with-mitre-attack

MITRE ATT&CK is a globally-accessible knowledge base of adversary tactics, techniques, and procedures (TTPs) based on real-world observations. This skill covers systematically mapping threat actor beh.

26zl/cybersec-toolkit · 54 tokens

building-ioc-enrichment-pipeline-with-opencti

OpenCTI is an open-source platform for managing cyber threat intelligence knowledge, built on STIX 2.1 as its native data model. This skill covers building an automated IOC enrichment pipeline using O.

26zl/cybersec-toolkit · 52 tokens