RecentDocs¶
ما هو RecentDocs¶
يخزّن Windows Explorer قوائم بالملفات والمجلدات المستخدمة مؤخرًا (MRU) في ملف NTUSER.DAT لكل مستخدم.
تغطي القائمة الجذرية العناصر الأخيرة من جميع الأنواع؛ وتجمع المفاتيح الفرعية الامتدادات مثل .docx،
إضافةً إلى قائمة Folder. ويحدد MRUListEx ترتيب القيم المرقمة.
يفيد RecentDocs في تحديد المستندات التي تفاعل معها المستخدم، بما في ذلك الملفات التي حُذفت أو نُقلت لاحقًا. ويمكن أن تحتوي القيم أيضًا على اسم الاختصار الذي استخدمه Windows في مجلد Recent الخاص بالمستخدم، والذي يمكن ربطه بأدلة LNK.
أفضل استنتاج: سجّل Explorer العنصر في قائمة RecentDocs الخاصة بذلك المستخدم. ولا يؤرّخ وقت المفتاح إلا أحدث عنصر في تلك القائمة بعينها.
الموقع¶
اجمع NTUSER.DAT وسجلات المعاملات الخاصة به لكل ملف تعريف ذي صلة، إضافةً إلى مجلد LNK الخاص بـ Recent
لدى المستخدم.
تحذيرات للمحلل¶
- يعطي
MRUListExالترتيب، لا طابعًا زمنيًا لكل عنصر. - يقابل وقت آخر كتابة للمفتاح أحدث تحديث؛ ولا يحصل على
LastOpenedUTCمشتق منه وقابل للدفاع عنه إلا موضع MRU رقم 0. - يمكن أن يظهر العنصر في القائمة الجذرية وفي قائمة امتداد. لا تحسبه مرتين على أنه عمليتا فتح.
- قد يختلف سلوك التطبيقات وExplorer؛ وقد لا تحدّث بعض طرق الوصول RecentDocs.
- تزيل أدوات التنظيف/الخصوصية وحدود حجم القوائم الأدلة الأقدم.
- يمكن أن يتحكم المهاجم في اسم الملف، وهو ليس دليلًا على نوع المحتوى.
- يُستدل على المستخدم من مسارات ملف التعريف أو بيانات مجلدات الواجهة (shell folders)؛ راجع أسماء المستخدمين الفارغة/الملتبسة.
التحليل باستخدام Juntei¶
Usage: juntei parse-registry recent-docs <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find NTUSER.DAT hives
-f, --file <FILE> Parse one NTUSER.DAT
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry recent-docs -f NTUSER.DAT -o recentdocs.csv
juntei parse-registry recent-docs -d evidence/ -t jsonl \
| jq 'select(.Extension == ".docx" or .Extension == ".pdf")'
حقول الإخراج¶
| الحقل | التفسير |
|---|---|
Host |
المضيف المشتق من سياق المجموعة/النظام حيثما كان متاحًا. |
User |
مالك ملف التعريف المستدل عليه من المسار أو من مسارات مجلدات الواجهة؛ احتفظ بعدم اليقين عندما يكون فارغًا. |
SourcePath |
ملف NTUSER.DAT المُدخل. ضروري عند الجمع بين عدة مستخدمين. |
Extension |
القائمة الفرعية (.docx، Folder، إلخ)؛ وتكون null لقائمة RecentDocs الجذرية. |
MRU-Position |
الصفر هو الأحدث داخل هذه القائمة. وهذا ترتيب نسبي، لا زمن منقضٍ. |
ValueIndex |
قيمة سجل Windows المرقمة التي يشير إليها MRUListEx. وهي نقطة محورية بنيوية فقط. |
Filename |
اسم العنصر بعد فك ترميزه. اربط المسار الكامل عبر LNK أو Jump List أو MFT أو بيانات التطبيقات. |
LinkName |
اسم الاختصار المرمّز في عنصر الواجهة (shell item)، ويوجد غالبًا في مجلد Recent الخاص بالمستخدم. |
KeyLastWrittenUTC |
وقت آخر تغيير لمفتاح القائمة. ينطبق على القائمة، لا على كل صف. |
LastOpenedUTC |
لا يُملأ إلا لموضع MRU رقم 0، حيث يدعم وقت المفتاح هذا التفسير. |
ValueDataRaw |
البايتات الخام عند فشل فك الترميز أو عند حاجة الدليل إلى التحقق. |
TransactionLogStatus، LogsApplied |
ما إذا كانت سجلات سجل Windows قد أُعيد تطبيقها وأيّها. |
Problems |
قيم MRU مفقودة، أو قيم غير مدرجة، أو أنواع خاطئة، أو تلف في فك الترميز. |
استراتيجية التحقيق¶
- افصل القائمة الجذرية وقوائم الامتدادات لكل مستخدم؛ وأزل تكرار العنصر نفسه بعناية.
- استخدم موضع MRU للترتيب، ولا تستخدم إلا
LastOpenedUTCلأي ادعاء مؤرّخ بطابع زمني. - طابق
LinkName/Filenameمع بيانات LNK في Recent وJump List و$MFTوUSN. - راجع الأسماء الخادعة، والامتدادات المزدوجة، والأهداف الشبكية/القابلة للإزالة، والمستندات القريبة من الوصول الأولي.
- اربط النتائج ببيانات Prefetch/SRUM للتطبيقات وبسجلات الأحداث عندما يكون التنفيذ مهمًا.