Exécution
Programmes installés (clés Uninstall, MSI, AppX)
Fiche programmes installés : clés Uninstall, événements MSI 1033/11707, MSI en cache, paquets AppX, journaux winget et Amcache pour dater les installations.
- Emplacement
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
- Prouve
- Quels logiciels ont été installés ou désinstallés, où, à peu près quand et, pour les MSI, par quel compte
- Horodatages
- LastWrite des clés Uninstall (FILETIME, UTC), chaîne InstallDate (AAAAMMJJ, date locale sans heure), événements MsiInstaller (UTC), InstallDate d'Amcache
- Rétention
- Les clés Uninstall restent jusqu'à la désinstallation ; Application.evtx tourne à 20 Mo par défaut, soit souvent quelques semaines à quelques mois
- Accès
- Ruches HKLM et Application.evtx verrouillées à chaud : copie brute ou VSS en administrateur ; la lecture du registre en direct marche en simple utilisateur
- Preuve de
- ExécutionPersistance
- Type
- Registre
- Windows
- XPVista / 78 / 8.11011
- Cible KAPE
- RegistryHivesSystemRegistryHivesUserEventLogsAmcache
- Velociraptor
- Windows.Triage.Targets:RegistryHivesSystemRegistryHivesUserEventLogsAmcache
Outils
Comparer tous les outilsPrésentation
Windows n'a pas d'historique de gestionnaire de paquets unique, mais plusieurs sources jouent ce rôle ensemble. Les clés de registre Uninstall alimentent « Applications et fonctionnalités » et « Programmes et fonctionnalités ». Windows Installer (msiexec) journalise chaque installation et désinstallation MSI dans le journal Application et met le paquet en cache sous C:\Windows\Installer. Les applications Store et MSIX sont suivies par la pile de déploiement AppX dans une base d'état. Les gestionnaires de paquets comme winget et Chocolatey tiennent leurs propres journaux, et Amcache garde un inventaire indépendant. Quand un attaquant installe un outil d'accès distant, un client VPN ou un paquet de pilote vulnérable, c'est là que la trace reste.
Emplacement
| Source | Chemin |
|---|---|
| Machine, 64 bits | HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<ProductCode ou nom> |
| Machine, 32 bits sur x64 | HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\... |
| Installations par utilisateur | HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\... (dans le NTUSER.DAT de chaque utilisateur) |
| Données produit MSI | HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Products\<GUID compacté>\InstallProperties |
| Événements MSI | C:\Windows\System32\winevt\Logs\Application.evtx, fournisseur MsiInstaller |
| Paquets en cache | C:\Windows\Installer\*.msi et *.msp (cachés, noms aléatoires) |
| AppX / MSIX | C:\Program Files\WindowsApps\, C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd, journal Microsoft-Windows-AppXDeploymentServer/Operational |
| winget | En général %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\*.log |
| Chocolatey | En général C:\ProgramData\chocolatey\logs\chocolatey.log et C:\ProgramData\chocolatey\lib\ |
| Amcache | C:\Windows\AppCompat\Programs\Amcache.hve, clé Root\InventoryApplication (Windows 10 et suivants) |
Les chemins des gestionnaires de paquets dépendent de la version et de la portée d'installation : vérifiez sur un système de référence.
Ce que l'artefact prouve
- Présence d'un logiciel : un produit a été enregistré comme installé, avec nom, version, éditeur et dossier d'installation.
- Date approximative d'installation : via
InstallDate, l'horodatage LastWrite de la clé et les événements MsiInstaller. - Qui l'a installé : les événements MSI portent le SID de l'utilisateur,
InstallPropertiesest rangé sous le SID installateur (ouS-1-5-18pour une installation machine), et les entrées HKCU appartiennent au profil concerné. - Désinstallation : événements 1034 ou 11724, et dossiers ou MSI en cache orphelins une fois la clé Uninstall disparue.
Il ne prouve pas que le programme a été lancé. Les outils portables (binaires décompressés, AnyDesk.exe exécuté depuis Téléchargements) ne créent jamais de clé Uninstall : passez par le Prefetch et les entrées fichiers d'Amcache. Une clé Uninstall peut aussi être écrite à la main : une clé isolée est une affirmation, pas une preuve.
Champs clés
| Champ | Signification |
|---|---|
DisplayName, DisplayVersion, Publisher | Ce que le produit déclare être |
InstallDate | Chaîne AAAAMMJJ écrite par l'installeur ; facultative, date seule |
InstallLocation | Dossier d'installation ; pivot vers la $MFT et les entrées fichiers d'Amcache |
InstallSource | Dossier depuis lequel l'installeur a tourné (Téléchargements, partage, ISO monté) |
UninstallString, QuietUninstallString | Commande de désinstallation ; un chemin inhabituel est suspect |
WindowsInstaller = 1 | Produit géré par MSI ; le nom de la clé est le GUID ProductCode |
LocalPackage (InstallProperties) | Chemin du MSI en cache dans C:\Windows\Installer |
| MsiInstaller 1033 / 1034 | Produit installé / supprimé, avec nom, version, fabricant et code de statut |
| MsiInstaller 11707 / 11724 | Installation / suppression terminée avec succès (11708 = échec d'installation) |
Horodatages
- LastWrite de la clé (FILETIME, UTC) : positionné à l'installation, mais aussi par les réparations, mises à jour et certains outils d'auto-mise à jour. C'est donc une borne haute.
- InstallDate : date locale sans heure, écrite par l'installeur lui-même. Certains la laissent vide ou y mettent la date de compilation.
- Événements MsiInstaller : horodatages UTC précis ; le point d'ancrage le plus fiable pour les produits MSI.
InventoryApplicationd'Amcache : possède son propreInstallDateet un champSource(par exempleAddRemoveProgramouMsi) ; utile quand la clé Uninstall a été supprimée.- Création du dossier
InstallLocationet du.msien cache ($SI et $FN dans la $MFT) : corrobore la date d'installation.
Rétention et effacement
Les clés Uninstall restent jusqu'à la suppression du produit ; une désinstallation propre efface la clé mais laisse souvent le dossier d'installation, le Prefetch, les entrées Amcache et les événements MsiInstaller. Application.evtx est limité à 20 Mo par défaut et tourne : sur un serveur chargé, les événements MSI peuvent disparaître en quelques semaines. Les clés supprimées peuvent survivre dans les journaux de transactions du registre, l'espace non alloué des ruches et les clichés instantanés.
Collecte
Les cibles KAPE RegistryHivesSystem, RegistryHivesUser, EventLogs et Amcache couvrent l'essentiel. Sur un système actif :
# Les trois vues Uninstall (HKCU uniquement pour l'utilisateur courant)
$paths = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty $paths | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, InstallLocation, InstallSource |
Export-Csv E:\case\uninstall.csv -NoTypeInformation
# Événements MsiInstaller d'installation et de suppression
Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='MsiInstaller'; Id=1033,1034,11707,11724} |
Select-Object TimeCreated, Id, UserId, Message | Export-Csv E:\case\msi.csv -NoTypeInformation
# Paquets AppX de tous les utilisateurs (administrateur)
Get-AppxPackage -AllUsers | Select-Object Name, PackageFullName, InstallLocation | Export-Csv E:\case\appx.csv -NoTypeInformation
robocopy C:\ProgramData\Microsoft\Windows\AppRepository E:\case\AppRepository StateRepository-Machine.srd* /B
Outils d'analyse
- Registry Explorer et RegRipper (plugin
uninstall) pour les ruches hors ligne, clés supprimées comprises. - AmcacheParser (Eric Zimmerman) exporte
InventoryApplicationet relie les fichiers aux programmes viaProgramId. - EvtxECmd avec ses maps, ou l'artefact Velociraptor
Windows.EventLogs.EvtxHunter, pour les événements MsiInstaller. - Velociraptor
Windows.Sys.Programsliste les entrées Uninstall sur les postes actifs. StateRepository-Machine.srdest une base SQLite : ouvrez une copie avec DB Browser for SQLite et examinez la tablePackageet les tables associées.msiinfo(msitools) ou Orca pour lire les informations de résumé des.msien cache, qui révèlent le nom d'origine du produit.
Conseils d'investigation
- Cherchez les outils d'accès distant et de tunnel (AnyDesk, ScreenConnect, Atera, TeamViewer, NetSupport, ngrok) et comparez à votre référentiel logiciel. Voir la fiche outils d'accès distant.
- Un
InstallSourcesous\Downloads\,\Temp\ou sur une lettre de lecteur correspondant à une image disque montée montre comment l'installeur est arrivé. - Les installations par utilisateur dans HKCU ne demandent pas de droits administrateur : les attaquants les apprécient, et il faut donc examiner le NTUSER.DAT de chaque profil.
- Un
.msien cache dansC:\Windows\Installersans clé Uninstall correspondante signale un produit supprimé ; ses dates $MFT et ses informations de résumé disent quoi et quand. - Les actions personnalisées MSI tournent en SYSTEM pour les installations machine : rapprochez l'heure d'installation des nouveaux services, pilotes noyau et tâches planifiées créés dans la même minute.
- Pour les preuves d'exécution du produit installé, passez au Prefetch, aux entrées fichiers d'Amcache et au BAM.
Artefacts liés
- Amcache.hveFiche Amcache.hve : clés d'inventaire des fichiers et programmes, SHA-1, métadonnées PE, horodatages, et pourquoi une entrée ne prouve pas l'exécution.
- Services WindowsFiche services Windows : valeurs de la clé Services (ImagePath, Start, Type, ServiceDll), événements 7045 et 4697, traces de PsExec et pièges.
- Ruches du registreFiche ruches du registre : SYSTEM, SOFTWARE, SAM, SECURITY, NTUSER.DAT, UsrClass.dat, journaux de transactions, RegBack, LastWrite et collecte.
- Journaux d'événements Windows (EVTX)Fiche des journaux d'événements Windows : emplacements EVTX, ID indispensables (connexions, processus, services, effacement), rétention, audit et outils.
- Outils d'accès distant (RMM)Fiche RMM et outils d'accès distant : AnyDesk, TeamViewer, ScreenConnect, leurs journaux, IDs de connexion, IP et horodatages, et comment traquer l'abus.
- Pilotes noyau (.sys, services de pilote, BYOVD)Fiche pilotes noyau : services de pilote (Type 1/2), événement 7045, DriverStore, setupapi.dev.log, Amcache et journaux CodeIntegrity contre BYOVD et rootkits.
- Fichiers Prefetch (.pf)Fiche Prefetch Windows : emplacement des .pf par version, nombre d'exécutions, huit dernières dates, fichiers référencés, rétention et analyse.
Termes du glossaire
- Ruche du RegistreUn fichier sur disque qui supporte une partie du Registre Windows, comme `SYSTEM`, `SOFTWARE` ou `NTUSER.DAT`.
- LastWrite d'une clé de RegistreL'unique FILETIME stocké dans chaque clé de Registre, qui indique en UTC la dernière modification de la clé ou de l'une de ses valeurs.
- Identifiant de sécurité (SID)La valeur unique qui identifie utilisateurs, groupes et ordinateurs sous Windows, comme S-1-5-21-…-1001, présente dans le Registre et les journaux.
- NTUSER.DATLa ruche du Registre propre à chaque utilisateur, stockée dans son profil et chargée comme HKEY_CURRENT_USER, riche en traces d'activité.
- ID d'événement WindowsLe numéro qui identifie un type d'événement au sein d'un fournisseur donné ; il n'a de sens qu'associé à ce fournisseur et à son canal.
Guides
- Forensique du Registre Windows : ruches, clés et méthodeLe Registre Windows en forensique : ruches, journaux de transactions, ControlSet, limites du LastWrite, clés supprimées, clés utiles et traitement avec RECmd.
- Chasser la persistance Windows : registre, tâches, WMIDétecter la persistance d'un attaquant sous Windows : clés Run, services, tâches planifiées, WMI, Winlogon, IFEO, COM et BITS, avec MITRE ATT&CK et outils.
- Preuves d'exécution : Prefetch, Amcache, BAM et autresProuver qu'un programme a tourné sous Windows, pas seulement existé : Prefetch, ShimCache, Amcache, BAM, UserAssist, SRUM, PCA, WER et 4688 comparés.
- Outils d'accès distant : forensic d'AnyDesk et TeamViewerEnquêter sur les outils RMM et d'accès à distance détournés : traces d'installation, journaux par outil, ID et IP de session, transferts de fichiers, usage IT.