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