← Retour à l’analyseur

Tables SRUM expliquées : AppResource, Network, Energy, Push

SRUDB.dat est une base ESE ordinaire. La plupart de ses tables portent des noms GUID entre accolades : chaque GUID identifie une extension SRUM qui s'enregistre auprès du service pour collecter une tranche de télémétrie. Les GUID sont stables à travers les builds Windows, donc un analyseur qui les reconnaît peut lire les données quels que soient la langue, le service pack ou la mise à jour de fonctionnalité.

Le catalogue

GUIDNom commun
{D10CA2FE-6FCF-4F6D-848E-B2E99266FA89}Application Resource Use
{D10CA2FE-6FCF-4F6D-848E-B2E99266FA89}LTApplication Resource Use (Long Terme)
{973F5D5C-1D90-4944-BE8E-24B94231A174}Network Data Usage
{DD6636C4-8929-4683-974E-22C046A43763}Network Connectivity
{FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}Energy Usage
{FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}LTEnergy Usage (Long Terme)
{D10CA2FE-6FCF-4F6D-848E-B2E99266FA8F}Push Notifications

Plus les tables de contrôle :

  • SruDbIdMapTable : traduit les entiers AppId/UserId en chemins et SID.
  • SruDbCheckpointTable : état interne de vidage.

Les tables système ESE (MSysObjects, MSysObjids, MSysLocales) sont le catalogue interne du moteur. Parcourez-les ; ne pivotez pas dessus.

Application Resource Use {D10CA2FE-…FA89}

Activité par application échantillonnée toutes les heures. La table la plus utile pour "cela a-t-il tourné, quand, sous qui".

Colonnes clés :

  • TimeStamp : limite du seau (date variante OLE, flottant 8 octets).
  • AppId, UserId : clés étrangères vers SruDbIdMapTable.
  • ForegroundCycleTime, BackgroundCycleTime : cycles CPU, pas des secondes.
  • FaceTime : temps pendant lequel l'interface était visible pour l'utilisateur.
  • ForegroundBytesRead, ForegroundBytesWritten, ForegroundNumReadOperations, NumWriteOperations, NumberOfFlushes : I/O disque au premier plan.
  • Variantes en arrière-plan de toutes les colonnes I/O.

La jumelle LT agrège les mêmes lignes par semaine et survit jusqu'à un an. La granularité chute ; la portée s'étend.

Network Data Usage {973F5D5C-…}

Octets par application par profil réseau. La table d'exfiltration.

  • InterfaceLuid : LUID Windows pour l'interface.
  • L2ProfileId : ID opaque ; résolvez contre HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles dans le registre pour le SSID ou le nom de la connexion filaire.
  • L2ProfileFlags : masque binaire : 0x100 filaire, 0x200 sans-fil, 0x400 WWAN.
  • BytesSent, BytesRecvd : compteurs depuis le dernier échantillon, par processus.

Combinée à la résolution AppId, elle répond à "combien de Mo chrome.exe a-t-il envoyés sur le Wi-Fi domestique entre 14:00 et 15:00 ?". Pour un flux dédié à l'exfiltration voir détecter l'exfiltration de données avec SRUM.

Network Connectivity {DD6636C4-…}

Quand le système s'est attaché et détaché de chaque réseau.

  • ConnectStartTime : FILETIME de l'association (précis à la seconde).
  • ConnectedTime : durée en secondes.
  • InterfaceLuid, L2ProfileId, L2ProfileFlags : comme ci-dessus.

Place un appareil sur un réseau précis à un moment précis. Utile pour corréler avec les journaux du contrôleur Wi-Fi d'entreprise et les enregistrements du concentrateur VPN.

Energy Usage {FEE4E14F-…}

Télémétrie batterie et source d'alimentation. Échantillonnée à chaque transition.

  • EventTimestamp : FILETIME de la transition.
  • StateTransition : branchement/débranchement secteur, entrée/sortie de veille, batterie faible.
  • ChargeLevel, CycleCount, ConfigurationHash.
  • DesignedCapacity, FullChargedCapacity (mWh).
  • ActiveAcTime, CsAcTime, ActiveDcTime, CsDcTime : compteurs de temps par source d'alimentation.

La variante LT suit la dégradation de la santé batterie sur des mois, utile aussi pour prouver "le portable n'a jamais été chargé au siège" et autres revendications du même type.

Push Notifications {D10CA2FE-…FA8F}

Pour les apps modernes utilisant le Windows Push Notification Service.

  • NotificationType : toast, tuile, badge, brut.
  • PayloadSize : octets du corps de la notification.
  • NetworkType : quelle interface l'a délivrée.

Moins souvent porteuse dans une investigation typique, mais la cadence des notifications révèle parfois une app moderne qui tournait en arrière-plan quand rien d'autre ne la consignait.

SruDbIdMapTable

Chaque table de données contient AppId et UserId sous forme de petits entiers. Joindre SruDbIdMapTable les rend lisibles.

ColonneSens
IdType0 = service, 1 = app, 2 = SID, 3 = user (varie par build)
IdIndexL'entier utilisé par les tables de données
IdBlobChemin UTF-16 pour les apps, SID binaire pour les utilisateurs

Les chemins d'apps dans IdBlob viennent sous deux formes :

  • Un chemin de fichier complet, par ex. \\?\C:\Users\suspect\loader.exe.
  • Un AUMID moderne, par ex. Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge.

Les SID binaires se décodent au format SID standard ; associez aux noms d'utilisateurs via HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList dans le registre.

Pour aller plus loin

Questions fréquentes

Combien de tables contient SRUDB.dat ?

Typiquement 11 à 14, incluant les tables système ESE (MSysObjects, MSysObjids, MSysLocales), les tables de contrôle SRUM (SruDbIdMapTable, SruDbCheckpointTable), et 6 à 8 tables de données nommées par GUID.

Qu'est-ce que SruDbIdMapTable ?

Elle résout les petits entiers AppId et UserId (clés étrangères utilisées dans chaque table de données) en un identifiant d'application (chemin complet ou AUMID pour les apps modernes) ou un SID binaire pour les comptes utilisateurs Windows.

Pourquoi les tables de données sont-elles nommées par GUID ?

Chaque extension SRUM s'enregistre avec un GUID. Les noms sont stables à travers les builds Windows, donc tout outil qui connaît le GUID peut analyser la table correspondante quelle que soit la langue ou le service pack.

Combien de temps les lignes sont-elles conservées ?

Autour de 30 jours pour les tables court-terme et jusqu'à un an pour les variantes long-terme « LT ». La rétention exacte est gouvernée par la politique registre sous HKLM\System\CurrentControlSet\Control\WMI\AutoLogger\SRUM.

Les horodatages sont-ils en format FILETIME ou OLE ?

La colonne TimeStamp est une date variante OLE (flottant 8 octets). Les tables Energy et Network Connectivity utilisent un FILETIME 64 bits pour leurs horodatages d'événement.