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-0.1.1.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-0.1.1-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mitre_attackctl-0.1.1.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-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a7e9e17ace03a21c4d3215ee6ed03fa059f22604f24aff10308ee2acb3db19d9
MD5 b10effd24e21755d0e51dc2d8f078f2b
BLAKE2b-256 08e1cd1ce0cc4cada4a13495542c0eb2c011b8062b5ececa3f4655a3edf2bea2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mitre_attackctl-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 63395feee6def5a3a5e197cfc4b217bdfa7fa64251bee874f8de0442e17fcea7
MD5 4d039554925f885b4b2b92815f7491c3
BLAKE2b-256 d8afe065bec1b093e65505297872e633e0a27d6e57e610931aaeed107c8b10d0

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