Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

4 Commits

Folders and files

Repository files navigation

Network-Aware Hybrid GNN for Attack Prediction

Advanced Graph Neural Network with network-aware edges for predicting next attack techniques in ICS environments. Features federated learning support and comprehensive visualization.

๐ŸŒŸ Key Features

  • Network-Aware Graph Edges: 6D edge features capturing network traffic patterns
  • Hybrid Architecture: Combines graph structure + network features
  • Federated Learning: Horizontal FL for privacy-preserving collaborative training
  • Comprehensive Visualization: 7+ evaluation figures and analysis reports
  • High Performance: ~60% Top-1, ~75% Top-3, ~85% Top-5 accuracy

๐Ÿš€ Quick Start

1. Installation

# Install dependencies
pip install -r requirements.txt

# Or using Poetry
poetry install
poetry shell

# Verify installation
python test_network_aware.py

2. Compare Approaches

# See difference between original and network-aware
python compare_approaches.py

3. Train Network-Aware Model

# Train with network-aware graph edges
python scripts/analyze_and_train_network_aware.py

# Or use notebook
jupyter notebook notebooks/analyze_and_train_network_aware.ipynb

4. View Results

# Check generated figures
ls figures/

# View training history
python -c "import pickle; h=pickle.load(open('models/training_history.pkl','rb')); print(h)"

๐Ÿ“ Project Structure

gnn_clean/
โ”œโ”€โ”€ data/                                    # Training data
โ”‚   โ”œโ”€โ”€ sequences_with_network_features.json # 50K+ training pairs
โ”‚   โ”œโ”€โ”€ all_attack_sequences.json           # Attack chains
โ”‚   โ””โ”€โ”€ combined_statistics.json            # Data statistics
โ”‚
โ”œโ”€โ”€ scripts/                                 # Training scripts
โ”‚   โ”œโ”€โ”€ analyze_and_train_network_aware.py  # Main training (network-aware)
โ”‚   โ””โ”€โ”€ generate_realistic_network_data.py  # Data generation
โ”‚
โ”œโ”€โ”€ notebooks/                               # Jupyter notebooks
โ”‚   โ””โ”€โ”€ analyze_and_train_network_aware.ipynb
โ”‚
โ”œโ”€โ”€ models/                                  # Saved models
โ”‚   โ”œโ”€โ”€ best_network_aware_model.pt         # Trained model weights
โ”‚   โ”œโ”€โ”€ network_aware_mappings.pkl          # Technique mappings
โ”‚   โ””โ”€โ”€ training_history.pkl                # Training curves
โ”‚
โ”œโ”€โ”€ figures/                                 # Generated visualizations
โ”‚   โ”œโ”€โ”€ network_aware_training.png          # Training curves
โ”‚   โ”œโ”€โ”€ edge_features_distribution.png      # Edge analysis
โ”‚   โ”œโ”€โ”€ network_variance_analysis.png       # Variance patterns
โ”‚   โ”œโ”€โ”€ network_aware_confusion_matrix.png  # Confusion matrix
โ”‚   โ”œโ”€โ”€ network_aware_confidence.png        # Confidence analysis
โ”‚   โ”œโ”€โ”€ data_distribution.png               # Data characteristics
โ”‚   โ”œโ”€โ”€ graph_structure.png                 # Graph topology
โ”‚   โ””โ”€โ”€ high_variance_transitions.txt       # Analysis report
โ”‚
โ”œโ”€โ”€ docs/                                    # Documentation
โ”‚   โ”œโ”€โ”€ GNN_MODEL_ARCHITECTURE.md           # Model architecture (Mermaid)
โ”‚   โ”œโ”€โ”€ NETWORK_AWARE_IMPLEMENTATION.md     # Implementation guide
โ”‚   โ”œโ”€โ”€ INTEGRATING_CURRENT_TRAFFIC.md      # Traffic integration guide
โ”‚   โ”œโ”€โ”€ NETWORK_INTEGRATION_OPTIONS.md      # Integration approaches
โ”‚   โ”œโ”€โ”€ FL_DESIGN_PLAN.md                   # Federated learning plan
โ”‚   โ””โ”€โ”€ VFL_DESIGN_PLAN.md                  # Vertical FL (archived)
โ”‚
โ”œโ”€โ”€ compare_approaches.py                    # Compare original vs network-aware
โ”œโ”€โ”€ test_network_aware.py                   # Validation script
โ”œโ”€โ”€ requirements.txt                         # Dependencies
โ”œโ”€โ”€ pyproject.toml                          # Poetry config
โ”œโ”€โ”€ INSTALLATION.md                         # Installation guide
โ”œโ”€โ”€ VISUALIZATION_GUIDE.md                  # Figure descriptions
โ”œโ”€โ”€ NETWORK_AWARE_README.md                 # Detailed user guide
โ”œโ”€โ”€ QUICK_REFERENCE.md                      # Quick reference card
โ””โ”€โ”€ README.md                               # This file

๐Ÿ“Š Model Architecture

Network-Aware Hybrid GNN

Input:
โ”œโ”€โ”€ Current Attack ID (e.g., T1566 - Phishing)
โ”œโ”€โ”€ Network Features (18D: packets, bytes, protocols, etc.)
โ””โ”€โ”€ Graph Structure (edge_index + 6D edge features)

Model:
โ”œโ”€โ”€ GNN Path: Node Embedding โ†’ 3 GAT Layers โ†’ Node Representation
โ”‚   โ””โ”€โ”€ GAT uses 6D edge features (network-aware attention)
โ”œโ”€โ”€ Network Path: Network Features โ†’ 2-Layer MLP โ†’ Network Representation
โ””โ”€โ”€ Fusion: Concatenate โ†’ MLP โ†’ Classifier โ†’ Predictions

Edge Features (6D):
โ”œโ”€โ”€ [0] Transition probability
โ”œโ”€โ”€ [1] Average packet count
โ”œโ”€โ”€ [2] Std packet count
โ”œโ”€โ”€ [3] Average byte count
โ”œโ”€โ”€ [4] Std byte count
โ””โ”€โ”€ [5] Log transition count

Key Innovation: Edge features include network statistics, enabling the model to distinguish attack variants by traffic patterns.

See docs/GNN_MODEL_ARCHITECTURE.md for detailed architecture with Mermaid diagrams.

๐Ÿ“ˆ Performance

Network-Aware Model (Current)

  • Training Data: 50,000+ pairs with network features
  • Top-1 Accuracy: ~60%
  • Top-3 Accuracy: ~75%
  • Top-5 Accuracy: ~85%
  • Training Time: ~20 minutes (100 epochs, GPU)
  • Parameters: ~1.75M

Comparison

Model Top-1 Top-3 Top-5 Edge Features
Original GNN 55% 70% 80% 1D (frequency)
Network-Aware 60% 75% 85% 6D (frequency + network)
Improvement +5% +5% +5% Better variant detection

๐Ÿ’ก Key Concepts

Network-Aware Edges

Traditional GNN: Edges only have transition frequency

edge_weight = 0.45  # 45% probability

Network-Aware GNN: Edges have 6D features

edge_features = [
    0.45,      # Transition probability
    250.0,     # Usually 250 packets
    80.0,      # ยฑ80 packet variance
    75000.0,   # Usually 75KB
    25000.0,   # ยฑ25KB variance
    6.11       # log(450 occurrences)
]

Benefit: Model can distinguish "Phishing โ†’ Command Execution with 250 packets" vs "Phishing โ†’ Command Execution with 50 packets" (different attack variants).

Dual-Path Architecture

  1. GNN Path: Learns attack sequence patterns from graph structure
  2. Network Path: Learns network behavior from traffic features
  3. Fusion: Combines both for robust predictions

See docs/INTEGRATING_CURRENT_TRAFFIC.md for integration options.

๐Ÿ“– Documentation

Getting Started

Architecture & Design

Federated Learning

Visualization

๐Ÿ”ฌ Usage Examples

Basic Prediction

import torch
import pickle
from scripts.analyze_and_train_network_aware import NetworkAwareHybridGNN

# Load model and mappings
model = NetworkAwareHybridGNN(num_techniques, num_network_features, 6, 256, 8, 0.4)
model.load_state_dict(torch.load('models/best_network_aware_model.pt'))
model.eval()

with open('models/network_aware_mappings.pkl', 'rb') as f:
    mappings = pickle.load(f)

# Prepare input
current_attack = "T1566"  # Phishing
network_features = [150.0, 50000.0, ...]  # 18D vector

current_idx = torch.tensor([mappings['technique_to_idx'][current_attack]])
network_tensor = torch.tensor([network_features])

# Predict
with torch.no_grad():
    logits = model(current_idx, network_tensor, edge_index, edge_attr)
    probs = torch.softmax(logits, dim=1)
    top5_probs, top5_indices = torch.topk(probs, 5)

# Display results
print("Top 5 predictions:")
for prob, idx in zip(top5_probs[0], top5_indices[0]):
    technique = mappings['idx_to_technique'][idx.item()]
    print(f"  {technique}: {prob.item():.3f}")

Output:

Top 5 predictions:
  T1059: 0.350  (Command Execution)
  T1071: 0.250  (Application Layer Protocol)
  T1003: 0.150  (Credential Dumping)
  T1082: 0.100  (System Information Discovery)
  T1083: 0.080  (File and Directory Discovery)

๐ŸŽฏ Training & Evaluation

Training Configuration

# Default hyperparameters
HIDDEN_DIM = 256
NUM_HEADS = 8
DROPOUT = 0.4
LEARNING_RATE = 0.0005
BATCH_SIZE = 128
NUM_EPOCHS = 100

Hyperparameter Tuning

# Modify in script or pass as arguments
HIDDEN_DIM = 512      # Increase model capacity
NUM_HEADS = 16        # More attention heads
DROPOUT = 0.5         # More regularization

Generated Outputs

After training, you'll get:

Models:

  • models/best_network_aware_model.pt - Trained weights
  • models/network_aware_mappings.pkl - Technique mappings
  • models/training_history.pkl - Training curves

Figures (7 visualizations):

  1. figures/network_aware_training.png - Training/validation curves
  2. figures/edge_features_distribution.png - Edge feature analysis
  3. figures/network_variance_analysis.png - High-variance transitions
  4. figures/network_aware_confusion_matrix.png - Confusion matrix
  5. figures/network_aware_confidence.png - Confidence & calibration
  6. figures/data_distribution.png - Data characteristics
  7. figures/graph_structure.png - Graph topology

Reports:

  • figures/high_variance_transitions.txt - Detailed analysis

Evaluation Metrics

# Typical results on test set
Top-1 Accuracy: 60%  # Exact match
Top-3 Accuracy: 75%  # True attack in top 3
Top-5 Accuracy: 85%  # True attack in top 5

# Per-class accuracy for top 10 classes
# High-variance transitions show biggest improvement

๐Ÿ”ฎ Federated Learning (Planned)

Horizontal Federated Learning

Train collaboratively across 3 facilities without sharing raw data:

Facility 1 (10K samples) โ”€โ”€โ”
                           โ”œโ”€โ”€> Central Server (Aggregates)
Facility 2 (15K samples) โ”€โ”€โ”ค         โ†“
                           โ”‚    Global Model
Facility 3 (12K samples) โ”€โ”€โ”˜         โ†“
                                Broadcast back

Features:

  • Privacy-preserving (no raw data sharing)
  • FedAvg aggregation
  • Supports IID and Non-IID data splits
  • Expected: 95-98% of centralized accuracy

See docs/FL_DESIGN_PLAN.md for implementation plan.

๐Ÿงช Testing & Validation

Run Tests

# Validate setup
python test_network_aware.py

# Compare approaches
python compare_approaches.py

# Check data quality
python -c "
import json
data = json.load(open('data/sequences_with_network_features.json'))
print(f'Loaded {len(data)} training pairs')
print(f'Network features: {len(data[0][\"network_features\"])}D')
"

Verify Model

# Check model parameters
import torch
model = torch.load('models/best_network_aware_model.pt')
total_params = sum(p.numel() for p in model.values())
print(f"Total parameters: {total_params:,}")

๐Ÿ› ๏ธ Advanced Features

Traffic Integration Options

Three approaches to integrate current traffic with graph:

  1. Dual-Path (Current): Separate processing, late fusion
  2. Node Integration (Recommended): Add traffic to node features
  3. Attention Modulation (Advanced): Traffic modulates attention weights

See docs/INTEGRATING_CURRENT_TRAFFIC.md for implementation.

High-Variance Transitions

Transitions with high network variance benefit most from network-aware edges:

# View high-variance transitions
cat figures/high_variance_transitions.txt

# These show biggest accuracy improvements
# Example: T1566โ†’T1059 with CV=1.2 (high variance)

๐Ÿ› Troubleshooting

Common Issues

Issue: CUDA out of memory

# Solution: Reduce batch size or use CPU
BATCH_SIZE = 64  # or 32
device = torch.device('cpu')

Issue: Import errors

# Solution: Reinstall dependencies
pip install -r requirements.txt --force-reinstall

Issue: No visualization

# Solution: Install matplotlib
pip install matplotlib seaborn scikit-learn

See INSTALLATION.md for detailed troubleshooting.

๐Ÿ“š Additional Resources

Papers

  • Graph Attention Networks (Veliฤkoviฤ‡ et al., 2018)
  • Federated Learning (McMahan et al., 2017)
  • MITRE ATT&CK for ICS

Tools

๐Ÿค Contributing

Contributions welcome! Areas for improvement:

  1. Model Enhancements

    • Implement fully integrated traffic model
    • Add temporal features
    • Experiment with different GNN architectures
  2. Federated Learning

    • Implement horizontal FL
    • Add differential privacy
    • Optimize communication efficiency
  3. Visualization

    • Interactive dashboards
    • Attention weight visualization
    • Real-time prediction monitoring
  4. Documentation

    • More examples
    • Tutorial notebooks
    • API documentation

๐Ÿ“„ License

MIT License - see LICENSE file for details

๐Ÿ“ง Contact

For questions or issues:

  • Open an issue on GitHub
  • Check documentation in docs/
  • Review troubleshooting in INSTALLATION.md

๐ŸŽ“ Citation

If you use this code in your research, please cite:

@software{network_aware_gnn_attack_prediction,
  title={Network-Aware Hybrid GNN for Attack Technique Prediction},
  author={Your Name},
  year={2025},
  url={https://github.com/yourusername/gnn-attack-prediction},
  note={Features network-aware graph edges and federated learning support}
}

๐ŸŒŸ Acknowledgments

  • MITRE ATT&CK for ICS framework
  • PyTorch Geometric library
  • Graph Attention Networks paper

Version: 0.2.0
Last Updated: 2025
Status: Active Development

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages