Cache Penjadwal Tugas¶
Apa itu TaskCache¶
Windows Task Scheduler menyimpan cache registry di bawah SOFTWARE yang menautkan path tugas dengan GUID,
trigger/daftar, principal, tindakan (action), metadata runtime, dan security descriptor. Juntei mendekode
tindakan eksekusi dan COM handler beserta tindakan email/pesan lawas, timestamp tugas, dan tanda-tanda
tugas yang disembunyikan dari antarmuka Task Scheduler biasa.
Tugas terjadwal adalah mekanisme persistensi dan eksekusi jarak jauh yang umum. Cache registry juga bernilai ketika penyerang menghapus atau merusak berkas XML tugas.
Kesimpulan terbaik: TaskCache mengonfigurasi atau mempertahankan tugas/tindakan tersebut. Field runtime dan log independen diperlukan untuk membuktikan eksekusi tertentu.
Lokasi¶
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache
C:\Windows\System32\Tasks\... (task XML/files; collect separately)
Kumpulkan SOFTWARE beserta log transaksinya dan seluruh pohon System32\Tasks. Log peristiwa Task Scheduler
Operational dan Security menambahkan bukti pembuatan/pembaruan/runtime.
Peringatan bagi analis¶
- Cache registry dan XML tugas dapat saling bertentangan setelah perusakan, penghapusan, registrasi yang tidak lengkap, atau kerusakan.
Hiddenmilik Juntei mengidentifikasi penyembunyian struktural (keterkaitan Tree/security descriptor yang hilang dalam kondisi yang relevan), bukan sekadar tugas yang dikonfigurasi dengan flag UI “Hidden” biasa.- Windows 7 menyimpan tindakan tugas di XML, bukan di nilai
Actionsmilik cache; tindakan yang kosong tidak otomatis mencurigakan di sana. LastRundanLastResultberguna tetapi bukan riwayat eksekusi yang lengkap dan tahan manipulasi.Contextmenyebutkan principal/konteks yang dikonfigurasi, bukan pengguna yang mendaftarkan tugas tersebut.- CLSID COM handler memerlukan resolusi registry/berkas secara terpisah.
Mengurai dengan Juntei¶
Usage: juntei parse-registry taskcache <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SOFTWARE hives
-f, --file <FILE> Parse one SOFTWARE hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Filtering:
--task <NAME> Full task path or final task name
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry taskcache -f SOFTWARE -o tasks.csv
juntei parse-registry taskcache -f SOFTWARE -t jsonl \
| jq 'select(.Hidden == true or (.Executable? | test("powershell|cmd|mshta"; "i")))'
Field keluaran¶
| Field | Interpretasi |
|---|---|
Host, SourcePath |
Konteks host dan hive SOFTWARE sumber. |
TaskName |
Path scheduler lengkap. Pivot utama ke XML dan log peristiwa. |
TaskGUID |
GUID yang menggabungkan entri cache Tree dan Tasks. Kunci korelasi yang kuat. |
TaskIndex |
Metadata Tree/indeks yang digunakan oleh scheduler; bersifat kontekstual, bukan hitungan eksekusi. |
TaskLists |
Daftar cache (Boot, Logon, Plain, Maintenance) yang mengategorikan pemicuan/penanganan. |
Hidden |
Indikator tugas tersembunyi secara struktural. Tinjau InTree, InTasks, dan status descriptor sebelum menyimpulkan adanya perusakan. |
InTree, InTasks |
Apakah kedua sisi cache ada. Keterkaitan yang hilang dapat mengindikasikan penghapusan/perusakan/registrasi yang tidak lengkap. |
HasSecurityDescriptor |
Apakah entri Tree memiliki SD; ketiadaannya dapat berkontribusi pada perilaku tugas tersembunyi pada versi yang relevan. |
TreeKeyLastWrittenUTC, TaskKeyLastWrittenUTC |
Perubahan tingkat kunci untuk setiap sisi cache; bukan waktu pembuatan/eksekusi yang persis. |
ActionIndex |
Tindakan di dalam tugas, berbasis nol. Satu tugas dapat menghasilkan beberapa baris. |
ActionType |
exec, com_handler, send_email, atau show_message. |
Executable, Args, WorkingDirectory |
Tindakan eksekusi efektif. Interpretasikan tanda kutip, variabel, path relatif, dan LOLBin. |
COM-ClassID, ActionData |
CLSID dan data COM handler, atau payload email/pesan lawas. Resolusikan CLSID secara terpisah. |
Context |
Konteks principal yang dienkode bersama tindakan (LocalSystem, Author, dll.); identitas yang dikonfigurasi, bukan pendaftar. |
Author, URI, Description |
Metadata tugas. Mudah dikendalikan penyerang dan bukan bukti kepercayaan. |
LastRegisteredUTC |
Waktu registrasi/pembaruan DynamicInfo bila ada. |
LastRunUTC, LastSuccessfulRunUTC, LastResult |
Metadata runtime/hasil yang di-cache. Korelasikan dengan log operasional dan bukti proses. |
ActionsRaw |
Byte tindakan asli jika dekode tidak lengkap atau validasi diperlukan. |
TransactionLogStatus, LogsApplied |
Konteks pemulihan registry. |
Problems |
Ketidakcocokan path/GUID, tipe nilai yang salah, struktur tindakan yang terpotong, atau bagian yang hilang. |
Strategi investigasi¶
- Tinjau tugas yang tersembunyi/tidak konsisten dan path non-Microsoft terlebih dahulu.
- Rekonstruksi perintah efektif, termasuk argumen, direktori kerja, ekspansi variabel lingkungan, dan resolusi COM.
- Bandingkan catatan registry dengan XML tugas dan lakukan hash/periksa timestamp executable yang dirujuk.
- Korelasikan
TaskName/GUID/waktu dengan peristiwa Task Scheduler, Security 4698/4702, log proses, Prefetch, dan MFT/USN. - Telusuri data registry yang terhapus/dipulihkan bila penyerang menghapus tugas tersebut.