Skip to content

Tâches planifiées : emplacements de stockage et acquisition

Tous les emplacements des tâches planifiées Windows : System32\Tasks, SysWOW64\Tasks, C:\Windows\Tasks et TaskCache, et leur collecte avec KAPE ou Velociraptor.

Publié le 6 min de lecture

En bref. Collectez quatre éléments : C:\Windows\System32\Tasks (récursivement), C:\Windows\SysWOW64\Tasks, C:\Windows\Tasks et la ruche SOFTWARE avec SOFTWARE.LOG1 et SOFTWARE.LOG2. Ajoutez Security.evtx et le journal TaskScheduler/Operational. KAPE --target ScheduledTasks,RegistryHivesSystem, ou l'artefact Windows.Triage.Targets de Velociraptor avec ces deux mêmes cibles, fait tout en une passe. Conservez les chemins d'origine : l'arborescence sous Tasks correspond au chemin de la tâche.

Cet article est le volet acquisition du guide complet de l'analyse forensique des tâches planifiées.

Les emplacements, artefact par artefact

ArtefactCheminFormatVersions de Windows
XML de tâcheC:\Windows\System32\Tasks\ et sous-dossiersXML sans extension, généralement en UTF-16LE avec indicateur d'ordre des octets (BOM)Vista et ultérieures
XML de tâche (WOW64)C:\Windows\SysWOW64\Tasks\IdentiqueSystèmes 64 bits ; souvent vide, à collecter malgré tout
Tâches héritéesC:\Windows\Tasks\*.job.job binaire, MS-TSCHStockage principal jusqu'à XP / 2003 ; uniquement hérité ensuite
Journal historique du planificateurC:\Windows\SchedLgU.txtTexteSurtout les systèmes anciens
TaskCacheC:\Windows\System32\config\SOFTWARE, clé Microsoft\Windows NT\CurrentVersion\Schedule\TaskCacheRuche de registreVista et ultérieures
Journaux de transactions de la rucheC:\Windows\System32\config\SOFTWARE.LOG1, SOFTWARE.LOG2Journal de registreVista et ultérieures
Journaux d'événementsC:\Windows\System32\winevt\Logs\Security.evtx, Microsoft-Windows-TaskScheduler%4Operational.evtxEVTXVista et ultérieures

La cible KapeFiles ScheduledTasks reprend les mêmes dossiers XML, C:\Windows\Tasks\*.job, SchedLgU.txt, leurs équivalents dans Windows.old et les dossiers PowerShell ScheduledJobs de chaque profil. Si le système a fait l'objet d'une mise à niveau sur place, C:\Windows.old peut contenir des définitions de tâches antérieures à la mise à niveau : collectez-le s'il existe.

Organisation du dossier XML

Chaque dossier de la Bibliothèque du Planificateur de tâches est un vrai dossier sur disque. Une tâche enregistrée sous \Microsoft\Windows\Defrag\ScheduledDefrag correspond au fichier C:\Windows\System32\Tasks\Microsoft\Windows\Defrag\ScheduledDefrag. Le fichier n'a pas d'extension, et son élément <URI> reprend normalement ce même chemin. Ce chemin est aussi le nom de la clé sous TaskCache\Tree, et c'est ainsi que l'on apparie le XML et le registre.

Les tâches situées à la racine (C:\Windows\System32\Tasks\<name>) méritent de l'attention : les recommandations de supervision de Microsoft pour l'événement 4698 relèvent que les tâches créées manuellement et les tâches malveillantes sont souvent placées dans le nœud racine. De nombreux programmes de mise à jour tiers légitimes s'y trouvent aussi : la présence à la racine est donc un critère de tri, pas une conclusion.

TaskCache dans la ruche SOFTWARE

Sur un système en fonctionnement, la clé est HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache. Hors ligne, elle se trouve dans le fichier C:\Windows\System32\config\SOFTWARE. Ses sous-clés sont Tree, Tasks, Boot, Logon, Plain et Maintenance (cyber.wtf). La signification de chaque valeur est détaillée dans l'analyse forensique du registre TaskCache.

Pourquoi les journaux de transactions comptent

Depuis Windows 8.1, les modifications du registre sont d'abord écrites dans les journaux de transactions de la ruche (.LOG1, .LOG2), puis reportées de façon différée dans le fichier principal (notes de Maxim Suhanov sur le format du registre). Une copie de SOFTWARE prise sur une machine en fonctionnement est donc souvent dirty : les numéros de séquence de son en-tête ne concordent pas, et les modifications les plus récentes n'existent que dans les journaux. Pour les tâches planifiées, ce sont précisément les données qui vous intéressent : une tâche enregistrée dix minutes avant la collecte, ou une valeur SD supprimée pour la masquer, peut ne pas encore figurer dans le fichier principal.

Collectez les journaux avec la ruche. Rejouez-les ensuite avec un outil qui le permet avant de vous fier à une « absence » dans TaskCache. Le Scheduled Tasks Parser lit la ruche principale et avertit lorsqu'elle est dirty ; il ne rejoue pas lui-même les journaux, donc un avertissement « dirty » signifie « revérifiez cette ruche avec un outil qui prend en charge les journaux ».

Options de collecte

KAPE

kape.exe --tsource C: --tdest C:\triage\kape --target ScheduledTasks,RegistryHivesSystem

ScheduledTasks rapporte les dossiers de tâches, les fichiers .job et SchedLgU.txt ; RegistryHivesSystem rapporte SOFTWARE avec SOFTWARE.LOG*, ainsi que les autres ruches système. Ajoutez une cible de journaux d'événements si vous voulez aussi les fichiers EVTX. KAPE lit les fichiers verrouillés par accès disque brut, si bien que la copie de la ruche est cohérente avec ses journaux au moment de la collecte.

Velociraptor

Lancez l'artefact Windows.Triage.Targets (hunt depuis l'interface ou collecteur hors ligne) en sélectionnant les cibles ScheduledTasks et RegistryHivesSystem. L'artefact est construit à partir des règles KapeFiles (documentation de triage Velociraptor), l'ensemble de fichiers correspond donc à celui de KAPE. L'archive ZIP obtenue peut être déposée telle quelle dans le parser : il gère les chemins encodés en pourcentage de Velociraptor et les noms d'entrées avec antislash.

Commandes natives, faute de mieux

Depuis une invite élevée sur le système en fonctionnement :

reg save HKLM\SOFTWARE C:\triage\SOFTWARE /y
robocopy C:\Windows\System32\Tasks C:\triage\Tasks /E
robocopy C:\Windows\SysWOW64\Tasks C:\triage\SysWOW64Tasks /E
robocopy C:\Windows\Tasks C:\triage\LegacyTasks /E

reg save produit une ruche propre et cohérente en elle-même (pas besoin de journaux séparés), mais il passe par l'API du registre : c'est donc une action sur le système vivant, notez-en l'heure dans votre journal d'enquête. Robocopy préserve l'arborescence, dont vous avez besoin pour les chemins de tâches. Cette méthode convient au triage ; pour des preuves que vous comptez présenter, préférez une image forensique ou un collecteur à accès brut.

Images disque

Montez l'image en lecture seule et exportez les mêmes chemins. Recherchez aussi les Volume Shadow Copies : des versions plus anciennes de SOFTWARE et du dossier Tasks peuvent montrer quand une tâche est apparue, ou à quoi elle ressemblait avant d'être modifiée.

Pièges d'accès et de dissimulation sur système vivant

  • Une requête via schtasks /query ou la console n'affichera pas une tâche dont la valeur SD a été supprimée, et peut ne pas afficher une tâche dotée d'un descripteur restrictif. C'est tout l'intérêt de la technique Tarrask. La collecte des fichiers et de la ruche contourne le problème.
  • Les fichiers XML sont lisibles par les administrateurs, mais certains sont restreints par ACL. Les collecteurs à accès brut évitent les trous dus aux accès refusés ; un simple copy peut ignorer des fichiers sans rien signaler.
  • N'ouvrez pas la tâche dans la console « pour jeter un œil » : enregistrer depuis la console réécrit le XML et l'entrée TaskCache.

Après la collecte

Calculez les empreintes de tout, conservez l'arborescence d'origine et notez le fuseau horaire de la machine si vous pouvez l'obtenir (via la clé TimeZoneInformation de la ruche SYSTEM ou vos notes de collecte). Vous en aurez besoin pour les heures XML sans fuseau, comme expliqué dans l'anatomie du XML d'une tâche. Passez ensuite à l'analyse : comment analyser les tâches planifiées dans votre navigateur.

FAQ

Où se trouvent les fichiers des tâches planifiées sous Windows 10 et 11 ?

Les définitions de tâches sont des fichiers XML sans extension sous C:\Windows\System32\Tasks, dans des sous-dossiers qui reproduisent le chemin de la tâche. La copie dans le registre se trouve dans la ruche SOFTWARE sous Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache. Les fichiers .job hérités, s'il y en a, sont dans C:\Windows\Tasks.

Ai-je besoin des journaux de transactions du registre ?

Oui. Une ruche SOFTWARE copiée depuis un système en fonctionnement est souvent « dirty » : les modifications récentes, comme une tâche tout juste enregistrée ou cachée, peuvent encore se trouver dans SOFTWARE.LOG1 ou SOFTWARE.LOG2. Collectez-les avec la ruche et rejouez-les avant de tirer des conclusions.

Quelles cibles KAPE collectent les tâches planifiées ?

ScheduledTasks collecte les dossiers XML, les fichiers .job et SchedLgU.txt ; RegistryHivesSystem collecte la ruche SOFTWARE et ses journaux de transactions. Utilisez les deux.

Articles liés

Pas à pas : chargez XML, fichiers .job et ruche SOFTWARE dans un parser gratuit, lisez tâches cachées et registre seul, corrigez le fuseau et exportez. Cas fictif.
Checklist pour repérer les tâches planifiées malveillantes : chemins inscriptibles, PowerShell encodé, LOLBins, SYSTEM, tâches cachées, écarts XML/registre.
Comment Tarrask cachait des tâches planifiées en supprimant la valeur SD de TaskCache, les variantes ACL de refus et Index, et la détection hors ligne.