Task Scheduler cache¶
TaskCache ဆိုသည်မှာ¶
Windows Task Scheduler သည် task path များကို GUID များ၊ trigger/စာရင်းများ၊ principal များ၊ action များ၊ runtime metadata
နှင့် security descriptor များနှင့် ချိတ်ဆက်ပေးသော registry cache တစ်ခုကို SOFTWARE အောက်တွင် ထားရှိသည်။ Juntei သည်
execution နှင့် COM-handler action များအပြင် legacy email/message action များ၊ task timestamp များနှင့် ပုံမှန်
Task Scheduler interface မှ ဝှက်ထားသော task များ၏ လက္ခဏာများကို decode လုပ်သည်။
Task များသည် အမြဲတမ်းဝင်ရောက်နိုင်မှု (persistence) နှင့် အဝေးမှ လုပ်ဆောင်ခြင်းအတွက် အသုံးများသော နည်းလမ်းဖြစ်သည်။ တိုက်ခိုက်သူက task ၏ XML ဖိုင်ကို ဖျက်ခြင်း သို့မဟုတ် ပြင်ဆင်ခြင်း ပြုလုပ်သည့်အခါတွင်လည်း registry cache သည် တန်ဖိုးရှိသည်။
အကောင်းဆုံး ကောက်ချက်: TaskCache သည် task/action ကို ပြင်ဆင်သတ်မှတ်ခဲ့သည် သို့မဟုတ် ထိန်းသိမ်းထားခဲ့သည်။ သီးခြား လုပ်ဆောင်မှုတစ်ခုကို သက်သေပြရန် runtime field များနှင့် သီးခြားလွတ်လပ်သော log များ လိုအပ်သည်။
တည်နေရာများ¶
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache
C:\Windows\System32\Tasks\... (task XML/files; collect separately)
SOFTWARE ကို transaction log များနှင့်အတူ စုဆောင်းပြီး System32\Tasks tree တစ်ခုလုံးကိုလည်း စုဆောင်းပါ။ Task Scheduler
Operational နှင့် Security event log များက ဖန်တီးမှု/အပ်ဒိတ်/runtime အထောက်အထားများကို ဖြည့်စွက်ပေးသည်။
စိစစ်သူများ သတိပြုရန်¶
- ပြင်ဆင်ခံရခြင်း၊ ဖျက်ခံရခြင်း၊ မပြည့်စုံသော မှတ်ပုံတင်ခြင်း သို့မဟုတ် ပျက်စီးခြင်းနောက်ပိုင်း registry cache နှင့် task XML တို့ ကွဲလွဲနိုင်သည်။
- Juntei ၏
Hiddenသည် ဖွဲ့စည်းပုံဆိုင်ရာ ဝှက်ထားမှု (သက်ဆိုင်ရာ အခြေအနေများတွင် Tree ချိတ်ဆက်မှု/security descriptor ပျောက်နေခြင်း) ကို ခွဲခြားသတ်မှတ်ခြင်းဖြစ်ပြီး ပုံမှန် “Hidden” UI flag ဖြင့် ပြင်ဆင်ထားသော task ကို ဆိုလိုခြင်း မဟုတ်ပါ။ - Windows 7 သည် task action များကို cache ၏
Actionsvalue တွင်မဟုတ်ဘဲ XML တွင် သိမ်းဆည်းသည်။ ထိုနေရာတွင် ဗလာ action တစ်ခုသည် အလိုအလျောက် သံသယဖြစ်ဖွယ် မဟုတ်ပါ။ LastRunနှင့်LastResultသည် အသုံးဝင်သော်လည်း ပြည့်စုံပြီး ပြင်ဆင်၍မရသော လုပ်ဆောင်မှု သမိုင်းကြောင်း မဟုတ်ပါ။Contextသည် ပြင်ဆင်သတ်မှတ်ထားသော principal/context ကို ဖော်ပြပြီး task ကို မှတ်ပုံတင်ခဲ့သော အသုံးပြုသူ မဟုတ်ပါ။- COM handler CLSID များကို registry/ဖိုင်များမှ သီးခြား ဖြေရှင်းရန် လိုအပ်သည်။
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 များ¶
| Field | အဓိပ္ပာယ်ဖော်ပုံ |
|---|---|
Host, SourcePath |
Host အခြေအနေနှင့် source SOFTWARE hive။ |
TaskName |
Scheduler path အပြည့်အစုံ။ XML နှင့် event log များသို့ အဓိက pivot။ |
TaskGUID |
Tree နှင့် Tasks cache entry များကို ချိတ်ဆက်ပေးသော GUID။ ခိုင်မာသော ချိတ်ဆက်စစ်ဆေးရေး key။ |
TaskIndex |
Scheduler အသုံးပြုသော Tree/index metadata။ အခြေအနေအတွက်သာဖြစ်ပြီး လုပ်ဆောင်မှု အရေအတွက် မဟုတ်ပါ။ |
TaskLists |
Trigger လုပ်ပုံ/ကိုင်တွယ်ပုံကို အမျိုးအစားခွဲပေးသော cache စာရင်းများ (Boot, Logon, Plain, Maintenance)။ |
Hidden |
ဖွဲ့စည်းပုံဆိုင်ရာ hidden-task ညွှန်ကိန်း။ ပြင်ဆင်ခံရသည်ဟု ကောက်ချက်မချမီ InTree၊ InTasks နှင့် descriptor အခြေအနေကို ပြန်လည်သုံးသပ်ပါ။ |
InTree, InTasks |
Cache နှစ်ဘက်စလုံး ရှိ/မရှိ။ ချိတ်ဆက်မှု ပျောက်နေခြင်းသည် ဖျက်ခံရခြင်း/ပြင်ဆင်ခံရခြင်း/မပြည့်စုံသော မှတ်ပုံတင်ခြင်းကို ညွှန်ပြနိုင်သည်။ |
HasSecurityDescriptor |
Tree entry တွင် SD ရှိ/မရှိ။ မရှိခြင်းသည် သက်ဆိုင်ရာ ဗားရှင်းများတွင် hidden-task အပြုအမူကို ဖြစ်စေနိုင်သည်။ |
TreeKeyLastWrittenUTC, TaskKeyLastWrittenUTC |
Cache ဘက်တစ်ခုချင်းစီအတွက် key အဆင့် ပြောင်းလဲမှုများ။ ဖန်တီးချိန်/run ချိန် အတိအကျ မဟုတ်ပါ။ |
ActionIndex |
Task အတွင်းရှိ သုညမှစသော action။ Task တစ်ခုက row အများအပြား ထုတ်ပေးနိုင်သည်။ |
ActionType |
exec၊ com_handler၊ send_email သို့မဟုတ် show_message။ |
Executable, Args, WorkingDirectory |
ထိရောက်သော execution action။ Quote လုပ်ပုံ၊ variable များ၊ relative path များနှင့် LOLBin များကို အဓိပ္ပာယ်ဖော်ပါ။ |
COM-ClassID, ActionData |
COM handler CLSID နှင့် ဒေတာ၊ သို့မဟုတ် legacy email/message payload။ CLSID ကို သီးခြား ဖြေရှင်းပါ။ |
Context |
Action များနှင့်အတူ encode လုပ်ထားသော principal context (LocalSystem, Author စသည်)။ ပြင်ဆင်သတ်မှတ်ထားသော identity ဖြစ်ပြီး မှတ်ပုံတင်သူ မဟုတ်ပါ။ |
Author, URI, Description |
Task metadata။ တိုက်ခိုက်သူက အလွယ်တကူ ထိန်းချုပ်နိုင်ပြီး ယုံကြည်မှု အထောက်အထား မဟုတ်ပါ။ |
LastRegisteredUTC |
ရှိပါက DynamicInfo ၏ မှတ်ပုံတင်/အပ်ဒိတ် အချိန်။ |
LastRunUTC, LastSuccessfulRunUTC, LastResult |
Cache လုပ်ထားသော runtime/ရလဒ် metadata။ Operational log များနှင့် process အထောက်အထားများနှင့် ချိတ်ဆက်စစ်ဆေးပါ။ |
ActionsRaw |
Decode လုပ်ခြင်း မပြည့်စုံပါက သို့မဟုတ် မှန်ကန်မှု စစ်ဆေးရန် လိုအပ်ပါက မူရင်း action byte များ။ |
TransactionLogStatus, LogsApplied |
Registry recovery အခြေအနေ။ |
Problems |
Path/GUID မကိုက်ညီမှု၊ မှားယွင်းသော value အမျိုးအစား၊ ဖြတ်တောက်ခံရသော action ဖွဲ့စည်းပုံ သို့မဟုတ် ပျောက်နေသော အစိတ်အပိုင်းများ။ |
စုံစမ်းစစ်ဆေးမှု ဗျူဟာ¶
- ဝှက်ထားသော/မကိုက်ညီသော task များနှင့် Microsoft မဟုတ်သော path များကို ဦးစွာ ပြန်လည်သုံးသပ်ပါ။
- Argument များ၊ working directory၊ environment ချဲ့ထွင်မှုနှင့် COM ဖြေရှင်းမှု အပါအဝင် ထိရောက်သော ညွှန်ကြားချက်များကို ပြန်လည်တည်ဆောက်ပါ။
- Registry record ကို task XML နှင့် နှိုင်းယှဉ်ပြီး ရည်ညွှန်းထားသော executable ကို hash/timestamp စစ်ဆေးပါ။
TaskName/GUID/အချိန်ကို Task Scheduler event များ၊ Security 4698/4702၊ process log များ၊ Prefetch နှင့် MFT/USN တို့နှင့် ချိတ်ဆက်စစ်ဆေးပါ။- တိုက်ခိုက်သူက task ကို ဖယ်ရှားခဲ့ပါက ဖျက်ထားသော/ပြန်လည်ရယူထားသော registry ဒေတာကို ရှာဖွေပါ။