Was sind geplante Aufgaben unter Windows?
Die Aufgabenplanung startet Programme beim Systemstart, bei der Anmeldung, nach Zeitplan, bei einem Ereignis oder im Leerlauf. Windows bringt Hunderte eigener Aufgaben mit, und Software-Installer fügen weitere hinzu. Zugleich ist sie einer der häufigsten Wege, auf denen Angreifer ihren Zugriff auf einen Rechner sichern (MITRE ATT&CK T1053.005).
Jede Aufgabe existiert an zwei Stellen: als XML-Definition auf dem Datenträger und als Cache im SOFTWARE-Hive der Registry, den die Aufgabenplanung tatsächlich lädt. Durch den Vergleich beider findet man Aufgaben, die versteckt, manipuliert oder deren Dateien gelöscht wurden.
Wo die Spuren liegen
- C:\Windows\System32\Tasks\ — eine XML-Datei pro Aufgabe (UTF-16LE, ohne Endung): Autor, Registrierungsdatum, Trigger, ausführendes Konto, Einstellungen und Aktionen (Befehlszeile, COM-Handler).
- SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache — Tree (Aufgabenpfade mit den Werten Id, Index und SD) und Tasks\{GUID} (Path, Hash, Actions, Triggers und DynamicInfo mit FILETIMEs für Erstellung und letzte Ausführung).
- C:\Windows\Tasks\*.job — ältere Jobs der Aufgabenplanung 1.0: Anwendung, Parameter, Autor, Zeitpunkt der letzten Ausführung.
- Zugehörige Logs (hier nicht ausgewertet): Security-Event-IDs 4698–4702, wenn die Überwachung des Objektzugriffs aktiv ist, sowie Microsoft-Windows-TaskScheduler/Operational (106 registriert, 140 aktualisiert, 141 gelöscht, 200/201 Aktion gestartet/abgeschlossen).
Was dieses Tool prüft
- Versteckte Aufgaben: ein Tree-Eintrag im TaskCache ohne SD-Wert (die „Tarrask“-Technik) — unsichtbar für schtasks und die Konsole, wird aber weiter ausgeführt.
- Gelöschte oder platzierte Dateien: registrierte Aufgaben ohne XML-Datei und XML-Dateien ohne Registrierung; nach der Registrierung bearbeitete XML-Dateien (TaskCache-Hash) und Registry-Aktionen, die von der Datei abweichen.
- Verdächtige Inhalte: kodiertes PowerShell (für Sie dekodiert), LOLBins, Befehle in vom Benutzer beschreibbaren Pfaden oder Netzwerkpfaden, SYSTEM oder höchste Privilegien bei Nicht-Microsoft-Aufgaben, versteckte Nicht-Microsoft-Aufgaben, zufällig wirkende Namen und kürzlich registrierte Aufgaben.
- Zeitstempel: Registrierungsdatum, Erstellung im TaskCache, letzte Ausführung und letzte erfolgreiche Ausführung, Startgrenzen der Trigger und letzte Schreibzugriffe auf Registry-Schlüssel, auf einer gemeinsamen, filterbaren Zeitleiste.
Einschränkungen
- Registry-Transaktionslogs werden nicht eingespielt: Ein „dirty“ Hive wird markiert, aber Änderungen, die noch in SOFTWARE.LOG1/LOG2 stehen, fehlen.
- Die Binärwerte im TaskCache (DynamicInfo, Actions, Triggers) sind nicht dokumentiert; ihre Struktur stammt aus öffentlichem Reverse Engineering. Dekodiert werden nur der Triggers-Header und der Principal, nicht jeder einzelne Trigger-Datensatz.
- XML-Datumsangaben, Trigger-Zeiten und .job-Zeiten sind lokale Zeit ohne Zeitzone; der Versatz wird nach Möglichkeit abgeleitet und angezeigt.
- Gelöschte Registry-Schlüssel und gelöschte XML-Dateien werden nicht per Carving wiederhergestellt; dafür sind die Ereignisprotokolle und Volumeschattenkopien die richtigen Anlaufstellen.
So kommen Sie an die Dateien
- Sichern Sie C:\Windows\System32\Tasks (und C:\Windows\Tasks) sowie den SOFTWARE-Hive mit KAPE (ScheduledTasks + RegistryHivesSystem), Velociraptor (Windows.Triage.Targets) oder mit reg save und einer Kopie des Ordners.
- Behalten Sie die Ordnerstruktur bei (…\Windows\System32\Tasks, …\Windows\System32\config\SOFTWARE), damit Aufgaben dem richtigen Hive zugeordnet werden, wenn ein ZIP mehrere Rechner enthält.
- Sichern Sie den vollständigen Tasks-Ordner: Fehlende XML-Dateien werden nur markiert, wenn die meisten registrierten Aufgaben ihre Datei haben.
FAQ
Werden meine Dateien irgendwohin hochgeladen?
Nein. Der Parser — einschließlich seiner Registry- und XML-Leser — ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker in Ihrem Browser. Es gibt keinen Upload-Endpunkt.
Wie findet das Tool versteckte (Tarrask-)Aufgaben?
Die Aufgabenplanung listet eine Aufgabe nur, wenn ihr TaskCache\Tree-Schlüssel einen SD-Wert (Sicherheitsbeschreibung) hat. Schadsoftware mit SYSTEM-Rechten kann diesen Wert löschen: Die Aufgabe verschwindet aus schtasks und der Konsole, läuft aber weiter. Das Tool markiert jeden Tree-Schlüssel mit Aufgaben-Id, aber ohne SD, und zeigt den Zeitpunkt des letzten Schreibzugriffs auf den Schlüssel.
Warum brauche ich sowohl den Tasks-Ordner als auch den SOFTWARE-Hive?
Jeder erzählt die halbe Geschichte. Die XML-Datei ist die lesbare Definition; der TaskCache ist das, was die Aufgabenplanung tatsächlich lädt. Registrierte Aufgaben ohne XML-Datei, nie registrierte Dateien, nach der Registrierung bearbeitete XML-Dateien und Registry-Aktionen, die von der Datei abweichen, zeigen sich nur im Vergleich beider.
Warum sind die Zeiten verschoben?
Windows schreibt das Registrierungsdatum und die Trigger-Zeiten im Aufgaben-XML als lokale Zeit ohne Zeitzone, während TaskCache-Zeiten in UTC vorliegen. Das Tool leitet den Versatz des Rechners ab, indem es beide für dieselben Aufgaben vergleicht, und Sie können ihn selbst festlegen.
Ist eine markierte Aufgabe bösartig?
Nicht unbedingt. Befunde sind Hinweise für die Triage: Updater von Drittanbietern laufen als SYSTEM aus ProgramData, manche Verwaltungstools nutzen kodiertes PowerShell. Lesen Sie die Erläuterung zu jedem Befund und prüfen Sie ihn anhand weiterer Artefakte.