Skip to content

ShellBags et fichiers ZIP : prouver la navigation

Comment les ShellBags enregistrent la navigation dans les ZIP et autres archives via l'Explorateur, le contenu de ces items et l'interprétation des chemins.

Publié le 6 min de lecture

TL;DR. Quand un utilisateur ouvre un fichier ZIP dans l'Explorateur, Windows le traite comme un dossier, et l'arborescence des ShellBags reçoit une entrée pour le ZIP (un item file entry) avec des entrées enfants pour chaque répertoire parcouru à l'intérieur. Cela prouve que l'utilisateur a regardé dans l'archive et quels dossiers internes il a ouverts. Cela ne prouve ni l'extraction ni l'exécution. Selon libfwsi, les items internes à un ZIP sont des items « compressed folder » identifiés par leur ancêtre ; sous Windows 10, ils contiennent les tailles de l'entrée, la méthode de compression, le CRC-32 et la date de modification sous forme de texte.

Les archives apparaissent dans presque toutes les affaires d'intrusion ou internes : boîtes à outils livrées en ZIP, données préparées en archive avant exfiltration, utilisateur qui affirme n'avoir « jamais ouvert » une pièce jointe. Les ShellBags font partie des rares artefacts capables de montrer ce qu'un utilisateur a regardé à l'intérieur d'une archive sans l'extraire.

Comment l'Explorateur gère les archives

Depuis Windows XP, le gestionnaire intégré des dossiers compressés permet à l'Explorateur d'afficher un ZIP comme un dossier. Double-cliquer sur tools.zip ouvre une vue de dossier ; double-cliquer sur un répertoire à l'intérieur navigue plus loin. Chacune de ces navigations passe par l'espace de noms du shell, et reçoit donc une entrée BagMRU, comme n'importe quel dossier.

Sous Windows 11, la mise à jour KB5031455 de Microsoft (octobre 2023) a ajouté la lecture native des formats .rar, .7z, .tar, .tar.gz, .tgz et apparentés via le projet libarchive. Parcourir ces archives dans l'Explorateur laisse vraisemblablement des traces comparables, mais je n'ai pas vu de description publique et testée de leurs shell items. Si votre dossier en dépend, testez sur la même build.

Les archives ouvertes dans des outils tiers (gestionnaire de fichiers de 7-Zip, WinRAR) ne passent pas par le gestionnaire d'archives de l'Explorateur : elles ne créent pas d'entrées sous l'archive. Ces outils ont leur propre historique, souvent dans NTUSER.DAT sous des clés propres à l'éditeur.

À quoi ressemble l'arborescence

Tiré de l'échantillon du ShellBags Parser (données fictives) :

My Computer\C:\Users\svc_backup\Downloads              directory   MFT 88530/1
My Computer\C:\Users\svc_backup\Downloads\tools.zip    file        MFT 91004/2   [archive]
My Computer\C:\Users\svc_backup\Downloads\tools.zip\x64            [archive]
  • tools.zip est un item file entry avec l'indicateur « fichier » (type de classe 0x32), pas un répertoire. Il a des dates embarquées normales et une référence MFT, puisque le ZIP lui-même est un fichier NTFS.
  • x64 est à l'intérieur de l'archive. Son parent dans l'arborescence est la clé du ZIP. C'est cette relation qui prouve la navigation dans l'archive.
  • Le LastWrite de la clé tools.zip, avec x64 en tête de son MRUListEx, donne la « dernière interaction » de x64. Voir les horodatages des ShellBags expliqués.

Le parseur signale tout chemin qui passe par .zip, .7z, .rar, .cab, .iso, .tar, .gz, .tgz ou .vhd(x) comme Dans une archive : ces entrées ressortent avec le filtre Signalés uniquement. Les fichiers ISO et VHD sont inclus parce que Windows les monte comme des lecteurs ; dans ce cas, leur contenu apparaît généralement sous une nouvelle lettre de lecteur plutôt que sous le fichier.

Ce que contiennent les items internes à l'archive

Le Windows Shell Item format de libfwsi documente le compressed folder shell item comme identifié par son ascendance (son parent est l'archive) plutôt que par une valeur de type de classe. Sa structure varie selon la version :

VersionChamps notables
Windows XPDate de modification sous forme de chaîne UTF-16 (mm/dd/yy HH:MM), chaînes de nom
Windows 10Tailles non compressée et compressée, méthode de compression (0x00 stocké, 0x08 DEFLATE), CRC-32, date de modification en texte (mm/dd/yyyy HH:MM:SS, ou une chaîne « N/A »), chaînes de nom

Ce sont des éléments utiles :

  • Le CRC-32 et les tailles de l'entrée telle qu'elle était dans l'archive peuvent aider à rapprocher une archive vue sur ce poste d'une archive retrouvée ailleurs.
  • La date de modification est celle stockée pour cette entrée dans le ZIP, sous forme de texte, pas une date du système de fichiers de ce poste. Considérez son fuseau horaire comme inconnu tant que vous ne l'avez pas testé.
  • Pas de référence MFT : le contenu n'existe pas comme fichier NTFS tant qu'il n'est pas extrait.

Prise en charge par les parseurs

Le décodage varie. Le ShellBags Parser décode le file entry de l'archive elle-même et conserve le chemin complet, mais son README indique que les items de contenu ZIP (0x52) ne sont pas encore entièrement décodés : attendez-vous à un nom approximatif, ou à un libellé « unknown shell item » avec l'hexadécimal brut dans le panneau de détails. SBECmd et ShellBags Explorer gèrent davantage de ces items. Pour les affaires riches en archives, recoupez avec eux (comparatif d'outils).

Interpréter les entrées d'archives

Vous voyezVous pouvez direVous ne pouvez pas dire
Entrée pour x.zip sans enfantLe dossier parent du ZIP a été parcouru et le ZIP y a été listé/sélectionnéQue le ZIP a été ouvert
Enfants sous x.zipL'utilisateur a ouvert le ZIP dans l'Explorateur et parcouru ces dossiers internesQue des fichiers ont été extraits, ouverts ou exécutés
x.zip dans Downloads, créé quelques minutes avant la navigationCohérent avec un téléchargement suivi d'une inspection immédiateSa provenance (vérifiez Zone.Identifier, l'historique du navigateur)
ZIP supprimé (absent du disque) avec des enfants dans les ShellBagsL'archive a existé et a été parcourue ; son enregistrement MFT peut être vérifiéCe qu'elle contenait d'autre que les dossiers parcourus

Prouver l'étape suivante

Les archives de staging pour l'exfiltration

Le schéma inverse est courant aussi : des données compressées dans une archive, puis déplacées. Les ShellBags aident quand l'utilisateur a navigué dans l'archive pour vérifier son contenu, ou a parcouru le dossier qui la contenait. Une archive créée par 7z.exe ou par Compress-Archive en PowerShell depuis une console ne laisse aucun ShellBag ; regardez plutôt les artefacts d'exécution et le journal USN.

FAQ

Les ShellBags montrent-ils qu'un fichier ZIP a été extrait ?

Non. Ils montrent que l'utilisateur a navigué dans l'archive avec l'Explorateur. L'extraction crée des fichiers sur le disque, que l'on prouve avec la MFT, le journal USN ou les fichiers LNK, pas avec les ShellBags.

Les ShellBags enregistrent-ils les archives 7z et RAR ?

Seulement quand l'Explorateur lui-même les a parcourues. Windows 11 ouvre nativement les formats RAR, 7z et tar depuis la mise à jour d'octobre 2023 KB5031455, mais les traces qu'ils laissent sont encore peu documentées ; les archives ouvertes dans 7-Zip ou WinRAR ne passent pas par le gestionnaire d'archives de l'Explorateur.

Articles liés

Articles liés