Persistance
Référentiel WMI et SCCM RecentlyUsedApps
Fiche référentiel WMI : OBJECTS.DATA, filtres, consommateurs et liaisons d'événements, WMI-Activity 5857–5861, fichiers MOF et CCM_RecentlyUsedApps.
- Emplacement
- C:\Windows\System32\wbem\Repository\OBJECTS.DATA
- Prouve
- Une persistance WMI sans fichier a été posée ; sur un client SCCM, quels programmes ont tourné et par qui
- Horodatages
- Aucune heure de création sur les abonnements ; dates $SI du dépôt (NTFS, UTC) ; LastUsedTime CCM en CIM DATETIME avec décalage UTC
- Rétention
- Abonnements persistants jusqu'à suppression, traces dans les pages libres d'OBJECTS.DATA ; journal WMI-Activity petit, en rotation rapide
- Accès
- Administrateur ; fichiers du dépôt ouverts par le service WMI : collecte via VSS ou NTFS brut (KAPE WBEM) ; requêtes à chaud via Get-CimInstance
- Preuve de
- PersistanceExécution
- Type
- Base de données
- Windows
- XPVista / 78 / 8.11011
- Cible KAPE
- WBEMMOFEventLogs
- Velociraptor
- Windows.Triage.Targets:WBEMMOFEventLogs
Outils
Comparer tous les outilsPrésentation
Windows Management Instrumentation (WMI) conserve ses classes et ses instances dans le référentiel CIM, un ensemble de fichiers de base de données situés sous wbem\Repository. Deux éléments de cette base intéressent l'enquêteur :
- Les abonnements permanents aux événements, technique de persistance sans fichier bien connue. Un
__EventFilter(une requête WQL qui décrit le déclencheur), un consommateur d'événements (ce qu'il faut lancer) et un__FilterToConsumerBinding(qui relie les deux) sont stockés sous forme d'objets. Une fois la liaison créée, le service WMI exécute le consommateur en SYSTEM à chaque déclenchement du filtre, sans rien dans les clés Run, les services ou les tâches planifiées. - Les données de mesure logicielle de SCCM. Sur les clients Configuration Manager, la classe
CCM_RecentlyUsedAppsde l'espace de nomsroot\ccm\SoftwareMeteringAgentrecense les exécutables lancés, avec l'utilisateur, le nombre de lancements et la date de dernière utilisation. C'est une source solide de preuve d'exécution qui survit à la suppression du binaire.
Emplacement
| Élément | Emplacement | Remarques |
|---|---|---|
| Référentiel CIM (Vista et suivants) | C:\Windows\System32\wbem\Repository\ : OBJECTS.DATA, INDEX.BTR, MAPPING1.MAP, MAPPING2.MAP, MAPPING3.MAP | Tous les fichiers sont nécessaires pour analyser correctement les objets |
| Référentiel CIM (XP / 2003) | C:\Windows\System32\wbem\Repository\FS\ (plus MAPPING.VER) | |
| Abonnements aux événements | Espace de noms root\subscription (vérifiez aussi root\default et les autres) | Classes __EventFilter, sous-classes de __EventConsumer, __FilterToConsumerBinding |
| Mesure SCCM | Espace de noms root\ccm\SoftwareMeteringAgent, classe CCM_RecentlyUsedApps | Uniquement sur les clients ConfigMgr |
| Journal d'activité WMI | Microsoft-Windows-WMI-Activity/Operational (événements 5857 à 5861) | Absent de Windows 7 / Server 2008 R2 |
| MOF à récupération automatique | SOFTWARE : Microsoft\Wbem\CIMOM, valeur Autorecover MOFs ; copies dans C:\Windows\System32\wbem\AutoRecover\ | MOF compilés avec -autorecover ou #pragma autorecover |
Ce que l'artefact prouve
- Une persistance : un filtre, un consommateur et une liaison, avec la commande ou le script exécuté, même sans fichier déposé.
- Une exécution sur les clients SCCM : nom de l'exécutable, dossier, dernier utilisateur, nombre de lancements, date de dernière utilisation et informations de version du fichier.
- Des événements d'enregistrement : le 5861 consigne une nouvelle liaison permanente avec la requête du filtre et le détail du consommateur, quand le journal existe.
- Elle ne donne pas de date de création documentée pour les objets d'abonnement, ni leur auteur. Associez-la aux journaux d'événements, à Sysmon (événements 19, 20, 21) et aux créations de processus.
Champs clés
| Objet / champ | Signification |
|---|---|
__EventFilter.Name, .Query, .EventNamespace | Déclencheur : requête WQL de type minuterie, ouverture de session ou démarrage de processus |
CommandLineEventConsumer.CommandLineTemplate / ExecutablePath | Programme lancé par le consommateur (enfant de WmiPrvSE.exe) |
ActiveScriptEventConsumer.ScriptText / ScriptFileName, ScriptingEngine | VBScript ou JScript exécuté par scrcons.exe |
| Autres consommateurs | LogFileEventConsumer, NTEventLogEventConsumer, SMTPEventConsumer (rarement malveillants) |
__FilterToConsumerBinding.Filter / .Consumer | Références qui relient un filtre à un consommateur |
CCM_RecentlyUsedApps.ExplorerFileName, FolderPath | Nom et dossier de l'exécutable |
LastUserName, LaunchCount, LastUsedTime | Dernier utilisateur, nombre de lancements, date du dernier lancement |
FileDescription, ProductName, CompanyName, FileSize, OriginalFileName | Métadonnées de version, utiles pour les outils renommés |
Horodatages
| Horodatage | Positionné quand | Format | Pièges |
|---|---|---|---|
| Objets d'abonnement | Aucune date de création documentée | n/a | Datez-les avec le 5861, Sysmon 19 à 21 et les horodatages des fichiers du référentiel |
Modification $SI de OBJECTS.DATA / INDEX.BTR | Écriture dans le référentiel | NTFS, UTC | Bouge avec l'activité WMI normale : simple borne grossière |
CCM_RecentlyUsedApps.LastUsedTime | L'agent de mesure met l'enregistrement à jour | Chaîne DATETIME CIM avec suffixe de décalage UTC | Lisez le décalage ; dernier lancement uniquement |
| WMI-Activity 5857 à 5861 | Fournisseur chargé, erreur, activité d'abonnement, nouvelle liaison permanente | EVTX, UTC | Journal de petite taille ; le 5861 peut être la seule trace d'un enregistrement |
| $SI / $FN d'un fichier MOF | Fichier déposé pour compilation | NTFS, UTC | Les attaquants suppriment souvent le .mof après mofcomp |
Rétention et effacement
- Les abonnements persistent jusqu'à la suppression des objets (par exemple avec
Remove-WmiObjectouRemove-CimInstance). Les objets supprimés peuvent subsister dans des pages inutilisées deOBJECTS.DATAjusqu'à leur écrasement ; une recherche de chaînes dans le fichier brut peut les faire ressortir. CCM_RecentlyUsedAppsconserve ses enregistrements tant que le client SCCM est installé ; les copies plus anciennes du référentiel dans les clichés instantanés peuvent compléter l'historique.- Le journal WMI-Activity Operational est petit et tourne vite sur un système chargé.
- Quand WMI reconstruit un référentiel corrompu, il recompile tous les MOF listés dans
Autorecover MOFs: un abonnement installé depuis un MOF à récupération automatique réapparaît après la reconstruction.
Collecte
- Cible KAPE :
WBEM(tout le dossierRepository),MOF(tous les*.MOFdu volume, ce qui est lent) etEventLogspour le canal WMI-Activity. - Velociraptor (
Windows.Triage.Targets) :WBEM,MOF,EventLogs. Analyse en direct :Windows.Persistence.PermanentWMIEvents(liaisons avec leurs filtres et consommateurs, dans tous les espaces de noms) ;Windows.System.WMIQuerypeut interrogerCCM_RecentlyUsedAppssur un client en direct. - Commandes natives : les fichiers du référentiel sont maintenus ouverts par le service WMI ; collectez-les depuis un cliché instantané ou avec un outil de copie brute, et interrogez les objets en direct avec PowerShell.
Get-CimInstance -Namespace root\subscription -ClassName __EventFilter
Get-CimInstance -Namespace root\subscription -ClassName __EventConsumer
Get-CimInstance -Namespace root\subscription -ClassName __FilterToConsumerBinding
Get-CimInstance -Namespace root\ccm\SoftwareMeteringAgent -ClassName CCM_RecentlyUsedApps
wevtutil epl Microsoft-Windows-WMI-Activity/Operational E:\case\WMI-Activity.evtx
Outils d'analyse
- python-cim / flare-wmi (Mandiant, open source) : analyse un référentiel hors ligne (
OBJECTS.DATA,INDEX.BTR,MAPPING*.MAP) ; des scripts d'exemple listent la persistance et les enregistrementsCCM_RecentlyUsedApps. - WMI_Forensics (David Pany, open source) :
PyWMIPersistenceFinder.pyretrouve les liaisons par recherche dansOBJECTS.DATA;CCM_RUA_Finder.pyextrait les enregistrementsCCM_RecentlyUsedAppsen TSV. - Velociraptor :
Windows.Persistence.PermanentWMIEvents. - Autoruns (Sysinternals, gratuit) : onglet WMI sur un système en direct.
- EvtxECmd (Eric Zimmerman) : événements WMI-Activity en CSV.
- RegRipper : le plugin
wbemlit la cléCIMOM, dontAutorecover MOFs.
Conseils d'investigation
- Chaque liaison de
root\subscriptionmérite un examen ; les légitimes sont rares (quelques agents d'éditeurs) et faciles à référencer sur un parc. - Cherchez les
CommandLineEventConsumerqui lancentpowershell.exe,cmd.exeou des LOLBins, et toutActiveScriptEventConsumer. - Les filtres sur la durée de fonctionnement ou à intervalle (
Win32_PerfFormattedData_PerfOS_System,__IntervalTimerInstruction) et ceux sur l'ouverture de session ou le démarrage de processus sont des déclencheurs courants. - Une arborescence
WmiPrvSE.exe -> powershell.exeou une activité descrcons.exesignale un consommateur qui se déclenche ; confirmez avec le Prefetch deSCRCONS.EXE. mofcomp.exedans le Prefetch ou un MOF hors dewbemsuggère des abonnements installés à partir d'un fichier MOF.- Sur les clients SCCM, analysez
CCM_RecentlyUsedAppsmême hors affaire WMI : on y trouve souvent des outils d'attaque disparus du disque, d'Amcache et du Prefetch. - WMI à distance (
wmic /node,Invoke-WmiMethod) est un canal de mouvement latéral : corrélez avec les ouvertures de session réseau dans les journaux d'événements.
Artefacts liés
- Tâches planifiéesFiche tâches planifiées : XML et .job, clés TaskCache, horodatages DynamicInfo, tâches masquées, événements TaskScheduler et 4698.
- Services WindowsFiche services Windows : valeurs de la clé Services (ImagePath, Start, Type, ServiceDll), événements 7045 et 4697, traces de PsExec et pièges.
- Clés Run et dossiers DémarrageFiche clés Run et dossiers Démarrage : chemins Run, RunOnce, Wow6432Node et Policies, octets StartupApproved activé/désactivé, horodatages.
- 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.
- 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.
- 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.
- Journal d'événements SysmonFiche Sysmon : emplacement du journal Operational, ID d'événements clés, corrélation ProcessGuid et hash, config dans le registre, altérations et outils.
Termes du glossaire
- PersistanceMécanismes permettant à un malware ou à un attaquant de survivre aux redémarrages : clés Run, services, tâches planifiées, abonnements WMI.
- Preuve d'exécutionLes artefacts qui montrent qu'un programme s'est réellement exécuté sous Windows, et pas seulement qu'il était présent sur le disque.
- 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.
- Mouvement latéralDéplacement d'un attaquant d'un hôte compromis vers d'autres machines du réseau, via RDP, SMB, PsExec, WMI, WinRM ou tâches et services distants.
- LOLBin (binaire living-off-the-land)Binaire Windows légitime et signé que les attaquants détournent pour télécharger, exécuter ou dissimuler une charge sans déposer leurs outils.