Bonjour à tous, pour changer on continue la série sur la forensics. Aujourd’hui je vais vous parler du ShimCache (dit aussi AppCompatCache, c’est la même chose), mais aussi du RecentFileCache et l’AMcache. Que l’on regroupe sous l’appelation Application Compatibility.
C’est quoi l’Application Compatibility de Windows ?
Alors l’Application Compatibility Cache, comme son nom l’indique, s’occupe d’assurer la rétrocompatibilité des applications prévus pour d’anciennes versions de Windows avec le système courant. Finalement, on y regroupe plusieurs éléments quand on parle forensics.
Le ShimCache (ou AppCompatCache)
D’abord de ShimCache, c’est un vieux truc qui date de Windows 95 ! Et dont le but initiale est surtout d’aider au débug pour les dev. Dedans, vous allez trouver plein d’informations relatives aux exécutions des programmes et qui peuvent varier un peu selon les versions de Windows. Vous trouverez notamment dans ce cache :
- Le chemin complet de l’exécutable ;
- La taille du fichier ;
- Les date de dernière modification et d’exécution.
- Si le programme a effectivement a lancé (mais pas trop loin hein).
RecentFileCache et AMcache
Le RecentFileCache est apparu avec Windows 2003 SP1 et le service « Windows Application Expérience Service Lookup ». Ce dernier a pour but de mettre à jour les programmes pour qu’il soit compatible avec le service pack installé. De la même manière que le ShimCache, il va enregistrer des informations sur les programmes qui ont tournés sur la machine. Il a un peu de moins de rétention que le ShimCache mais c’est une source d’information pertinente malgré tout.
Ou trouver les information d’Application Compatibility ?
ShimCache (AppCompatCache)
Alors comme d’habitude depuis quelques TP, toutes les informations de ce cache se trouvent dans le registre :
- Jusqu’a Windows XP :
HKLM\SYSTEM\CurrentControlSet\Control\SessionManager\AppCompatibility
; - et de 2003 et plus :
HKLM\SYSTEM\CurrentControlSet\Control\SessionManager\AppCompatCache
;
Attention : lorsque le système est en ligne les information sont en mémoire (kernel) et elles ne sont enregistrée dans le registre qu’a l’extinction de la machine.
RecentFileCache et AMcache
Pour le RecentFileCache c’est le fichier RecentFileCache.bcf
dans C:\Windows\AppCompat\Programs
que vous trouverez les données… jusqu’à Windows 8. A partire de cette version le fichier à été remplacé par Amcache.hve
. Notez l’extension HVE pour Hive : c’est un fichier de registre, directement qui est un peu plus complet de le bcf. Il inclut notamment un condensat SHA1 du programme qui pourra ensuite être utilisé dans un EDR, une campagne de hunting DFIR-ORC, ou tout simplement sur VirusTotal.
Comment on le collecte tout ça ?
Alors comme d’hab’ on a Eric Zimmerman qui nous gâte avec une pelleté d’outils :
- AmcacheParser pour le Amcache.hve
- AppCompatCacheParser pour le ShimCache ;
ou SDB ExplorerGUI pour ceux qui veulent une belle IHM. - RecentFileCacheParser pour le RecentFileCache.bcf (La j’ai pas de Windows XP sous la main pour vous faire un test)
En version payante TZworks propose aussi les outils : Windows Shim Database (SDB) Parser et Windows AppCompatibility Cache Utility qui vous permettent d’explorer ces artefacts. Sinon pour Linux, vous pouvez aussi utiliser ShimCacheParser de Mandiant sous Linux et plein d’amcacheparser.py
que vous trouverez vous même sur github.
Quel intérêt des Application Compatibility pour l’investigation ?
Comme pour le SRUM, ces caches vont permettre d’identifier des programmes qui ont été exécutés sur une machine. Y compris si ces derniers ont été supprimé entre temps. Un des avantages du ShimCache est également qu’il stocke beaucoup plus d’élément que le Prefetch (128 fichiers pour rappel), par exemple jusqu’à 1024 entrées sous un Windows 7.
L’autre argument massue du AppCompatCache/ShimCache, c’est qu’il fonctionne y compris sur des fichiers qui n’ont pas été exécuté. En effet, le mécanisme de mise en cache peut avoir lieu sur une simple modification de métadonnées sur un exécutable ou de déplacement du binaire. Cela signifie que vous pouvez avoir dedans des malwares qui juste ont transités sur le système sans être exécuté. C’est très utile si vous avez trouvés un point d’entrée ou de rebond de votre attaquant dans le SI et par lequel son armement à transité.
La contrepartie, c’est que le mécanisme qui alimente le ShimCache n’est pas super bien documenté. On sait que la création de fichier et l’exécution d’un binaire déclenche la mise en cache mais on ne dispose pas de l’ensemble des mécanismes derrière à ma connaissance.
Côté AMache, c’est plus carré. On a sur le sujet THE bible by Anssi par Blanche L. Qui vous explique la vie et l’œuvre de ce cache MS : ANALYSIS OF THE AMCACHE et ses slides au CORIN 2019 associé au doc.
Conclusion
Voilà, pour les sujets « Application Compatibility » de Windows pour la forensics. Comme d’habitude je vous laisse avec le lien vers le lien forensicswiki qui pointe également quelques ressources à explorer si vous creusez ce sujet.
https://forensicswiki.xyz/wiki/index.php?title=Windows_Application_Compatibility
Un TP forensics de plus fait, comme je vous l’ai dis, pour l’instant je passe item par item histoire de bien comprendre ce qu’il y a derrière chaque terme et vous donner les pointeurs nécessaires à la compréhension d’un rapport forensic. On en a encore pour un moment parce qu’il y a un paquet de truc à contrôler sur une Windows quand même… mais vous inquiétez pas on finira par arriver à la création d’une timeline et des outils de recherche automatisé sur tout un disque.