Mise à jour le 26 août 2024

Les tâches planifiées sont des processus automatisés configurés pour s’exécuter automatiquement à une heure précise ou bien lorsque certaines conditions sont remplies. En éliminant le besoin d’intervention manuelle, ces processus permettent l’exécution de tâches répétitives ou routinières tout en garantissant efficacité et cohérence. Sous Windows, le service planificateur de tâches (Task Scheduler) gère et exécute ces tâches automatisées, similaires aux tâches cron sur les systèmes Unix. Il surveille les conditions de toute tâche automatisée, qu’il s’agisse de critères liés au temps ou à un événement particulier, et exécute les tâches dès que certaines conditions sont remplies. Les attaquants peuvent également abuser des tâches planifiées pour installer une persistance au niveau du code malveillant ou bien exécuter des activités non autorisées sur un système compromis.

Swachchhanda Shrawan Poudel
Swachchhanda Shrawan Poudel

Security Research

Shenanigans of Scheduled Tasks
Jump To Section

Planificateur de tâches (Task Scheduler)

Le service Windows planificateur de tâches est un programme sophistiqué qui permet aux utilisateurs d'automatiser des activités et de les exécuter à des moments bien précis ou en réaction à des situations particulières. Il peut s’agir de l’ouverture de programmes, l’exécution de scripts et de tâches sans interaction humaine.

Principaux composants du planificateur de tâches

  1. Service planificateur de tâches (Task Scheduler Service): il s'agit du service principal qui gère et exécute les tâches planifiées. Il fonctionne en arrière-plan, recherchant les tâches qui doivent être exécutées en fonction de leurs déclencheurs.
  2. Bibliothèque du planificateur de tâches (Task Scheduler Library): la bibliothèque fonctionne comme un référentiel centralisé pour stocker et gérer toutes les tâches. Les utilisateurs peuvent voir, créer, modifier et supprimer des tâches dans cette bibliothèque
  3. Tâches (Tasks): le planificateur de tâches organise des unités de travail appelées tâches. Ces dernières sont généralement stockées au format XML dans C:\Windows\System32\Tasks\. Il comprend de nombreux éléments :
    1. Déclencheurs (Triggers) : il s’agit de conditions particulières qui lancent la tâche, telles qu'une heure, une date ou un événement spécifique (par exemple, l'initialisation du système ou la connexion de l'utilisateur).
    2. Actions : lorsque la tâche est activée, cette dernière exécute des actions telles que lancer un programme, envoyer un email ou afficher un message.
    3. Privilèges (Principals) : il s’agit du contexte de sécurité dans lequel la tâche est exécutée.
    4. Conditions : Il s’agit d’exigences supplémentaires pour l’exécution de la tâche, telles que le fonctionnement uniquement lorsque la machine est inactive ou connectée au secteur.
    5. Paramètres (Settings) : il s’agit des paramètres qui contrôlent le contexte d'exécution des tâches, tels que la priorité des tâches, la possibilité d'exécuter de nombreuses instances, la gestion pendant les périodes d'inactivité ainsi que d'autres considérations externes.
    6. Informations d'enregistrement (Registration Information) : elles contiennent des métadonnées telles que la date de création d'une tâche, l'auteur de la tâche, etc.
  1. Interface utilisateur du planificateur de tâches (Task Scheduler User Interface) : l'interface graphique, accessible via taskschd.msc ou le panneau de configuration (Control Panel), permet aux utilisateurs d'interagir visuellement avec le planificateur de tâches, facilitant ainsi la création et la gestion de ces dernières.

Shenanigans 1
  1. API du planificateur de tâches (Task Scheduler API) : il s’agit d’une interface qui permet aux développeurs de créer et de gérer des tâches par programme. Cette API peut être accessible à l'aide de langages de script comme PowerShell ou d'applications personnalisées.

Pour obtenir plus d'informations sur le planificateur de tâches, rendez-vous sur la page Microsoft dédiée à la documentation officielle.

Planification et exécution des tâches sous Windows

  1. Planification d'une tâche

  • Action utilisateur (User Action) : le programme planificateur de tâches vous permet de créer une tâche planifiée. Il inclut des informations précises sur le moment où la tâche doit s'exécuter (par exemple, à une heure précise ou au démarrage du système) et ce qu'elle doit effectuer précisément (par exemple, exécuter un script ou lancer une application).

  • Stockage des tâches (Task Storage) : la tâche est enregistrée dans la bibliothèque du planificateur de tâches (Task Scheduler Library) et dans le registre Windows (Windows Registry). Ces deux registres sont constitués pour toute nouvelle tâche planifiée créée.

Des données similaires sont également stockées dans un fichier XML, sans extension, situé dans le répertoire C:\Windows\System32\Tasks.

  1. Surveillance et préparation à l'exécution des tâches

Scheduled Tasks 2
  • Service planificateur de tâches (Task Scheduler Service) : ce service, appelé "Schedule" (Planification), gère toutes les tâches planifiées. Il s'exécute dans le cadre d'un processus appelé svchost.exe, qui gère plusieurs services Windows pour économiser les ressources système.

    • Configuration du registre (Registry Configuration) : le service de planification (Schedule) est spécifié dans le registre Windows à l'adresse HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule. Il pointe vers svchost.exe avec le paramètre -k netsvcs, qui indique que svchost.exe fait partie du groupe de services netsvcs.

  • Regroupement de services (Service Grouping) : svchost.exe peut exécuter plusieurs services en un seul processus. Le groupe netsvcs peut inclure le service planificateur de tâches, le service log d’événement (Event Log), entre autres. Ce regroupement est spécifié dans le registre sous HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost.

  1. Exécution de la tâche planifiée

  • Condition de déclenchement (Trigger Condition) : lorsque l'heure ou l'événement prévu se produit (par exemple, le système démarre ou l'utilisateur se connecte), le service planificateur de tâches identifie la nécessité d'exécuter une tâche.

  • Exécution de la tâche (Task Execution) : le service planificateur de tâches se prépare à exécuter la tâche :

    • Launching the Task: o   Lancement de la tâche : Il lance un nouveau processus, souvent askhostw.exe (Task Host Window), chargé d'exécuter la tâche spécifiée.

    • Exécution de l'action : le processus taskhostw.exe exécute ensuite l'action liée à la tâche en question qui peut impliquer :

      • Exécution d'un script : lancement de cmd.exe ou powershell.exe pour exécuter un script.

      • Démarrage d'une application : lancement de l'application spécifiée, par exemple, example.exe.

  • Contexte utilisateur (User Context) : le tâche s'exécute avec les droits utilisateur définis lors de sa création.

  1. Journalisation et suite des opérations

  • Journalisation de la tâche (Task Logging) : une fois la tâche terminée, le planificateur de tâches signale les résultats dans l'observateur d'événement (Event Viewer) sous "planificateur de tâches", qui comprend :

    • Heures de début et de fin.

    • o   Résultat de la tâche (succès, échec ou codes d'erreur).

    • Messages de sortie ou d'erreur.

  • Surveillance continue (Ongoing Monitoring) : le service planificateur de tâches continue de fonctionner et est prêt à gérer et à exécuter d'autres tâches planifiées lorsqu'il sera sollicité par les déclencheurs.

Les tâches planifiées pour établir la persistance

La persistance est cruciale pour que les attaquants réussissent leur attaque. Cette capacité leur permet de maintenir un accès à long terme au système compromis, permettant ainsi d’installer un chaos de manière continue et d’avoir un point d’ancrage pour lancer des actions encore plus dévastatrices. L’une des techniques de persistance les plus répandues et les plus utilisées est la tâche planifiée. Les adversaires utilisent généralement les tâches planifiées pour maintenir la persistance, exécuter leurs charges virales malveillantes à des moments bien précis ou lancer des tâches automatiques sur les appareils compromis. De plus, les tâches planifiées permettent aux processus de s'exécuter avec des privilèges élevés. En outre, ils tentent de configurer ces tâches pour qu’elles s’exécutent en se cachant derrière des processus légitimes, renforçant ainsi leur implantation au sein de l’environnement cible et rendant leur détection difficile. L'un des outils les plus couramment utilisés dans Windows pour planifier de telles tâches est « schtasks.exe ».

Schtasks

'schtasks.exe' est une application en ligne de commande Windows permettant de gérer les tâches planifiées sur des ordinateurs locaux ou distants, telles que la création, la suppression, la modification, l'exécution et l’arrêt de tâches. Bien qu'il s'agisse d'un outil essentiel pour les administrateurs système, c'est également une option couramment utilisée par les attaquants pour maintenir la persistance, lancer des charges virales malveillantes et effectuer des opérations illégales. Nous avons remarqué l'utilisation de schtasks, et en particulier de la commande /create pour planifier des tâches et lancer ainsi une large gamme d'opérations malveillantes et de malwares. Vous trouverez ci-dessous l'extrait de cette commande observée dans l'un des derniers échantillons de Xworm pour créer une nouvelle tâche planifiée.

Cette commande crée une tâche planifiée "Nafifas" qui s'exécute toutes les minutes. La tâche exécute le fichier svchost.exe situé dans le répertoire C:\Users\Admin\AppData\Roaming\svchost\. Le fait de déposer les charges virales dans des répertoires accessibles en écriture par l'utilisateur comme \AppData\Roaming\ est un comportement courant chez les adversaires. L'indicateur (flag) /f force la création de la tâche, en remplaçant toute tâche existante portant le même nom. Un attaquant utilise cette tâche pour maintenir la persistance, en exécutant à plusieurs reprises un exécutable potentiellement malveillant.

Dans ce cas, la tâche planifiée exécute le processus svchost.exe à partir du répertoire \AppData\Roaming, qui n'est pas un emplacement habituel pour les processus légitimes comme svchost.exe, généralement exécutés à partir de %SystemRoot%\System32. Le malware tente d'échapper à la détection en se faisant passer pour un processus système légitime et en s'exécutant à partir d'un répertoire inhabituel. Cette stratégie permet de dissimuler son activité, rendant ainsi plus difficile, pour les utilisateurs et les outils de sécurité, de la considérer comme malveillante et permet ainsi au malware de maintenir sa présence.

Les adversaires peuvent également utiliser d'autres indicateurs de schtasks comme /run, /delete, /query pour exécuter, supprimer et interroger les tâches planifiées existantes. Par exemple, les adversaires aiment supprimer les contrôles de sécurité planifiés comme les analyses planifiées de Windows Defender.

Chasse aux tâches planifiées suspectes avec Logpoint SIEM

Diverses sources de données de log peuvent être utilisées pour détecter la création de tâches planifiées suspectes au niveau des systèmes endpoint. Voici une description détaillée de ces dernières.

Surveillance des processus (Process Monitoring)

Sous Windows, il est recommandé de configurer Audit Process Creation pour activer la journalisation en ligne de commande. Les événements de création de processus de Windows Sysmon peuvent également être utilisés pour surveiller efficacement les processus. L'examen des processus associés à la création ou à l'exécution de tâches planifiées, comme les modèles en ligne de commande de schtasks.exe et les processus enfants de svchost.exe, pourrait être le point de départ de la détection.

Planificateur de tâches/Logs opérationnels

Sous Windows, le log Microsoft-Windows-TaskScheduler/Operational est un log d'événement spécifique dans l'observateur d'événement (Event Viewer) Windows dédié à l'enregistrement des événements opérationnels détaillés pour le service planificateur de tâches. Ce log fournit des informations complètes sur les activités et les opérations effectuées par le planificateur de tâches, notamment l'enregistrement, l'exécution, l'arrêt des tâches et les erreurs associées. L'ID d'événement 200 est généré lorsqu'une nouvelle action concernant une tâche démarre mais aussi dans le cadre d'autres actions.

Les logs des tâches planifiées sont également disponibles via les événements Microsoft-Windows-Security-Auditing. Pour accéder à ces logs, vous devez activer la politique «Audit Other Object Access Events». Une fois activée, les ID d'événement suivants seront générés :

  • 4698 : Création de tâches planifiées.

  • 4699 : Suppression de tâches planifiées.

  • 4700 : Activation de tâches planifiées.

  • 4701 : Désactivation de tâches planifiées.

  • 4702 : Mise à jour de tâches planifiées.

Tâches persistantes provenant d'emplacements suspects

Les malwares ou acteurs malveillants déposent fréquemment leurs charges virales dans des répertoires accessibles publiquement en écriture, les utilisant ainsi pour le déploiement initial et la persistance. Il est crucial donc de surveiller les tâches planifiées provenant de ces répertoires spécifiques.

Scheduled Tasks 3

La gestion de l'exécution des tâches planifiées sous Windows 10 est assurée par svchost.exe via la ligne de commande C:\WINDOWS\system32\svchost.exe -k netsvcs -p -s Schedule. Avant Windows 10 version 1511, elle était exécutée par taskeng.exe. L'analyse des sous-processus de ce processus particulier permet de détecter tout modèle irrégulier qui pourrait indiquer la présence de tâches planifiées potentiellement dangereuses.

Scheduled Tasks 4

Supposons que d’autres audits d'accès aux objets aient été activés. Dans ce cas, nous pouvons également détecter la création de telles tâches planifiées via l'ID d'événement 4698.

Scheduled Tasks 5

Exécution de programmes planifiés suspects

Les malwares ou acteurs malveillants ont tendance à exécuter leurs scripts malveillants de manière répétée à l'aide de programmes de script Windows shell tels que cmd, Powershell, Wscript et Csript, tout en abusant également des autres LOLBAS courants. C'est également une bonne idée d'examiner de tels modèles d'exécution.  

La requête ci-dessous peut aider à détecter la création de tâches planifiées exécutant des programmes potentiellement suspects.

La requête ci-dessus détecte uniquement la création, mais nous pouvons suivre svchost.exe, qui est associé aux tâches de planification, pour détecter les détails de l'exécution du processus.

Alternative via les événements de connexion réseau

Dans des campagnes spécifiques, le malware communique avec un domaine externe, généralement un serveur Command and Control (C&C), pour échanger des informations, notamment des données et des instructions. Cette communication est facilitée par des tâches planifiées, permettant au malware d'interagir avec des domaines malveillants, de télécharger des charges virales ou de transmettre les données collectées en fonction des exigences de l'attaquant. Nous pouvons rechercher l'URL utilisée au niveau de la ligne de commande de la tâche planifiée.

Création d’un fichier de tâche planifiée

Lorsqu'une nouvelle tâche planifiée est créée, un fichier XML sans extension est automatiquement généré dans le répertoire %systemroot%\System32\Tasks. Gardez donc un œil sur la génération de ces fichiers potentiellement sans rapport avec des logiciels reconnus ou des processus valides. Le nom du fichier correspond au nom de la tâche planifiée.

Tâches planifiées masquées

Les tâches planifiées masquées font référence aux cas dans lesquels un attaquant crée ou modifie des tâches planifiées sur un système pour paraître légitimes, masquant ainsi des activités malveillantes. En se dissimulant de la sorte, les attaquants visent à éviter d'être détectés par les administrateurs système ou les logiciels de sécurité. Ces tâches peuvent être utilisées pour maintenir la persistance, exécuter des charges virales malveillantes ou mener d'autres actions à des moments bien précis ou à des intervalles de temps spécifiques.

Faire passer des tâches planifiées malveillantes pour des processus légitimes, tels que svchost.exe, "lsass.exe" et bien autres, est une technique d'évasion de défense couramment utilisée par les acteurs malveillants. La requête suivante peut nous aider à rechercher l'exécution de tels processus.

Cette requête détecte de tels comportements anormaux en identifiant les processus qui démarrent à partir de chemins inhabituels mais excluent les processus de tâche planifiée à partir d'emplacements fiables et connus.

Modification du registre des tâches planifiées

Windows Sysmon fournit une gamme télémétrique utile pour la chasse aux menaces, notamment la télémétrie pour le registre Windows. Lorsqu'une nouvelle tâche planifiée est créée, deux entrées de registre spécifiques sont générées :

Par conséquent, il est conseillé d'activer l'entrée de ces clés de registre dans la configuration sysmon pour identifier toute tâche planifiée potentiellement malveillante.

La requête fournie peut aider à identifier de tels événements. Néanmoins, il est crucial de procéder avec prudence car la requête peut générer du bruit. Par conséquent, nous conseillons d’incorporer un filtre pour éliminer les faux positifs, étant donné que de nombreux processus valides génèrent et mettent à jour en permanence des tâches planifiées. Par la suite, la création d'une requête de référence spécifique à l'environnement de votre entreprise pourra aider à identifier toute exécution de tâche planifiée douteuse.

Tâche planifiée via une interface COM

Dans une campagne récente de Latrodectus, une approche unique a été observée pour contourner l'outil de ligne de commande habituel schtasks.exe lors de la création des tâches planifiées. Au lieu de cela, il a été observé en train d’utiliser l'objet COM (Schedule.Service) pour interagir avec le planificateur de tâches via le module taskschd.dll. Étant donné que divers processus légitimes chargent également taskschd.dll, la simple détection de son utilisation ne suffit pas à identifier une intention malveillante. Comme les charges virales malveillantes sont généralement déposées dans des répertoires accessibles publiquement en écriture, l'examen des processus suspects provenant de ces chemins qui chargent ce module pourrait indiquer la création de tâches planifiées malveillantes. La requête suivante est destinée à rechercher de tels événements.

Alertes Logpoint

En plus des requêtes de détection mentionnées ci-dessus, vous pouvez utiliser les règles d'alerte prêtes à l'emploi de Logpoint. L'activation de ces alertes peut aider à identifier toute tâche planifiée potentiellement suspecte au sein de l’environnement de votre entreprise. Les alertes suivantes sont explicitement associées à des tâches planifiées suspectes.

Conclusion

Les tâches planifiées sont une technique lucrative de type « living off the land » souvent exploitée par les acteurs malveillants à des fins de persistance. La détection préalable de ces tâches planifiées est essentielle pour mitiger les dommages potentiels. Ces tâches permettent à du code malveillant de s'exécuter même après un redémarrage du système, entraînant ainsi des dommages importants et potentiellement irréparables. Il est essentiel que votre entreprise identifie et traite les cybermenaces au-delà des tâches planifiées.

L'exploitation de Logpoint SIEM, combinée aux capacités SOAR de Logpoint Automation et au capteur endpoint AgentX (qui donne à Logpoint SIEM des fonctionnalités d'investigation endpoint automatisée), permet une surveillance proactive et une mitigation des activités suspectes, et ce dès le départ, protégeant ainsi les différentes activités et opérations de votre entreprise. De plus, Logpoint Security Research développe continuellement des analyses et partage des informations via des articles de blog tels que les rapports de protection contre les menaces émergentes (Emerging Threats Protection Reports). Restez informé en suivant Logpoint sur LinkedIn.