ذاكرة التخزين المؤقت لجدولة المهام¶
ما هو TaskCache¶
يحتفظ Task Scheduler في Windows بذاكرة تخزين مؤقت في سجل Windows ضمن SOFTWARE تربط مسارات المهام
بمعرّفات GUID، والمشغّلات/القوائم، والكيانات الأمنية (principals)، والإجراءات، والبيانات الوصفية لوقت
التشغيل، وواصفات الأمان. يفك Juntei ترميز إجراءات التنفيذ وإجراءات معالجات COM، إضافةً إلى إجراءات
البريد الإلكتروني/الرسائل القديمة، والطوابع الزمنية للمهام، وعلامات المهام المخفية عن واجهة Task
Scheduler العادية.
المهام آلية شائعة للاستمرارية والتنفيذ عن بُعد. كما أن ذاكرة التخزين المؤقت في سجل Windows قيّمة عندما يحذف المهاجم ملف XML الخاص بالمهمة أو يعبث به.
أفضل استنتاج: كوّن TaskCache المهمة/الإجراء أو احتفظ بهما. وتلزم حقول وقت التشغيل وسجلات مستقلة لإثبات تنفيذ بعينه.
المواقع¶
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache
C:\Windows\System32\Tasks\... (task XML/files; collect separately)
اجمع SOFTWARE مع سجلات المعاملات وشجرة System32\Tasks كاملة. وتضيف سجلات أحداث Task Scheduler
Operational وSecurity أدلة على الإنشاء/التحديث/وقت التشغيل.
تحذيرات للمحلل¶
- قد تتعارض ذاكرة التخزين المؤقت في سجل Windows مع ملف XML الخاص بالمهمة بعد العبث، أو الحذف، أو التسجيل غير المكتمل، أو التلف.
- يحدد
Hiddenفي Juntei الإخفاء البنيوي (غياب الربط بـ Tree/واصف الأمان في ظل الظروف ذات الصلة)، لا مجرد مهمة مكوّنة بعلامة "Hidden" العادية في الواجهة. - يخزّن Windows 7 إجراءات المهام في XML بدلًا من القيمة
Actionsفي ذاكرة التخزين المؤقت؛ لذا فإن الإجراء الفارغ هناك ليس مريبًا تلقائيًا. LastRunوLastResultمفيدان، لكنهما ليسا سجل تنفيذ كاملًا ومحصّنًا ضد العبث.- يسمّي
Contextالكيان الأمني/السياق المكوَّن، لا المستخدم الذي سجّل المهمة. - تتطلب معرّفات CLSID لمعالجات COM تحليلًا منفصلًا في سجل Windows/الملفات.
التحليل باستخدام 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")))'
حقول الإخراج¶
| الحقل | التفسير |
|---|---|
Host، SourcePath |
سياق المضيف وخلية SOFTWARE المصدر. |
TaskName |
المسار الكامل في المجدول. النقطة المحورية الرئيسية إلى XML وسجلات الأحداث. |
TaskGUID |
معرّف GUID الذي يربط إدخالات ذاكرة التخزين المؤقت في Tree وTasks. مفتاح ربط قوي. |
TaskIndex |
بيانات Tree/الفهرس الوصفية التي يستخدمها المجدول؛ سياقية، وليست عدد مرات تنفيذ. |
TaskLists |
قوائم ذاكرة التخزين المؤقت (Boot، Logon، Plain، Maintenance) التي تصنّف التشغيل/المعالجة. |
Hidden |
مؤشر بنيوي على المهمة المخفية. راجع InTree وInTasks وحالة الواصف قبل استنتاج حدوث عبث. |
InTree، InTasks |
ما إذا كان جانبا ذاكرة التخزين المؤقت موجودين. وقد يشير غياب الربط إلى حذف/عبث/تسجيل غير مكتمل. |
HasSecurityDescriptor |
ما إذا كان لإدخال Tree قيمة SD؛ وقد يسهم غيابها في سلوك المهمة المخفية في الإصدارات ذات الصلة. |
TreeKeyLastWrittenUTC، TaskKeyLastWrittenUTC |
تغييرات على مستوى المفتاح لكل جانب من جانبي ذاكرة التخزين المؤقت؛ وليست أوقات إنشاء/تشغيل دقيقة. |
ActionIndex |
رقم الإجراء داخل المهمة بدءًا من الصفر. يمكن لمهمة واحدة أن تنتج عدة صفوف. |
ActionType |
exec أو com_handler أو send_email أو show_message. |
Executable، Args، WorkingDirectory |
إجراء التنفيذ الفعلي. فسّر علامات الاقتباس، والمتغيرات، والمسارات النسبية، وLOLBins. |
COM-ClassID، ActionData |
معرّف CLSID لمعالج COM وبياناته، أو حمولة البريد الإلكتروني/الرسالة القديمة. حلّل CLSID بشكل منفصل. |
Context |
سياق الكيان الأمني المرمّز مع الإجراءات (LocalSystem، Author، إلخ)؛ هوية مكوَّنة، لا الجهة التي سجّلت المهمة. |
Author، URI، Description |
البيانات الوصفية للمهمة. يسهل على المهاجم التحكم فيها، وليست دليلًا على الثقة. |
LastRegisteredUTC |
وقت التسجيل/التحديث في DynamicInfo حيثما وُجد. |
LastRunUTC، LastSuccessfulRunUTC، LastResult |
بيانات وصفية مخزنة مؤقتًا لوقت التشغيل/النتيجة. اربطها بالسجلات التشغيلية وأدلة العمليات. |
ActionsRaw |
بايتات الإجراء الأصلية إذا كان فك الترميز غير مكتمل أو كان التحقق مطلوبًا. |
TransactionLogStatus، LogsApplied |
سياق استرداد سجل Windows. |
Problems |
عدم تطابق المسار/GUID، أو نوع قيمة خاطئ، أو بنية إجراء مقتطعة، أو أجزاء مفقودة. |
استراتيجية التحقيق¶
- راجع المهام المخفية/غير المتسقة والمسارات غير التابعة لـ Microsoft أولًا.
- أعد بناء الأوامر الفعلية، بما في ذلك الوسيطات، ومجلد العمل، وتوسيع متغيرات البيئة، وتحليل COM.
- قارن سجل سجل Windows بملف XML الخاص بالمهمة، واحسب تجزئة الملف التنفيذي المشار إليه وتحقق من طوابعه الزمنية.
- اربط
TaskName/GUID/الوقت بأحداث Task Scheduler، وSecurity 4698/4702، وسجلات العمليات، وPrefetch، وMFT/USN. - ابحث في بيانات سجل Windows المحذوفة/المستردة عندما يكون المهاجم قد أزال المهمة.