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
  • 🔄 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/attackctl
cd 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

📖 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/attackctl
cd attackctl
pip install -e ".[dev]"
pytest

Project Structure

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.0.tar.gz (16.7 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.0-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mitre_attackctl-0.1.0.tar.gz
  • Upload date:
  • Size: 16.7 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.0.tar.gz
Algorithm Hash digest
SHA256 a808f50dc9ee8443aaac9c74738c8a72fb12b800de43c28985daa07f288c0be8
MD5 3163ad5c84969dee91579a3539b259af
BLAKE2b-256 693c219badd88d0927e605f737b5b9029a46e913ad42f07a89162ff658022ab2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mitre_attackctl-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3d4e2bbe08f5f71a5d5ea489961018ac4e425a00815a22c24fc7c76579b03bbb
MD5 9de0831036909130f71d7442416ea737
BLAKE2b-256 5c01b007595cf1d3840df528e8a43cf872779587c073e846a65e522b6c38089a

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