01Énoncé
Un outil a été déposé sur le poste et maquillé pour se fondre dans la masse. À partir du triage fourni, identifie le fichier malveillant et la manière dont l'attaquant a tenté de le dissimuler. Soumets trois éléments : le secret contenu dans le fichier, son chemin complet, et la technique employée pour masquer le fichier.
02Contexte
L'attaquant a déposé un binaire sur FIN-WKS-07 et a maquillé ses dates pour le faire passer pour un vieux fichier système. Ce challenge porte sur l'analyse du système de fichiers NTFS et la détection de timestomping.
TTP de référence : Indicator Removal, manipulation d'horodatage (timestomp). Acteurs comparables : APT28, APT29.
03Artefact
PANTHERE-EVD-03.zipcontenant un dossierdisk/- Le
$MFT(seul artefact utile) - Hives SYSTEM/SECURITY/SAM/SOFTWARE, Amcache.hve, NTUSER et UsrClass de j.martin, des dizaines de prefetch, les tâches planifiées, SRUDB.dat
04Difficulté
Le $MFT parsé en CSV compte 921 347 lignes. Le fichier recherché porte un nom légitime de Windows et des dates crédibles en apparence. Il faut savoir quels attributs NTFS comparer pour le démasquer. Du bruit a aussi été ajouté (registre, tâches planifiées, prefetch...). Il faut donc faire un vrai travail de tri et bien comprendre ce qu'on a sous les yeux.
05Résolution
Étape 1 : choisir l'artefact
Le triage contient plusieurs sources, mais l'énoncé parle d'un fichier déposé sur le disque. Le $MFT est la référence : chaque fichier du volume NTFS y possède un enregistrement, avec son nom, son dossier parent et ses horodatages.
Étape 2 : parser le $MFT

MFTECmd (EZ Tools) convertit le $MFT en CSV : une ligne par fichier, avec son chemin complet (ParentPath), sa taille et ses horodatages. Timeline Explorer permet de filtrer ce CSV.
Étape 3 : chercher le fichier maquillé
Clic droit sur Parent Path > Filter Editor.



On cherche les exécutables situés hors des emplacements standards (Windows et Program Files). Le CSV passe de 921 347 lignes à 20.
Sur ces 20 exécutables :
- les binaires OneDrive dans
AppData\Local\Microsoft\OneDrive: installation légitime par utilisateur ; - les binaires Sysmon dans
\lab\Sysmon: outil de supervision installé sur le poste ; FacturePro_Update.exedansDownloads: suspect, mais son nom n'imite aucun fichier système, il ne cherche pas à se fondre dans la masse ;RuntimeBroker.exedans\ProgramData\Intel.
« Se fondre dans la masse » suggère un nom de fichier légitime. RuntimeBroker.exe est un processus Windows qui réside dans C:\Windows\System32. Sa présence dans ProgramData\Intel, un dossier lui aussi au nom rassurant, est anormale : c'est du masquerading.
Limite du filtre : il exclut tout chemin contenant Windows, y compris AppData\Roaming\Microsoft\Windows, emplacement prisé des attaquants. Il fonctionne ici, mais ne suffirait pas dans tous les cas.

Étape 4 : confirmer le timestomping

Autre anomalie : un timestomping. Les horodatages du fichier trahissent une seconde technique. NTFS stocke deux jeux de dates par fichier :
$STANDARD_INFORMATION(0x10) : celles qu'affiche l'Explorateur, modifiables par n'importe quel programme via l'API Windows ;$FILE_NAME(0x30) : mises à jour par le noyau, hors de portée des outils classiques.
MFTECmd ne remplit la colonne Created0x30 que lorsqu'elle diffère de Created0x10. Elle est vide pour tous les fichiers, sauf RuntimeBroker.exe :
$SIcréation :2021-03-14 08:12:00$FNcréation :2026-11-05 09:19:30
Le fichier prétend exister depuis 2021, mais le noyau a enregistré sa création pendant l'intrusion. L'attaquant a vieilli la date $SI pour le noyer parmi les fichiers anciens : c'est du timestomping. Les secondes rondes (08:12:00, fractions à zéro) confirment une date saisie à la main.
Étape 5 : extraire le contenu
Deux méthodes possibles.
Méthode 1 : HxD
On regarde la taille du fichier.

La colonne File Size indique 70 octets. Chaque enregistrement MFT fait 1024 octets. Quand les données d'un fichier tiennent dans l'espace restant après l'en-tête et les autres attributs (en pratique moins de 700 octets environ), NTFS les stocke directement dans l'enregistrement : c'est un fichier résident. Son contenu est donc lisible dans le $MFT lui-même, sans l'image disque.

On récupère l'Entry Number du fichier : 2830. Les enregistrements étant contigus et de taille fixe, l'offset se calcule : 2830 × 1024 = 2 897 920, soit 0x2C3800 en hexadécimal.
On ouvre $MFT dans HxD, puis Search > Go to > 2C3800.


L'enregistrement commence par la signature FILE0, propre à chaque entrée MFT. On y lit le nom du fichier en UTF-16 (RuntimeBroker.exe), puis en clair dans l'attribut $DATA :
Méthode 2 : MFTECmd.exe
On reprend l'Entry Number, puis :

L'option --de (dump entry) affiche le détail de l'enregistrement : attributs, horodatages et contenu résident, ici en ASCII.
La sortie apporte une preuve supplémentaire du timestomping. Dans STANDARD INFO, trois dates sont fixées à 2021-03-14 08:12:00.0000000, mais Record Modified On vaut 2026-11-05 09:19:42.
Ce champ, mis à jour à chaque modification de l'enregistrement, n'est pas modifiable par l'API utilisée pour falsifier les dates. Il révèle le moment de la falsification : 12 secondes après la création réelle du fichier (09:19:30 dans $FILE_NAME).
06Réponses
- Secret :
RWX{mft_t1m3st0mp_si_vs_fn} - Chemin :
C:\ProgramData\Intel\RuntimeBroker.exe - Technique : timestomping
07Pistes de détection
- Un exécutable au nom système (RuntimeBroker.exe, svchost.exe...) en dehors de System32.
- Un fichier dont la date de création $SI est antérieure à celle de son $FN.
- Des horodatages ronds, aux fractions de seconde nulles.
- MITRE ATT&CK : T1070.006 (timestomp), T1036.005 (masquerading).
08Note du concepteur
Objectif pédagogique
Trier un $MFT volumineux pour isoler un fichier qui se fait passer pour un binaire Windows. Il faut raisonner sur l'emplacement des exécutables (un nom système hors de System32), puis prouver le timestomping en comparant $STANDARD_INFORMATION et $FILE_NAME. Le challenge introduit aussi la notion de fichier résident : un petit fichier dont le contenu se lit directement dans le $MFT, sans image disque.
Validation renforcée
Le flag est greppable en clair dans le $MFT. Pour forcer l'analyse, la soumission exige trois éléments : le flag, le chemin complet et la technique. Le chemin complet est le discriminant, car il existe beaucoup de RuntimeBroker.exe légitimes. L'énoncé reste volontairement vague.