Points clés de cet article
- Comprendre les fondamentaux et les enjeux liés à AmCache & ShimCache - Guide Pratique Cybersecurite
- Découvrir les bonnes pratiques et méthodologies recommandées par nos experts
- Mettre en œuvre les solutions techniques et organisationnelles présentées
🔍 AmCache & ShimCache : Reconstruire l'exécution des programmes
Guide expert d'analyse forensique Windows : maîtrisez AmCache et ShimCache pour reconstruire l'historique d'exécution, corréler les artefacts MFT/Prefetch, et mener des investigations numériques approfondies. La reponse aux incidents et l'analyse forensique requierent une expertise technique pointue et une methodologie rigoureuse. Les equipes DFIR sont confrontees a des defis croissants : volumes de donnees massifs, techniques d'evasion poussées et environnements hybrides cloud. Cet article fournit un guide technique complet avec des procedures detaillees et des exemples concrets pour les professionnels de l'investigation numerique. Cet article fournit une analyse technique approfondie et des recommandations pratiques pour les professionnels de la cybersecurite. Les concepts presentes sont issus de retours d'experience terrain et des meilleures pratiques du secteur. Les equipes techniques y trouveront des methodologies eprouvees, des outils recommandes et des strategies de mise en oeuvre adaptees aux environnements de production modernes. La maitrise de ces sujets est devenue incontournable dans le contexte actuel de menaces en constante evolution.
Disposez-vous d'un kit de forensique prêt à l'emploi en cas de compromission ?
Introduction : L'importance cruciale des artefacts d'exécution en investigation numérique
L'analyse forensique Windows moderne repose sur la capacité à reconstruire avec précision l'historique d'exécution des programmes sur un système compromis ou suspect. Dans cet écosystème complexe d'artefacts numériques, AmCache et ShimCache émergent comme des sources d'information particulièrement précieuses, offrant des perspectives uniques sur l'activité des applications, leur chronologie d'exécution et leurs interactions avec le système d'exploitation.
Ces deux mécanismes, bien que souvent confondus par les analystes débutants, remplissent des fonctions distinctes au sein de l'architecture Windows et capturent des informations complémentaires. AmCache, introduit avec Windows 8 et considérablement étendu dans Windows 10 et 11, représente une évolution majeure du système de compatibilité applicative de Microsoft. ShimCache, présent depuis Windows XP, continue de jouer un rôle fondamental dans le sous-système de compatibilité, enregistrant les tentatives d'exécution et les vérifications de compatibilité effectuées par le système.
💡 Scénarios d'investigation critiques
- Détection de malware : Identifier les exécutables malveillants et leur chronologie d'activité
- Analyse d'intrusion : Reconstruire la progression d'une attaque APT
- Investigation de fraude interne : Tracer l'utilisation non autorisée de logiciels
- Audit de conformité : Vérifier l'absence de logiciels non conformes
- Reconstruction post-incident : Établir une timeline détaillée des événements
Notre avis d'expert
L'analyse de la mémoire vive est devenue incontournable dans les investigations modernes. Les malwares fileless, les attaques living-off-the-land et les techniques d'injection en mémoire ne laissent souvent aucune trace sur le disque. Ignorer la RAM, c'est passer à côté de 60% des preuves.
Partie I : Architecture et mécanismes fondamentaux d'AmCache
Ce diagramme présente une vue d'ensemble de l'architecture système montrant comment les données transitent depuis l'exécution d'une application jusqu'à leur stockage dans AmCache et ShimCache, ainsi que leur exploitation forensique ultérieure.
1.1 Genèse et évolution d'AmCache
AmCache.hve représente une base de données de registre spécialisée introduite avec Windows 8 pour remplacer l'ancien mécanisme RecentFileCache.bcf. Cette évolution n'était pas simplement cosmétique mais répondait à des besoins croissants en matière de compatibilité applicative et de télémétrie système. Le fichier, stocké dans C:\\Windows\\appcompat\\Programs\\Amcache.hve, maintient un inventaire détaillé des applications exécutées, installées et présentes sur le système.
L'architecture d'AmCache s'articule autour de plusieurs clés de registre principales, chacune servant un objectif spécifique dans le processus de catalogage des applications. La structure a considérablement évolué entre les différentes versions de Windows, nécessitant une approche adaptative de la part des analystes forensiques. Dans Windows 10 version 1607 et ultérieures, Microsoft a introduit des modifications substantielles dans la structure des données, ajoutant de nouveaux champs et réorganisant les clés existantes pour améliorer la granularité des informations collectées.
1.2 Structure interne et organisation des données
L'architecture interne d'AmCache s'organise autour de plusieurs branches principales dans la ruche de registre. La clé Root\\File contient les informations détaillées sur les fichiers exécutables, incluant leur hash SHA1, leur chemin d'accès, leur taille, et diverses métadonnées. Cette section constitue souvent le point d'entrée principal pour les investigations forensiques, car elle fournit une vue exhaustive des binaires ayant interagi avec le système.
Points d'attention specifiques
La clé Root\\Programs maintient un inventaire des applications installées, avec des informations provenant directement des métadonnées d'installation Windows Installer ou extraites des exécutables eux-mêmes. Cette section inclut des détails tels que le nom du programme, l'éditeur, la version, la date d'installation, et parfois même des informations de désinstallation. La corrélation entre les entrées File et Programs permet de distinguer les applications légitimement installées des exécutables potentiellement malveillants exécutés de manière isolée.
1.3 Mécanismes de mise à jour et persistance
Le processus de mise à jour d'AmCache suit un modèle asynchrone complexe orchestré par le service Application Experience (AeLookupSvc) et le Programme d'amélioration de l'expérience utilisateur Windows. Les nouvelles entrées ne sont pas immédiatement écrites dans le fichier hve mais sont d'abord collectées en mémoire et dans des fichiers temporaires avant d'être consolidées périodiquement.
⚠️ Implications forensiques de l'architecture asynchrone
Un exécutable peut être lancé et terminé bien avant que son entrée n'apparaisse dans AmCache, créant un décalage temporel que l'analyste doit prendre en compte. En cas d'arrêt brutal du système, certaines informations peuvent ne jamais être persistées, laissant des lacunes dans l'historique d'exécution.
Cas concret
L'analyse de Stuxnet, considéré comme le premier cyberarme étatique, a nécessité des mois de rétro-ingénierie par les équipes de Symantec et Kaspersky. La forensique a révélé un niveau de sophistication sans équivalent : exploitation de 4 zero-days Windows, ciblage de contrôleurs Siemens spécifiques et mécanismes de propagation USB multiples.
Vos journaux d'événements sont-ils conservés suffisamment longtemps pour une investigation ?
Partie II : ShimCache - Le gardien silencieux de la compatibilité
2.1 Fondements du système de compatibilité Windows
ShimCache, également connu sous le nom d'Application Compatibility Cache ou AppCompatCache, constitue un composant fondamental du sous-système de compatibilité Windows depuis Windows XP. Son rôle principal consiste à optimiser les vérifications de compatibilité en maintenant un cache des exécutables précédemment analysés, évitant ainsi des vérifications répétitives coûteuses en ressources. Pour approfondir, consultez Top 10 des Attaques.
Le mécanisme ShimCache opère au niveau du noyau Windows, interceptant les appels système liés à l'exécution de programmes. Lorsqu'un processus tente de démarrer un exécutable, le gestionnaire de compatibilité consulte d'abord le cache pour déterminer si des shims (correctifs de compatibilité) doivent être appliqués. Cette vérification génère une entrée dans ShimCache, qu'il y ait ou non application effective de shims, créant ainsi un journal détaillé des tentatives d'exécution.
💡 Importance forensique de ShimCache
ShimCache capture des informations sur des programmes qui n'ont peut-être jamais été réellement exécutés avec succès. Un malware bloqué par un antivirus, un exécutable corrompu, ou un programme incompatible peuvent tous laisser des traces dans ShimCache, offrant une visibilité sur des tentatives d'exécution échouées que d'autres artefacts pourraient manquer.
2.2 Structure et format des données ShimCache
La structure de ShimCache varie considérablement selon la version de Windows, nécessitant des approches d'analyse différenciées. Dans Windows XP et Server 2003, les données sont stockées dans un format binaire propriétaire sous la clé de registre SYSTEM\\CurrentControlSet\\Control\\Session Manager\\AppCompatCache. Windows Vista et 7 ont introduit un nouveau format, conservant la même localisation mais modifiant la structure des données pour inclure des champs supplémentaires.
| Version Windows | Nombre max entrées | Localisation | Particularités |
|---|---|---|---|
| Windows XP/2003 | 96 | SYSTEM\\CurrentControlSet\\Control\\Session Manager\\AppCompatibility\\AppCompatCache | Format binaire propriétaire |
| Windows Vista/7/2008 | 512-1024 | SYSTEM\\CurrentControlSet\\Control\\Session Manager\\AppCompatCache | Nouveau format avec champs étendus |
| Windows 8/8.1/2012 | 1024+ | SYSTEM\\CurrentControlSet\\Control\\Session Manager\\AppCompatCache | Structure réorganisée |
| Windows 10/11/2016+ | 1024+ | SYSTEM\\CurrentControlSet\\Control\\Session Manager\\AppCompatCache | Capacité augmentée, format évolué |
2.3 Dynamique de peuplement et ordre des entrées
Le processus de peuplement de ShimCache suit une logique FIFO (First In, First Out) modifiée, où les nouvelles entrées sont ajoutées et les plus anciennes sont évincées lorsque la limite de capacité est atteinte. Cependant, la complexité réside dans le fait que les entrées ne sont écrites dans le registre qu'au moment de l'arrêt du système ou lors de certains événements de maintenance système.
⚠️ Mise à jour différée - Implications critiques
- Un système qui n'a pas été arrêté proprement peut perdre toutes les entrées ShimCache accumulées depuis le dernier démarrage
- L'acquisition mémoire peut révéler des entrées non encore persistées dans le registre
- L'ordre des entrées fournit des informations chronologiques relatives précieuses
Partie III : Différences fonctionnelles et complémentarité
3.1 Divergences dans les mécanismes de capture
La distinction fondamentale entre AmCache et ShimCache réside dans leurs déclencheurs de capture et la nature des événements qu'ils enregistrent. AmCache adopte une approche plus sélective, se concentrant principalement sur les nouvelles exécutions et les installations d'applications. Son mécanisme de déclenchement est étroitement lié au service Application Experience et au système de télémétrie Windows, capturant des événements jugés significatifs pour l'amélioration de l'expérience utilisateur et la compatibilité applicative.
ShimCache, en revanche, opère à un niveau plus bas dans la pile d'exécution Windows, interceptant pratiquement toutes les tentatives d'exécution de fichiers exécutables. Cette position privilégiée lui permet de capturer des événements que AmCache pourrait manquer, notamment les exécutions échouées, les vérifications de compatibilité sans exécution subséquente, et les lancements de programmes système de bas niveau.
| Caractéristique | AmCache | ShimCache |
|---|---|---|
| Niveau d'opération | Service utilisateur (AeLookupSvc) | Noyau Windows (kernel-level) |
| Déclencheurs | Exécutions nouvelles, installations | Toutes tentatives d'exécution |
| Persistance | Asynchrone (délai variable) | À l'arrêt système |
| Métadonnées | Riches (SHA1, éditeur, version, etc.) | Minimales (chemin, timestamp mod.) |
| Rétention temporelle | Mois à années | Jours à semaines (systèmes actifs) |
| Capacité | Illimitée (fichier HVE extensible) | Limitée (1024 entrées Windows 10+) |
3.2 Richesse et profondeur des métadonnées
AmCache excelle dans la richesse des métadonnées qu'il collecte pour chaque entrée. Au-delà des informations basiques comme le nom et le chemin du fichier, AmCache peut capturer le hash SHA1, les informations de version, l'éditeur du logiciel, la description du programme, les certificats numériques associés, et même des détails sur le contexte d'installation. Cette profondeur d'information fait d'AmCache une ressource inestimable pour l'identification et la caractérisation des applications. Les recommandations de MITRE ATT&CK constituent une reference essentielle.
3.3 Fenêtres temporelles et persistance des données
Les horizons temporels couverts par AmCache et ShimCache diffèrent considérablement, influençant leur utilité respective dans différents scénarios d'investigation. AmCache peut conserver des données sur plusieurs mois, voire années, en fonction de l'activité système et des politiques de maintenance. Cette persistance étendue en fait une source privilégiée pour les investigations rétrospectives et l'analyse de compromissions de longue durée.
ShimCache, limité par sa capacité fixe et son mécanisme FIFO, offre généralement une fenêtre temporelle plus restreinte mais plus dense en événements récents. Sur un système actif, ShimCache peut ne couvrir que quelques jours ou semaines d'activité, mais avec une exhaustivité supérieure pour cette période. Cette caractéristique le rend particulièrement précieux pour l'analyse d'incidents récents et la détection d'activités suspectes en temps quasi-réel.
Partie IV : Méthodes d'extraction et analyse technique
4.1 Extraction d'AmCache : approches et outils
L'extraction d'AmCache nécessite une approche méthodique adaptée au contexte de l'investigation. Sur un système hors ligne, la copie directe du fichier Amcache.hve depuis le répertoire C:\\Windows\\appcompat\\Programs\\ constitue la méthode la plus simple. Cependant, cette approche basique peut manquer les transactions non commitées et les données en cours de traitement. Pour approfondir, consultez Registry Forensics.
Pour une extraction complète sur un système en ligne, l'utilisation d'outils spécialisés comme FTK Imager, KAPE (Kroll Artifact Parser and Extractor), ou Arsenal Image Mounter permet de contourner les verrous de fichiers et d'accéder aux données actives. L'exemple PowerShell suivant illustre une extraction programmatique utilisant les shadow copies :
# Création d'une shadow copy pour extraction sécurisée
$shadow = (gwmi -list win32_shadowcopy).Create("C:\\", "ClientAccessible")
$shadowID = $shadow.ShadowID
$shadowPath = (gwmi win32_shadowcopy | ? {$_.ID -eq $shadowID}).DeviceObject
# Extraction d'AmCache depuis la shadow copy
cmd /c mklink /d C:\\ShadowExtract "$shadowPath\\"
Copy-Item "C:\\ShadowExtract\\Windows\\appcompat\\Programs\\Amcache.hve" "D:\\Evidence\\Amcache.hve"
# Nettoyage
cmd /c rmdir C:\\ShadowExtract
(gwmi win32_shadowcopy | ? {$_.ID -eq $shadowID}).Delete()
🛠️ Outils d'analyse recommandés
- AmcacheParser (Eric Zimmerman) - Parsing ligne de commande avec exports CSV/JSON
- RegRipper avec plugin amcache.pl - Analyse automatisée de registre
- EnCase / X-Ways Forensics - Solutions commerciales avec modules dédiés
- KAPE - Collection et parsing automatisés pour triages
4.2 Techniques d'extraction de ShimCache
L'extraction de ShimCache présente des défis uniques dus à sa nature volatile et à son stockage dans le registre système actif. Sur un système hors ligne, l'extraction implique l'analyse du fichier SYSTEM de la ruche de registre, typiquement situé dans C:\\Windows\\System32\\config\\. La clé pertinente SYSTEM\\CurrentControlSet\\Control\\Session Manager\\AppCompatCache contient les données binaires nécessitant un parsing spécialisé.
# Extraction des données ShimCache du registre actif
$shimCachePath = "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager"
$appCompatCache = Get-ItemProperty -Path $shimCachePath -Name AppCompatCache
# Export vers fichier binaire pour analyse ultérieure
[System.IO.File]::WriteAllBytes("D:\\Evidence\\shimcache.bin", $appCompatCache.AppCompatCache)
# Alternative : export de la ruche SYSTEM complète
reg save HKLM\\SYSTEM D:\\Evidence\\SYSTEM.hive /y
⚠️ Acquisition mémoire recommandée
L'acquisition mémoire représente l'approche la plus complète pour capturer l'état actuel de ShimCache, incluant les entrées non encore persistées. Utilisez des outils comme WinPMEM, DumpIt, ou Magnet RAM Capture, suivis de l'analyse avec Volatility ou Rekall utilisant des plugins spécialisés shimcache.
Analyse approfondie et recommandations
4.3 Parsing et interprétation des données brutes
Le parsing des données AmCache et ShimCache nécessite une compréhension approfondie de leurs structures binaires respectives et de leurs variations entre versions Windows. Pour AmCache, la structure de registre standard facilite relativement l'accès aux données, mais l'interprétation des valeurs nécessite une connaissance des conventions de codage utilisées.
Les timestamps dans AmCache sont particulièrement complexes, utilisant différents formats selon le champ : FILETIME Windows pour certains, timestamps Unix pour d'autres, et parfois des formats propriétaires Microsoft. Exemple de parsing Python basique :
import struct
from datetime import datetime, timedelta
import Registry
def parse_amcache_entry(reg_key):
"""Parse une entrée AmCache depuis une clé de registre"""
entry_data = {}
for value in reg_key.values():
if value.name() == "0": # Full path
entry_data['path'] = value.value().decode('utf-16-le').strip('\\x00')
elif value.name() == "1": # Last modified timestamp
entry_data['last_modified'] = filetime_to_dt(value.value())
elif value.name() == "f": # File size
entry_data['size'] = struct.unpack('<Q', value.value())[0]
elif value.name() == "101": # SHA1 hash
entry_data['sha1'] = value.value().hex()
return entry_data
def filetime_to_dt(filetime_bytes):
"""Convertit FILETIME Windows en datetime Python"""
filetime = struct.unpack('<Q', filetime_bytes)[0]
return datetime(1601, 1, 1) + timedelta(microseconds=filetime/10)