Persistance
Tâches planifiées
Fiche tâches planifiées : XML et .job, clés TaskCache, horodatages DynamicInfo, tâches masquées, événements TaskScheduler et 4698.
- Emplacement
- C:\Windows\System32\Tasks\<TaskName>
- Prouve
- Une tâche a été enregistrée pour lancer une commande, par qui, sa création et sa dernière exécution
- Horodatages
- Création et dernière exécution DynamicInfo en FILETIME, UTC ; LastWrite TaskCache, UTC ; Date RegistrationInfo du XML en ISO 8601, souvent sans fuseau
- Rétention
- Tâches persistantes jusqu'à suppression ; 4698 exige l'audit, le journal TaskScheduler Operational peut être désactivé ; rotation par taille
- Accès
- Administrateur ; XML des tâches copiables directement, ruche SOFTWARE (TaskCache) verrouillée à chaud : reg save, VSS ou NTFS brut
- Preuve de
- PersistanceExécution
- Type
- Fichier / système de fichiers
- Windows
- XPVista / 78 / 8.11011
- Cible KAPE
- ScheduledTasksRegistryHivesSystemEventLogs
- Velociraptor
- Windows.Triage.Targets:ScheduledTasksRegistryHivesSystemEventLogs
Outils
Comparer tous les outilsPrésentation
Le service Planificateur de tâches lance des programmes à heure fixe, au démarrage, à l'ouverture de session ou sur un événement. Les attaquants s'en servent pour la persistance, pour l'élévation de privilèges (une tâche peut tourner en SYSTEM) et pour le mouvement latéral, puisque schtasks /create /s <hôte> enregistre une tâche sur une machine distante.
Une tâche laisse des traces à trois endroits : son fichier de définition sur disque, des clés de registre TaskCache dans la ruche SOFTWARE et les journaux d'événements lorsque l'audit est actif. C'est en confrontant ces trois sources que l'on repère les tâches modifiées ou masquées.
Emplacement
| Version de Windows | Définitions des tâches | Registre (ruche SOFTWARE) | Journaux |
|---|---|---|---|
| XP / Server 2003 | C:\Windows\Tasks\*.job (binaire, Task Scheduler 1.0) | aucun | C:\Windows\SchedLgU.txt (XP), C:\Windows\Tasks\SchedLgU.txt (2003) |
| Vista / 7 / 8 / 10 / 11 | C:\Windows\System32\Tasks\<dossier>\<NomTâche> (XML, sans extension) | Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree et \Tasks | Microsoft-Windows-TaskScheduler/Operational, Security |
Des fichiers .job hérités peuvent encore apparaître dans C:\Windows\Tasks sur les versions récentes, surtout pour les tâches créées avec la commande obsolète at.exe (At1.job, At2.job…).
Organisation de TaskCache :
TaskCache\Tree\<chemin>\<NomTâche>: valeursId(GUID de la tâche),IndexetSD(descripteur de sécurité).TaskCache\Tasks\{GUID}: valeurs commePath,Actions,Triggers,DynamicInfo,Author,Description,Date,URI.TaskCache\Boot,Logon,Plain,Maintenance: listes de GUID qui classent les tâches par type de déclencheur.
Ce que l'artefact prouve
- Persistance ou exécution programmée : une commande, ses arguments et le compte sous lequel elle tourne.
- Qui l'a enregistrée :
Author/UserIddu XML, compte indiqué dans l'événement 106 et dans le 4698 du journal Security. - Quand : dates de création, de dernière exécution et de dernière réussite dans
DynamicInfo, et événements d'exécution dans le journal Operational. - Elle ne prouve pas que l'action a réussi : confirmez avec l'événement 201 (code retour), le Prefetch ou les événements de création de processus. Les champs
AuthoretDatedu XML sont du texte libre, donc falsifiables.
Champs clés
| Champ | Signification |
|---|---|
RegistrationInfo\Date, Author, URI | Date d'enregistrement et auteur tels qu'écrits par le créateur (non fiables) |
Triggers | Déclencheurs horaire, démarrage, ouverture de session, inactivité ou événement ; intervalle de répétition |
Principals\Principal (UserId, RunLevel) | Compte utilisé et HighestAvailable pour une tâche élevée |
Settings\Hidden | Masque la tâche dans la console sauf si « Afficher les tâches masquées » est coché |
Actions\Exec (Command, Arguments, WorkingDirectory) | Programme lancé |
Actions\ComHandler (ClassId) | Objet COM exécuté à la place d'un programme ; résolvez le CLSID |
Tree\...\SD | Descripteur de sécurité ; s'il manque, la tâche disparaît de l'énumération |
Tasks\{GUID}\DynamicInfo | Binaire : date de création, dernière exécution, état, dernier code d'erreur et (sur les versions récentes) dernière exécution réussie |
Horodatages
| Horodatage | Positionné quand | Format | Pièges |
|---|---|---|---|
DynamicInfo création / dernière exécution / dernière réussite | Le service enregistre ou exécute la tâche | FILETIME, UTC | Le champ « dernière réussite » manque sur les anciennes versions ; seule la dernière exécution est conservée |
LastWrite des clés Tree et Tasks\{GUID} | Tâche enregistrée ou modifiée | FILETIME, UTC | Bouge aussi lors des mises à jour : ce n'est pas une date de création pure |
RegistrationInfo\Date du XML | Écrit par l'outil de création | Chaîne ISO 8601, souvent sans fuseau horaire | Peut être absent ou falsifié |
| Horodatages $SI du fichier XML | Fichier créé ou réécrit | NTFS, UTC | Mis à jour à chaque modification de la tâche |
Dernière exécution du .job | Exécution par Task Scheduler 1.0 | SYSTEMTIME dans le fichier | Format de l'époque XP |
| Événements 106 / 140 / 141 / 200 / 201 | Enregistrement, mise à jour, suppression, début et fin d'action | EVTX, UTC | Seulement si le canal est activé |
| Security 4698–4702 | Tâche créée, supprimée, activée, désactivée, mise à jour | EVTX, UTC | Nécessite « Auditer d'autres événements d'accès à l'objet » |
Rétention et effacement
- Une tâche reste en place jusqu'à sa suppression. Supprimer une tâche efface le XML et les clés TaskCache ; il reste alors surtout le journal Operational (141) et le journal Security (4699), plus les traces de suppression dans le journal USN et les anciennes ruches SOFTWARE des clichés instantanés.
- Le 4698 du journal Security exige « Auditer d'autres événements d'accès à l'objet », et le canal Operational de TaskScheduler peut être désactivé selon la version et la configuration (« Activer l'historique de toutes les tâches »). Vérifiez que le canal est actif et contient des événements avant d'interpréter un résultat vide.
- Tâches masquées : le malware Tarrask supprimait la valeur
SDsousTaskCache\Tree. La tâche disparaît alors deschtasks /queryet de la console, mais continue de s'exécuter. Cette suppression exige les droits SYSTEM. Le fichier XML et la cléTasks\{GUID}restent en place. - Les journaux tournent selon leur taille : sur un système chargé, le journal Operational peut ne couvrir que quelques jours ou semaines.
Collecte
- Cible KAPE :
ScheduledTasks(XML,.job,SchedLgU.txt, tâches planifiées PowerShell), plusRegistryHivesSystempour TaskCache etEventLogspour les canaux d'événements. - Velociraptor (
Windows.Triage.Targets) :ScheduledTasks,RegistryHivesSystem,EventLogs. Analyse en direct :Windows.System.TaskScheduler(analyse les XML) etWindows.EventLogs.ScheduledTasks. - Commandes natives : les XML se copient directement ; la ruche SOFTWARE est verrouillée, passez par
reg saveou un cliché instantané.
robocopy C:\Windows\System32\Tasks E:\case\Tasks /E /COPY:DAT /DCOPY:T
reg save HKLM\SOFTWARE E:\case\SOFTWARE.hiv
wevtutil epl Microsoft-Windows-TaskScheduler/Operational E:\case\TaskScheduler.evtx
schtasks /query /fo csv /v > E:\case\schtasks.csv
Outils d'analyse
- Velociraptor :
Windows.System.TaskSchedulerliste les commandes et le contexte utilisateur à partir des XML ;Windows.EventLogs.ScheduledTasksregroupe les événements Operational et Security. - RegRipper : plugins
taskcacheettasks(ruche SOFTWARE), avec leurs variantes_tlnpour la chronologie. - winreg-tasks (G DATA, open source) : définitions Kaitai et scripts qui décodent
Actions,TriggersetDynamicInfo. - TaskSchedulerView (NirSoft, gratuit) : liste graphique des tâches sur un système en direct.
- EvtxECmd (Eric Zimmerman) : convertit en CSV les événements de tâches des journaux TaskScheduler et Security.
- Plaso : parseur
winjobpour les fichiers.jobet plugin de registrewindows_task_cache.
Conseils d'investigation
- Comparez la liste des tâches issue de trois sources : fichiers XML,
TaskCache\TreeetTaskCache\Tasks. Une entréeTreesansSD, ou un GUID sans XML correspondant, mérite qu'on s'y arrête. - Signalez les actions qui pointent vers
powershell.exe -enc,cmd.exe /c,rundll32.exe,mshta.exe, des scripts, ou des binaires situés dans\Users\,\ProgramData\ou\Windows\Temp\. - Les noms de tâches imitent souvent ceux de Microsoft (
\Microsoft\Windows\...\Update) : vérifiez l'auteur, le chemin et la signature du binaire plutôt que le nom. - Le 4698 du journal Security contient le XML complet de la tâche : il permet de retrouver la définition d'une tâche supprimée depuis.
- Un enregistrement à distance se traduit par une ouverture de session réseau (type d'ouverture de session 3) sur la cible juste avant l'événement 106 ; corrélez dans les journaux d'événements.
- Confirmez l'exécution par le Prefetch du binaire lancé, et vérifiez les services et WMI à la recherche d'une persistance parallèle.
Artefacts liés
- 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.
- Ruches du registreFiche ruches du registre : SYSTEM, SOFTWARE, SAM, SECURITY, NTUSER.DAT, UsrClass.dat, journaux de transactions, RegBack, LastWrite et collecte.
- 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.
- Référentiel WMI et SCCM RecentlyUsedAppsFiche référentiel WMI : OBJECTS.DATA, filtres, consommateurs et liaisons d'événements, WMI-Activity 5857–5861, fichiers MOF et CCM_RecentlyUsedApps.
- Artefacts de stratégie de groupeFiche stratégie de groupe : SYSVOL, Registry.pol, mots de passe GPP, historique côté client et journaux, et comment les attaquants détournent les GPO.
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.
- 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.
- FILETIMELe format d'horodatage Windows sur 64 bits qui compte les intervalles de 100 nanosecondes depuis le 1er janvier 1601 UTC.
- 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.