Aller au contenu

DataRouter

Le DataRouter est le composant qui transforme les événements bruts en données d'entraînement dual-use. Il lit chaque événement HYDRA/Burp et le classifie en flux défensif, offensif, ou les deux.

Le mapping dual-use

Chaque tactique MITRE ATT&CK a deux descriptions dans le code — une défensive, une offensive :

Tactique Perspective défensive Perspective offensive
discovery Détecter la reconnaissance Techniques de découverte système
credential-access Détecter l'extraction de credentials Méthodes de récolte de credentials
privilege-escalation Détecter les tentatives de privesc SUID, sudo, exploits noyau
lateral-movement Détecter les pivots SSH, tunnels Comment se déplacer entre systèmes
persistence Détecter l'injection cron, bashrc Comment maintenir l'accès
defense-evasion Détecter le nettoyage de logs Techniques anti-forensiques
execution Détecter l'exécution de code distant Techniques de dropper et payload
exfiltration Détecter l'exfiltration de données Méthodes d'exfil DNS/HTTP
collection Détecter la collecte de données sensibles Quoi cibler en premier
initial-access Identifier les vecteurs d'accès utilisés Exploitation des vecteurs d'accès
command-and-control Détecter les canaux C2 Techniques d'établissement C2

Logique de classification

if event_type == "auth_attempt":
     défensif + offensif

elif event_type == "command_executed":
     toujours défensif
     offensif SI correspond à un pattern d'attaque OU a un tag MITRE

elif event_type == "injection_detected":
     défensif uniquement

La plupart des événements command_executed se qualifient pour les deux flux. C'est intentionnel — la même observation enseigne à la fois la détection et la technique.

Datasets générés

Sortie défensive

SFT patterns de détection — paires instruction/sortie entraînant un modèle à identifier les attaques :

{
  "instruction": "Un utilisateur SSH exécute : `find / -perm -4000`. Identifiez la tactique MITRE et le niveau de menace.",
  "output": "Tactique : privilege-escalation\nTechnique : Énumération de binaires SUID\nMenace : Haute\nAction : Logger, alerter, surveiller les commandes suivantes."
}

DPO efficacité des leurres — paires choisi/rejeté mesurant quel persona retient les attaquants :

{
  "prompt": "Session : 34 commandes, 3 tactiques MITRE, durée 94s. Évaluez l'efficacité du leurre.",
  "chosen": "Session très productive. 3 tactiques capturées. L'attaquant a exploré en profondeur les credentials fintech...",
  "rejected": "La session a duré 94s. Pas de recommandation spécifique."
}

Sortie offensive

SFT chaînes d'attaque — TTPs observés convertis en instructions de pentest.

RAFT kill chains — séquences complètes de post-exploitation multi-étapes à partir de sessions réelles (5+ commandes).

Sortie combinée

ReAct dual-perspective — même séquence de commandes analysée sous les deux angles.

Exécution

# Séparer les logs bruts en événements défensifs + offensifs
python -m pdx.training.data_router split

# Générer les datasets d'entraînement
python -m pdx.training.data_router generate --all

# Vérifier le statut
python -m pdx.training.data_router status

Structure de sortie :

training_output/data_router/
├── split_stats.json
├── defensive/
│   ├── raw_events.jsonl          (8 668 événements)
│   ├── sft_detection_patterns.jsonl
│   └── dpo_lure_quality.jsonl
├── offensive/
│   ├── raw_events.jsonl          (4 910 événements)
│   ├── sft_attack_chains.jsonl
│   └── raft_kill_chains.jsonl
└── combined/
    └── react_dual_perspective.jsonl