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® framework and team
- Typer for the excellent CLI framework
- Rich for beautiful terminal output
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mitre_attackctl-1.1.0.tar.gz.
File metadata
- Download URL: mitre_attackctl-1.1.0.tar.gz
- Upload date:
- Size: 26.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a05f51d97d9c837cc30fc25aa0b45dc24d21be26674da99d429a822486d66536
|
|
| MD5 |
e17a7841ab031adbd578dcab221fae57
|
|
| BLAKE2b-256 |
d8d0a1b51a6b067081848cf174ff9991d1d121790533ad43b67b4a35c1061c84
|
File details
Details for the file mitre_attackctl-1.1.0-py3-none-any.whl.
File metadata
- Download URL: mitre_attackctl-1.1.0-py3-none-any.whl
- Upload date:
- Size: 25.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
262d26b0c4c944d76fc3136f4a500c9d00ec790fca82c9a3cc54c9bcec83bd0b
|
|
| MD5 |
daa4efce2a22e7fb4d15e1afeae7e44c
|
|
| BLAKE2b-256 |
964b216caa3282921c977e5b0d7e21230988cdb2f548ca2804c913059452d526
|