
Lire la trace
d'un verdict
Pour chaque verdict, Threat Correlator enregistre ce qu'il a examiné, les outils qu'il a appelés et les preuves sur lesquelles repose sa conclusion. Nous n'avons pas encore de traces d'exécution réelles à publier. Cette page décrit donc la structure d'une trace et en lit un exemple du début à la fin.
Ce que contient une trace
Lue de haut en bas, elle suit l'ordre dans lequel le verdict a été construit.
Un verdict comporte plusieurs étapes (step), et chaque étape regroupe une observation, des appels d'outils, des preuves et un raisonnement.
| Champ | Contenu | Points à vérifier à la lecture |
|---|---|---|
| input_hash | SHA-256 de l'ensemble des entrées du verdict | Cette valeur permet de vérifier qu'une réexécution a utilisé les mêmes entrées |
| sources | Provenance des entrées (EDR, passerelle de messagerie, proxy, etc.) et plage horaire | S'il manque une source, le périmètre du verdict se réduit d'autant |
| steps[].observation | Le fait relevé à cette étape | C'est un résumé des journaux d'origine : vérifiez qu'il correspond aux preuves ci-dessous |
| steps[].tool_call | Outil appelé, arguments et résumé du résultat | Vérifiez les arguments comme la plage horaire ou le nom d'hôte |
| steps[].evidence | ID de la preuve, emplacement d'origine et hash | Le résultat de la vérification automatique de la présence du journal cité dans la source est joint |
| steps[].reasoning | Ce qui permet de passer des preuves à la conclusion, avec l'ID de technique ATT&CK | Chaque phrase du raisonnement doit renvoyer à un ID de preuve |
| verdict · confidence | Libellé du verdict, niveau de risque, confiance et raisons qui l'ont abaissée | Vérifiez que la raison d'une confiance faible est bien indiquée |
| recommended_actions | Actions recommandées et nécessité ou non d'une approbation | L'isolement d'un hôte et le verrouillage d'un compte exigent toujours une approbation |
| approval | ID du rôle approbateur, décision (approbation, modification ou refus), heure et commentaire | Le délai d'approbation se lit aussi ici |
| versions | Version du modèle, du modèle de prompt et de la politique | Il suffit que la formulation du prompt change pour que le critère du verdict change |
| replay | Résultat d'une réexécution ultérieure dans les mêmes conditions et écart avec le verdict d'origine | Les phrases peuvent différer. On vérifie que le libellé et le niveau de risque sont identiques |
Lisons une trace d'exemple depuis le début
Trace d'exemple · il ne s'agit ni de données clients ni d'une exécution réelle. Nous l'avons construite en enchaînant des techniques des premières phases d'un rançongiciel documentées dans MITRE ATT&CK (pièce jointe de phishing, exécution de PowerShell, suppression des clichés instantanés). Noms d'hôte, comptes, heures et niveaux de confiance sont illustratifs, et les domaines et adresses IP utilisent des valeurs réservées à la documentation (.example, 203.0.113.0/24).
Par où commencer
Regardez d'abord pourquoi la confiance du verdict s'est arrêtée à 0,91. Dans cet exemple, la trace indique qu'aucun chiffrement de fichiers n'avait encore été observé et que le hash de l'exécutable téléchargé ne correspondait à rien dans le renseignement sur les menaces. À l'inverse, une trace affichant une confiance élevée sans aucune raison de l'abaisser mérite davantage de méfiance.
Ensuite, la ligne d'approbation. Selon la politique, l'isolement d'un hôte ne se déclenche jamais automatiquement. La trace montre aussi qu'entre le verdict et l'approbation, le temps que l'analyste lise les preuves, il s'est écoulé un peu plus de 2 minutes.
Lecture étape par étape
- Réception de l'e-mail (step 1). Le journal de la passerelle de messagerie contient un message de
billing@invoice-notice.exampleavec la pièce jointedevis_1021.docm. L'IA a récupéré les métadonnées du message d'origine avecmail.search(message_id=…)et les informations du domaine avecintel.domain_whois("invoice-notice.example"). Résultat : domaine créé trois jours plus tôt. La phrase de raisonnement est « pièce jointe Office à macro associée à un domaine récent, T1566.001 possible » et renvoie aux preuves E1 et E2. Cette étape seule n'a pas suffi pour rendre un verdict. - Exécution de PowerShell (step 2). L'événement Sysmon 1 (création de processus) contient une ligne avec
WINWORD.EXEcomme parent etpowershell.exe -NoP -W Hidden -enc JABjAD0A…comme enfant. L'IA a obtenu l'arborescence des processus avecedr.process_tree(host="fin-ws-0412", from="09:12", to="09:20"), puis a décodé la commande et constaté qu'elle téléchargeaithttps://203.0.113.45/u.ps1. La requêtebaseline.parent_child(host, 30d)a montré qu'aucune application Office n'avait lancé PowerShell sur cet hôte au cours des 30 derniers jours. Raisonnement : T1059.001 ; preuves : E3 et E4. - Suppression des clichés instantanés (step 3). L'événement Sysmon 11 (création de fichier) enregistre
C:\Users\user01\AppData\Local\Temp\upd.exe, puis, une vingtaine de secondes plus tard, l'événement 1 montrevssadmin.exe delete shadows /all /quietavecupd.exepour parent.intel.hash_lookupn'a renvoyé aucune correspondance. Le raisonnement cite T1490 (Inhibit System Recovery) ; la fiche T1490 d'ATT&CK recense d'ailleurs plusieurs rançongiciels qui suppriment les clichés instantanés avant de chiffrer. - Verdict. Vrai positif, phase de préparation de l'exécution d'un rançongiciel, risque CRITICAL, confiance 0,91. Deux raisons d'abaisser la confiance sont indiquées : « pas de modification massive de fichiers observée » et « hash de upd.exe sans correspondance dans le renseignement ».
- Actions recommandées et approbation. Isoler l'hôte du réseau (approbation requise), rappeler les e-mails portant le même hash de pièce jointe, bloquer le domaine expéditeur et 203.0.113.45. analyst-07 a approuvé l'isolement à 09:17 avec le commentaire « vérifier les sessions SMB du serveur de fichiers ». Les deux blocages relevaient de la politique de réponse automatique convenue avec le client et ont été exécutés sans approbation.
- Réexécution. Le lendemain, avec le même input_hash, la même version de modèle et la même version de politique, le libellé et le risque étaient identiques, la confiance était de 0,89 et la formulation du raisonnement différait en partie. Les phrases n'entrant pas dans la comparaison, le résultat est enregistré comme « identique ».
La même trace au format brut
Voici l'exemple ci-dessus reporté tel quel au format de la trace, en version abrégée.
Les noms de champs sont illustratifs ; le format d'export réel sera documenté au lancement.
// Trace d'exemple · ni données clients ni exécution réelle
{
"trace_id": "VT-EXAMPLE-0001",
"input_hash": "sha256:9f3a…c21e",
"sources": [
{"type": "mail_gateway", "range": "09:00~09:20"},
{"type": "edr_sysmon", "host": "fin-ws-0412", "range": "09:00~09:20"}
],
"steps": [
{"n": 1,
"observation": "Pièce jointe à macro (devis_1021.docm), domaine expéditeur créé il y a 3 jours",
"tool_calls": ["mail.search(message_id=…)", "intel.domain_whois(\"invoice-notice.example\")"],
"evidence": [{"id": "E1", "ref": "mailgw/2026/10/21/09.log#L2207", "sha256": "1c0d…7be2", "verified": true},
{"id": "E2", "ref": "intel/whois/invoice-notice.example", "verified": true}],
"reasoning": "E1+E2 : pièce jointe de spearphishing possible", "attack": ["T1566.001"]},
{"n": 2,
"observation": "WINWORD.EXE → powershell.exe -NoP -W Hidden -enc …",
"tool_calls": ["edr.process_tree(host=\"fin-ws-0412\", from=\"09:12\", to=\"09:20\")",
"baseline.parent_child(host=\"fin-ws-0412\", window=\"30d\")"],
"evidence": [{"id": "E3", "ref": "sysmon:EventID=1 RecordID=884213", "verified": true},
{"id": "E4", "ref": "baseline/fin-ws-0412/parent_child", "verified": true}],
"reasoning": "E3 : une application Office exécute du PowerShell encodé, E4 : sans précédent sur 30 jours",
"attack": ["T1059.001"]},
{"n": 3,
"observation": "Création de upd.exe puis vssadmin.exe delete shadows /all /quiet",
"tool_calls": ["edr.process_tree(…)", "intel.hash_lookup(\"sha256:3b7e…a19f\")"],
"evidence": [{"id": "E5", "ref": "sysmon:EventID=11 RecordID=884240", "verified": true},
{"id": "E6", "ref": "sysmon:EventID=1 RecordID=884251", "verified": true}],
"reasoning": "E6 : suppression des moyens de récupération, phase précédant le chiffrement", "attack": ["T1490"]}
],
"verdict": {"label": "true_positive", "severity": "critical",
"summary": "Phase de préparation de l'exécution d'un rançongiciel",
"confidence": 0.91,
"confidence_notes": ["Pas de modification massive de fichiers observée", "Hash de upd.exe sans correspondance dans le renseignement"]},
"recommended_actions": [
{"action": "isolate_host", "target": "fin-ws-0412", "requires_approval": true},
{"action": "recall_mail", "match": "attachment_sha256", "requires_approval": false},
{"action": "block", "targets": ["invoice-notice.example", "203.0.113.45"], "requires_approval": false}
],
"approval": {"action": "isolate_host", "by": "analyst-07", "decision": "approved",
"at": "2026-10-21T09:17:40+09:00", "comment": "Vérifier les sessions SMB du serveur de fichiers"},
"versions": {"model": "correlator-model-x.y", "prompt_template": "triage-vNN", "policy": "auto-response-YYYY.MM"},
"replay": {"at": "2026-10-22T10:05:12+09:00", "same_input_hash": true,
"label_match": true, "severity_match": true, "confidence": 0.89,
"text_diff": "Formulation du raisonnement en partie différente"}
}
verified est le résultat de la vérification automatique de la présence du journal cité dans le stockage d'origine. Si une seule valeur vaut false, le verdict est suspendu et transmis à un analyste. La façon dont nous comptabilisons cette vérification est décrite dans la rubrique sur la détection des citations inventées de la page consacrée à la qualité des verdicts de l'IA.
Ce que fait de la trace celui qui la reçoit
La trace d'un verdict ne reste pas un journal interne réservé à Genox.
Nous la concevons en partant du principe que l'équipe sécurité du client et les auditeurs l'ouvriront eux-mêmes.
Audits
Si, lors d'un audit ou d'une enquête sur un incident, on vous demande « pourquoi avoir isolé cet hôte ? », une trace suffit à répondre. Ce qui a été vu se trouve dans evidence, qui a approuvé dans approval, et le modèle et la politique en service à ce moment dans versions. Les preuves sont conservées sous forme d'emplacement et de hash : alignez donc la durée de conservation des journaux d'origine sur celle des traces de verdicts.
Analyse des faux positifs
Quand un verdict est confirmé comme faux positif, on cherche l'étape où il a dérapé. Argument d'appel d'outil erroné, requête sur le comportement de référence revenue vide, raisonnement qui va au-delà des preuves : en suivant les step un par un, on le voit généralement. Quand nous présentons des faux positifs dans le rapport mensuel, nous joignons cette même trace.
Amélioration des règles
Si des verdicts voient leur confiance abaissée pour la même raison de façon répétée, on repère où ajuster le périmètre de collecte ou les règles de détection. Dans l'exemple ci-dessus, les journaux d'audit du serveur de fichiers ne figuraient pas dans sources, si bien qu'on n'a pas pu vérifier l'existence d'un mouvement latéral. Après une modification de la politique, on réexécute les verdicts passés avec la nouvelle version et on examine les écarts.
Nous publierons des traces réelles
dès qu'elles seront prêtes
Dans l'environnement isolé du Research Lab, nous reproduisons des techniques d'attaque publiques et rassemblons les traces des verdicts rendus par Threat Correlator. Lorsque nous aurons accumulé des traces d'exécution exemptes de données clients, nous les publierons ici sans retouche. D'ici là, toutes les traces de cette page sont des exemples.
Nos engagements pour la publication
- Les traces de verdicts erronés seront publiées avec celles des verdicts justes
- L'ID de la technique reproduite et la procédure suivie seront indiqués
- Chaque trace portera les versions du modèle et de la politique ; si une version change, nous ajouterons le résultat de la réexécution
- Les noms d'hôte et les comptes de l'environnement isolé ne recouperont pas ceux des environnements clients réels
Pages associées
Comment nous mesurons la qualité des verdicts de l'IA
Comment, à partir des traces de verdicts, nous mesurons l'exactitude, les faux positifs et négatifs, les preuves manquantes et la constance d'une exécution à l'autre.
Voir la méthodeThreat Correlator
Le moteur qui regroupe les alertes en incidents et enregistre preuves, raisonnement, verdict, actions recommandées et niveau de confiance.
Threat CorrelatorPlateforme
Comment s'articulent Vulnerability Scanner, Behavioral Analyzer, Threat Correlator et Research Lab.
Voir la plateformeRéférences
- Phishing: Spearphishing Attachment (T1566.001), MITRE ATT&CK
- Command and Scripting Interpreter: PowerShell (T1059.001), MITRE ATT&CK
- Inhibit System Recovery (T1490), MITRE ATT&CK
- Sysmon, Microsoft Sysinternals (événement 1, création de processus ; événement 11, création de fichier)
- vssadmin delete shadows, Microsoft Learn
- RFC 5737 IPv4 Address Blocks Reserved for Documentation, IETF
- RFC 2606 Reserved Top Level DNS Names, IETF