Aller au contenu

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
Type
Registre
Windows
XPVista / 78 / 8.11011
Cible KAPE
RegistryHivesSystemRegistryHivesUserEventLogsAmcache
Velociraptor
Windows.Triage.Targets:RegistryHivesSystemRegistryHivesUserEventLogsAmcache

Pré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

SourceChemin
Machine, 64 bitsHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<ProductCode ou nom>
Machine, 32 bits sur x64HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\...
Installations par utilisateurHKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\... (dans le NTUSER.DAT de chaque utilisateur)
Données produit MSIHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Products\<GUID compacté>\InstallProperties
Événements MSIC:\Windows\System32\winevt\Logs\Application.evtx, fournisseur MsiInstaller
Paquets en cacheC:\Windows\Installer\*.msi et *.msp (cachés, noms aléatoires)
AppX / MSIXC:\Program Files\WindowsApps\, C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd, journal Microsoft-Windows-AppXDeploymentServer/Operational
wingetEn général %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\*.log
ChocolateyEn général C:\ProgramData\chocolatey\logs\chocolatey.log et C:\ProgramData\chocolatey\lib\
AmcacheC:\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, InstallProperties est rangé sous le SID installateur (ou S-1-5-18 pour 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

ChampSignification
DisplayName, DisplayVersion, PublisherCe que le produit déclare être
InstallDateChaîne AAAAMMJJ écrite par l'installeur ; facultative, date seule
InstallLocationDossier d'installation ; pivot vers la $MFT et les entrées fichiers d'Amcache
InstallSourceDossier depuis lequel l'installeur a tourné (Téléchargements, partage, ISO monté)
UninstallString, QuietUninstallStringCommande de désinstallation ; un chemin inhabituel est suspect
WindowsInstaller = 1Produit 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 / 1034Produit installé / supprimé, avec nom, version, fabricant et code de statut
MsiInstaller 11707 / 11724Installation / 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.
  • InventoryApplication d'Amcache : possède son propre InstallDate et un champ Source (par exemple AddRemoveProgram ou Msi) ; utile quand la clé Uninstall a été supprimée.
  • Création du dossier InstallLocation et du .msi en 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 InventoryApplication et relie les fichiers aux programmes via ProgramId.
  • EvtxECmd avec ses maps, ou l'artefact Velociraptor Windows.EventLogs.EvtxHunter, pour les événements MsiInstaller.
  • Velociraptor Windows.Sys.Programs liste les entrées Uninstall sur les postes actifs.
  • StateRepository-Machine.srd est une base SQLite : ouvrez une copie avec DB Browser for SQLite et examinez la table Package et les tables associées.
  • msiinfo (msitools) ou Orca pour lire les informations de résumé des .msi en 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 InstallSource sous \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 .msi en cache dans C:\Windows\Installer sans 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

Termes du glossaire

Guides

Tous les artefacts sur une page : aide-mémoire