Skip to main content

A fast, batteries-included CLI companion for MITRE ATT&CK® TTPs

Project description

mitre-attackctl

A fast, batteries-included CLI companion for MITRE ATT&CK® TTPs.

✨ Features

  • 🔍 Instant, offline TTP lookup - Search techniques using fuzzy matching
  • 📋 Rich technique details - View comprehensive information in YAML, JSON, or Markdown
  • 🔗 Clickable links - Technique IDs link directly to MITRE ATT&CK website
  • 🔄 Stay current - Easy updates to latest ATT&CK framework data
  • 💾 Smart caching - Local storage for offline access and performance
  • 🎨 Beautiful output - Rich terminal UI with tables, colors, and formatting

🚀 Quick Start

Installation

# Install from PyPI (recommended)
pip install mitre-attackctl

# Or install with pipx for isolated installation
pipx install mitre-attackctl

# Or install from source
git clone https://github.com/haasonsaas/mitre-attackctl
cd mitre-attackctl
pip install -e .

Basic Usage

# Search for techniques
attackctl search "gcp persistence"
attackctl search "powershell"
attackctl search "T1059"

# Show technique details
attackctl show T1098.004
attackctl show T1059.003 --format markdown

# Update local data cache
attackctl update

# Get help
attackctl --help
attackctl search --help

💡 Tip: Technique IDs in all output formats are clickable links that open the corresponding MITRE ATT&CK page in your browser (requires a terminal that supports clickable links).

📖 Commands

search - Find techniques

Search for ATT&CK techniques using fuzzy string matching:

# Basic search
attackctl search "credential access"

# Limit results
attackctl search "persistence" --limit 5

# JSON output
attackctl search "powershell" --format json

# Update cache before searching
attackctl search "docker" --update

show - Technique details

Display comprehensive information about a specific technique:

# Default YAML format
attackctl show T1098.004

# Markdown format
attackctl show T1059.003 --format markdown

# JSON format  
attackctl show T1055 --format json

update - Refresh data

Update the local ATT&CK framework data cache:

# Update if cache is stale
attackctl update

# Force update regardless of cache age
attackctl update --force

🏗️ Architecture

Tech Stack

  • Language: Python 3.12+ with Typer for CLI
  • Search: RapidFuzz for fuzzy string matching
  • Data: MITRE ATT&CK STIX bundles via JSON API
  • Output: Rich for beautiful terminal formatting
  • Caching: Local JSON cache in ~/.attackctl/cache/

Data Sources

  • MITRE ATT&CK Enterprise Matrix
  • Cached locally for offline access
  • Auto-updates with version tracking

🛣️ Roadmap

Planned Features

  • 🗺️ Detection mapping - Map techniques to Sigma, Splunk, Sentinel rules
  • 📊 Coverage analysis - Gap analysis for detection rules
  • 🧪 Test data generation - Synthetic logs for rule validation
  • 📤 Report export - Generate reports in multiple formats
  • 🔀 Version comparison - Diff between ATT&CK versions
  • 🔍 Semantic search - AI-powered technique discovery

Coming Soon

  • Sub-technique filtering
  • Tactic and platform filtering
  • Custom rule mappings
  • Integration with detection platforms

🤝 Contributing

Contributions welcome! This project aims to solve real pain points in threat hunting and detection engineering.

Development Setup

git clone https://github.com/haasonsaas/mitre-attackctl
cd mitre-attackctl
pip install -e ".[dev]"
pytest

Project Structure

mitre-attackctl/
├── src/attackctl/
│   ├── cli.py          # Main CLI interface
│   ├── data.py         # ATT&CK data fetching/caching  
│   ├── models.py       # Pydantic data models
│   ├── search.py       # Fuzzy search implementation
│   └── display.py      # Output formatting
├── tests/              # Test suite
└── docs/               # Documentation

📄 License

MIT License - see LICENSE for details.

🙏 Acknowledgments


MITRE ATT&CK® is a registered trademark of The MITRE Corporation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mitre_attackctl-1.0.0.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mitre_attackctl-1.0.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file mitre_attackctl-1.0.0.tar.gz.

File metadata

  • Download URL: mitre_attackctl-1.0.0.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for mitre_attackctl-1.0.0.tar.gz
Algorithm Hash digest
SHA256 199afb7dff94c08b1cd9fb91e2d984c9f65f9d35a25e39011b9ffb0695d1b54b
MD5 e0c9b6478e2421a45c928ce1622e6e82
BLAKE2b-256 e9ded2095898b7a74e42fdd8bbefb32e73a2d06969bd8d5479c2986ae87f2146

See more details on using hashes here.

File details

Details for the file mitre_attackctl-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mitre_attackctl-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f2cbf4af0201abce1b71be8d7da031ba948b7dfbddc6ab21553830a3d4318dcf
MD5 d4b0455554b82fda7b27ec22a7e5d20c
BLAKE2b-256 2d9eeb7eff11294bbc075c438873e1bedece1a3e0c7de6ce9a1f6bc1e2d28cf0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page