AbdulRhman Alfaifi 🇸🇦
AbdulRhman Alfaifi 🇸🇦

@A__ALFAIFI

17 تغريدة 11 قراءة Apr 10, 2023
#رمضانيات_DFIR
4 رمضان - MFT$ 📂
ال MFT$ او Master File Table هو واحد من الملفات الخاصة بنظام الملفات NTFS. ال NTFS هو النظام الأساسي ل Windows و ما تقدرت تثبت Windows على نظام ملفات غير NTFS
#DFIR #BlueTeam
هذا الملف يحتوي على معلومات كل الملفات والمجلدات (metadata) الموجودة على جهاز التخزين. ال MFT يحتوي على مجموعة من ال records كل record حجمه 1024 bytes و كل record يحتوي على معلومات لملف أو مجلد
كل record في ال MFT$ يحتوي على شي أسمه attributes كل attribute يحتوي على معلومات مختلفة. بأتكلم بس عن ثلاثة attributes
- $STANDARD_INFORMATION
- $FILE_NAME
- $DATA
$STANDARD_INFORMATION
هذي بعض المعلومات الي يحتويها هذا ال attribute
- ال MACB timestamps
- ال flags الخاصة بالملف\المجلد (هل الملف مخفي,هل الملف مضغوط,الخ)
- ال Security ID, هذا يكون رقم تقدر تستخدمه مع ال $Secure artifact عشان تطلع ال owner و ال permissions الخاصة بالملف\المجلد
$FILE_NAME
هذي بعض المعلومات الي يحتويها هذا ال attribute
- ال MACB timestamps
- حجم الملف
- أسم الملف
- ال reference لل parent directory
زي ما تشوفون هذي ال attributes تحتوي على MACB timestamps وهو جزء مهم من هذا ال artifact. طيب وش معنى ال MACB?
- Modification Time (M): يحتوي على اخر وقت تم فيه تعديل للملف
- Access Time (A): يحتوي على اخر وقت صار فتح للملف\المجلد
- Creation Time (C): يحتوي على اخر وقت صار فيه تغيير لل MFT record
- Birth Time (B): يحتوي على الوقت الي صار فيه creation للملف
الفرق بين الأوقات الي
بين STANDARD_INFORMATION (0x10)$ و $FILE_NAME (0x30) هو أن ال $STANDARD_INFORMATION يتغير بشكل كبير و هو الي تشوفه في ال file explorer في ال windows.
ال adversaries يستخدمون طريقة يقولون لها time stomping, بمعنى أنه يغير الأوقات الي في $STANDARD_INFORMATION عشان لما تشوفها في ال file explorer ما تشوف في ملف وقته مختلف عن الملفات الثانية
نقدر نسوي detection على هذي ال technique بأنه نشوف اذا الوقت الي في ال 0x30 أكبر من الوقت الي في 0x10 معناتة أن ال adversary أستخدم time stomping
$DATA
هذا ال attribute تقول لك وين محتوى الملف. أغلب الأحيان بتكون موجودة في مكان ثاني في جهاز التخزين بس بعض الأحيان اذا كان حجم الملف صغير بيكون موجود داخل ال record هذي يقولون لها resident data
سويت ملف txt عشان نجرب عليه ال resident data أسمه test_file.txt, لو نروح نشوف ال DATA attribute$ بنشوف محتوى الملف
الملف في ال NTFS ممكن يحتوي على أكثر من DATA attribute, بمعنى الملف يمكن يكون فيه أكثر من محتوى. مشكل أفتراضي اذا حاولت أفتح ملف Windows بيفتح ال DATA attribute$ الي ماله أسم, بس تقدر تضيف أكثر من stream هذا يقولون له Alternative Data Stream أو ADS.
بعض البرامج تضيف streams أضافية على الملف, مثلا متصفحات الأنترنت تضيف stream أسمه Zone.Identifier. هذا ال stream جدا مفيد اذا لقيته في ملف خبيث بيعطيك من وين تحمل الملف. سويت مثال حملت ملف بستخدام Internet Explorer وهذا ال record حقة من ال MFT$
بعض الأحيان هذا ال stream ممكن ما يكون فيه resident data, بس تقدر تطلع المعلومات الي في هذا ال stream بستخدام هذا ال command في PowerShell
Get-Content .\hoarder.exe -Stream Zone.Identifier
ال MFT$ فيه معلومات كثيرة مفيدة لل DFIR Specialist, هذي بس أهم المعلومات الي لازم تعرفها عشان تسوي analysis لل MFT$ من وجهة نظري.
في الأخير هذي parsers تقدر تستخدمها عشان تسوي parse لل MFT
- mft_dump (مستخدم في هذا المثال) - github.com
- MFTCmd - ericzimmerman.github.io

جاري تحميل الاقتراحات...