| | --- |
| | license: mit |
| | tags: |
| | - attack-path-prediction |
| | - graph-neural-networks |
| | - cybersecurity |
| | - mitre-attack |
| | - threat-modeling |
| | datasets: |
| | - custom |
| | language: |
| | - en |
| | library_name: pytorch |
| | --- |
| | |
| | # CTEM G2PM Models |
| |
|
| | **Graph-to-Path Models for Attack Path Prediction** |
| |
|
| | Trained models for the [CTEM Enterprise Platform](https://github.com/LucPlessier/PleoMorphic) - Continuous Threat Exposure Management using Graph Neural Networks. |
| |
|
| | ## Research Foundation |
| |
|
| | Based on [Michael Bronstein's geometric deep learning research](https://arxiv.org/abs/2104.13478) and GraphAny architecture for learning on arbitrary graph structures. |
| |
|
| | ## Models |
| |
|
| | | Model | Accuracy | Parameters | Purpose | |
| | |-------|----------|------------|---------| |
| | | `semi_supervised_99_7_best.pt` | **99.7%** | 660K | Technique classification (122 MITRE ATT&CK techniques) | |
| | | `spectral_281k_best.pt` | 59.1% | 1.5M | Attack path transition prediction | |
| | | `graphany_category_best.pt` | 53.8% | 950K | Category classification (137 categories) | |
| |
|
| | ## Training Data |
| |
|
| | - **279,304** attack technique embeddings (768-dim, sentence-transformers) |
| | - **147** expert-labeled attack chains |
| | - **122** MITRE ATT&CK techniques |
| |
|
| | ## Usage |
| |
|
| | ### Download Models |
| |
|
| | ```bash |
| | pip install huggingface_hub |
| | |
| | # Download all models |
| | huggingface-cli download PleoMorph/ctem-g2pm-models --local-dir ./models |
| | ``` |
| |
|
| | ### Load in Python |
| |
|
| | ```python |
| | import torch |
| | from huggingface_hub import hf_hub_download |
| | |
| | # Download model |
| | model_path = hf_hub_download( |
| | repo_id="PleoMorph/ctem-g2pm-models", |
| | filename="semi_supervised_99_7_best.pt" |
| | ) |
| | |
| | # Load checkpoint |
| | checkpoint = torch.load(model_path, map_location="cpu") |
| | print(f"Accuracy: {checkpoint['best_acc']*100:.1f}%") |
| | print(f"Techniques: {checkpoint['num_classes']}") |
| | print(f"Technique mapping: {list(checkpoint['technique_to_idx'].keys())[:10]}...") |
| | ``` |
| |
|
| | ### Model Architecture |
| |
|
| | **SemiSupervisedG2PM** (99.7% accuracy): |
| | ```python |
| | class SemiSupervisedG2PM(nn.Module): |
| | def __init__(self, input_dim=768, hidden_dim=256, num_classes=122): |
| | self.encoder = nn.Sequential( |
| | nn.Linear(768, 256), nn.ReLU(), nn.Dropout(0.2), |
| | nn.Linear(256, 256), nn.ReLU(), nn.Dropout(0.2), |
| | ) |
| | self.classifier = nn.Linear(256, 122) |
| | ``` |
| |
|
| | **SpectralG2PM** (transition prediction): |
| | ```python |
| | class SpectralG2PM(nn.Module): |
| | # Spectral graph convolution + transition predictor |
| | # Input: embedding (768) + spectral features (256) |
| | # Output: transition probability P(A → B) |
| | ``` |
| |
|
| | ## Files |
| |
|
| | | File | Size | Description | |
| | |------|------|-------------| |
| | | `semi_supervised_99_7_best.pt` | 2.6 MB | Best classifier model | |
| | | `spectral_281k_best.pt` | 5.7 MB | Transition predictor | |
| | | `spectral_281k_results.pkl` | 478 MB | G2PM features & technique index | |
| | | `graphany_category_best.pt` | 3.6 MB | Category classifier | |
| | | `semi_supervised_cpu_results.pkl` | 3.2 MB | Pseudo-labels & confidences | |
| |
|
| | ## Related |
| |
|
| | - **GitHub**: [CTEM Enterprise Platform](https://github.com/LucPlessier/PleoMorphic) |
| | - **Documentation**: [Model Architecture](https://github.com/LucPlessier/PleoMorphic/blob/clean-upload/docs/MODELS.md) |
| |
|
| | ## Citation |
| |
|
| | ```bibtex |
| | @software{ctem_g2pm_2025, |
| | title={CTEM G2PM: Graph-to-Path Models for Attack Path Prediction}, |
| | author={PleoMorph}, |
| | year={2025}, |
| | url={https://huggingface.co/PleoMorph/ctem-g2pm-models} |
| | } |
| | ``` |
| |
|
| | ## License |
| |
|
| | MIT License |
| |
|