Aller au contenu

Analyse d'Artefact : Modifications Système et Persistance (Événements 7045, 4698, 4720)

1. Création de service : la persistance ultime (Événement 7045)

Section intitulée « 1. Création de service : la persistance ultime (Événement 7045) »

Les services Windows s’exécutent en arrière-plan, généralement lors du processus de démarrage, et fonctionnent souvent avec les privilèges système les plus élevés (NT AUTHORITY\SYSTEM). Cela en fait le Saint Graal pour la persistance des attaquants et l’exécution de mouvements latéraux.

L’Événement 7045 (“Un service a été installé dans le système”) est généré dans le journal System chaque fois qu’un nouveau service est enregistré auprès du Gestionnaire de contrôle des services (SCM).

Le parsing d’un enregistrement d’Événement 7045 livre des artefacts forensiques critiques :

  • Service Name (Nom du service) : le nom attribué au service. Les attaquants utilisent souvent le typosquatting pour imiter des services légitimes (ex: WinDefendSvc au lieu de WinDefend).
  • Service File Name (Chemin de l’exécutable - Critique) : le chemin d’accès absolu de l’exécutable que le service va lancer.
    • Alerte rouge : un chemin pointant vers un répertoire inscriptible par tous comme C:\Users\Public\, C:\PerfLogs\, ou un dossier temporaire (%TEMP%).
  • Service Account (Compte de service) : le contexte utilisateur sous lequel le service s’exécute (généralement LocalSystem).

2. Tâches planifiées : la persistance la plus courante (Événement 4698)

Section intitulée « 2. Tâches planifiées : la persistance la plus courante (Événement 4698) »

Les tâches planifiées permettent à un adversaire d’exécuter un programme à une heure précise, à un intervalle récurrent, ou déclenché par un événement système spécifique (comme l’ouverture de session d’un utilisateur). C’est un mécanisme de persistance natif (“Living off the Land”) extrêmement populaire.

L’Événement 4698 (“Une tâche planifiée a été créée”) est généré dans le journal Security.

Contrairement à la création de service, l’Événement 4698 n’est pas journalisé par défaut. Pour capturer cette télémétrie vitale, les administrateurs doivent activer la politique d’audit spécifique via une GPO : Configuration avancée de la stratégie d'audit > Accès aux objets > Auditer les autres événements d'accès aux objets (Définir sur Succès).

  • Command / Action : le script ou binaire exact exécuté par la tâche. Les analystes doivent rechercher des tâches invoquant powershell.exe, cmd.exe, wscript.exe ou mshta.exe passant des paramètres offusqués (ex: charges utiles encodées en Base64).
  • Author (Auteur) : le compte utilisateur qui a créé la tâche. Un utilisateur standard compromis créant des tâches s’exécutant en tant que SYSTEM indique qu’un exploit d’élévation de privilèges a eu lieu.

3. Manipulation des comptes et des groupes : élévation de privilèges

Section intitulée « 3. Manipulation des comptes et des groupes : élévation de privilèges »

Les acteurs de la menace créent fréquemment des “comptes portes dérobées” (backdoor accounts) ou ajoutent des comptes compromis existants à des groupes hautement privilégiés pour maintenir un accès administratif.

Création de compte (Événement 4720)

Un compte d’utilisateur a été créé. Recherchez des comptes créés avec des noms imitant le personnel informatique (ex: sysadmin, backup_svc, temp_admin). Le champ Subject révèle quel compte compromis a été utilisé pour exécuter la commande net user.

Manipulation de groupe (Événements 4728, 4732, 4756)

Un membre a été ajouté à un groupe local de sécurité. Ces événements tracent les ajouts aux groupes Globaux, Locaux et Universels. Les alertes les plus critiques surviennent lorsqu’un adversaire ajoute un utilisateur aux groupes Administrateurs, Administrateurs du domaine ou Utilisateurs du Bureau à distance, s’assurant ainsi la domination totale du système.

Déployez les requêtes suivantes dans votre SIEM pour chasser de manière proactive les modifications système anormales indiquant des mécanismes de persistance.

hunt_anomalous_services.kql
// Détecte l'installation d'un service Windows s'exécutant depuis un répertoire suspect
Event
| where EventLog == "System" and EventID == 7045
| parse EventData with * '<Data Name="ServiceName">' ServiceName '</Data>' *
| parse EventData with * '<Data Name="ImagePath">' ImagePath '</Data>' *
| parse EventData with * '<Data Name="ServiceType">' ServiceType '</Data>' *
| parse EventData with * '<Data Name="StartType">' StartType '</Data>' *
| parse EventData with * '<Data Name="AccountName">' AccountName '</Data>' *
// Conversion en minuscules pour une correspondance insensible à la casse
| extend ImagePath = tolower(ImagePath)
// Filtrer pour les répertoires suspects, inscriptibles par tous ou temporaires
| where ImagePath has_any ("\\users\\public\\", "\\perflogs\\", "\\windows\\temp\\", "\\appdata\\local\\temp\\")
or ImagePath matches regex @"^.:\\[a-z0-9]+\.exe" // Exécutable déposé à la racine d'un lecteur (ex: C:\malware.exe)
| project TimeGenerated, Computer, ServiceName, ImagePath, StartType, AccountName
| sort by TimeGenerated desc