# File System Notes

## MBR and GPT Analysis

### مراحل الـ Boot Process قبل الـ MBR/GPT

#### 1. **Power-On the System**

* لما تدوس على زرار الباور:
  * بيتبعت **إشارة كهربائية للمازربورد**.
  * أول مكوّن بيوصل له الإشارة هو **الـ CPU**.
* الـ CPU لسه مفيهوش أي أوامر، فبيستنى ياخد **التعليمات الأساسية** من حاجة موجودة على المازربورد:
  * **BIOS** (قديم، 16-bit، محدود بـ 2TB وMBR).
  * **UEFI** (جديد، 32/64-bit، بيدعم 9ZB و GPT + Secure Boot).

***

#### 2. **BIOS vs UEFI**

* **BIOS**:
  * بيشتغل بالـ 16-bit mode.
  * يدعم أقصى حاجة 2TB disk.
  * بيشتغل بالـ **MBR partitioning scheme**.
* **UEFI**:
  * أحدث، وبيشتغل 32-bit / 64-bit.
  * بيدعم أحجام ضخمة جدًا (لحد 9ZB).
  * عنده ميزات زي **Secure Boot** و **Redundancy** (يعني لو boot code متضرب ممكن يستعيد نسخة).
  * بيستخدم **GPT partitioning scheme**.

في ويندوز:

* تقدر تشوف جهازك بيشتغل بــ BIOS ولا UEFI بـ:
  * `Windows + R` → اكتب `msinfo32`.
  * هتلاقي:
    * **Legacy** = BIOS.
    * **UEFI** = UEFI.

***

#### 3. **Power-On-Self-Test (POST)**

* بعد ما الـ BIOS/UEFI يشتغل:
  * بيعمل **فحص مكونات الهاردوير** (RAM, Keyboard, Display, Storage …).
  * لو في مشكلة هتسمع **beep codes** أو هيتعرض error على الشاشة.
* الغرض: يتأكد إن الهاردوير الأساسي شغال قبل ما يبدأ يحمل OS.

***

#### 4. **Locate the Bootable Device**

* بعد ما يتأكد من إن المكونات شغالة:
  * يبدأ يدور على **Bootable Device** (HDD, SSD, USB).
  * أول سيكتور على الجهاز ده بيكون فيه:
    * **MBR** (لو BIOS).
    * **GPT** (لو UEFI).
* هنا بيبدأ **الجزء اللي يخص الـ MBR/GPT** في تكملة البروسيس.

### لو الجهاز بيستخدم **MBR Partitioning Scheme**

#### 1. **مكان الـ MBR**

* موجود في **أول سيكتور (sector 0)** على الهارد.
* كل سيكتور حجمه **512 بايت**.
* بالتالي:
  * الـ MBR كله = 512 بايت = 32 rows × 16 بايت (في hex editor).
* بيسهل نعرف نهايته لأن آخر بايتين لازم يكونوا: **55 AA** (MBR Signature).

***

#### 2. **مكونات الـ MBR**

الـ 512 بايت متقسمة لـ 3 أجزاء أساسية:

1. **Bootloader Code (Bytes 0–445 → 446 bytes)**
   * ده الكود اللي بيشتغل أول ما الجهاز يوصل للـ MBR.
   * مهمته:
     * يدور في الـ Partition Table.
     * يحدد أي partition هو الـ Bootable.
     * يشغّل الـ **Second Bootloader** اللي موجود جوه البارتيشن البوتابل.
2. **Partition Table (Bytes 446–509 → 64 bytes)**

   * مقسوم لـ 4 Entries (كل واحدة 16 بايت).
   * كل entry = Partition.
   * بيحتوي على:
     * **Boot Indicator (1 byte)** → 80 = Bootable, 00 = Not Bootable.
     * **Partition Type (1 byte)** → مثلًا 07 = NTFS, 0B = FAT32.
     * **Starting LBA (4 bytes)** → بيحدد البدايات (logical address).
     * **Number of Sectors (4 bytes)** → الحجم.
   * من خلاله الفورنزك بيقدر يحدد:
     * لو في بارتيشنات متخبّية.
     * حجم كل Partition.
     * مكان بدايته في القرص.

   **مثال** ):

   * Starting LBA = `00 08 00 00` → reverse (little endian) = `00 00 08 00` = 2048.
   * 2048 × 512 = 1,048,576 (offset في القرص).
   * Number of Sectors = `00 B0 23 03` → reverse = `03 23 B0 00` = 52,670,464 sectors.
   * × 512 = 26,967,277,568 bytes ≈ 25 GB.
3. **MBR Signature (Bytes 510–511 → 2 bytes)**
   * لازم تكون: **55 AA**.
   * لو اتغيرت → الجهاز مش هيقدر يقلع.
   * ساعات Malware أو Bad Sectors بتبوّظها.

***

#### 3. **التسلسل أثناء البوت**

1. الجهاز يوصل للـ **Bootloader Code**.
2. الـ Bootloader يدور في **Partition Table** ويشوف مين فيهم البوتابل (Boot Indicator = 80).
3. يشغّل **Second Bootloader** من البارتيشن البوتابل.
4. الـ Second Bootloader يشغّل الـ **Kernel** بتاع الـ OS.
5. يبدأ تحميل Drivers + Services + Filesystems → لحد ما يفتحلك واجهة المستخدم.

***

#### &#x20;القيمة الجنائية (Forensic Value) للـ MBR

* يحدد **عدد البارتيشنات وأنواعهم** (NTFS/FAT32/Ext4).
* يكشف وجود **بارتيشنات مخفية أو ممسوحة**.
* يكشف **Bootkits/Rootkits** لو الـ Bootloader code متعدل.
* يوضح **Integrity** (لو Signature 55AA اتحرفت → مشكلة).

#### ----------

#### Threats Targeting MBR

### ليه الـ **MBR** بيتهاجم؟

* الـ MBR هو أول حاجة بتتقرأ في الهارد (512 بايت بس).
* جواه الـ **Bootloader** + **Partition Table**.
* أي لعب في الجزء ده = الجهاز كله مش هيقوم.
* عشان كده الـ Hackers بيستهدفوه، لأنه نقطة تحكم قوية جدًا.

***

### &#x20;أنواع التهديدات اللي بتستهدف الـ MBR

#### 1. **Bootkits**

* دي Malware بتزرع نفسها جوا الـ Bootloader Code اللي في الـ MBR.
* بتشتغل **قبل الويندوز نفسه يقوم** → يعني بتتخطى أي Antivirus أو Security موجود في الـ OS.
* حتى لو عملت Format أو Reinstall للويندوز → هتفضل موجودة لأنها في الـ MBR مش في البارتشنات.
* أخطر حاجة فيها: بتدي المهاجم **سيطرة كاملة** من أول ما الجهاز يفتح.

***

#### 2. **Ransomware على مستوى الـ MBR**

* بدل ما يشفر كل الملفات، المهاجم بيشفر أو يبدّل الـ MBR نفسه.
* النتيجة: الجهاز مش بيكمل Boot → وتظهرلك رسالة فدية (Ransom Note).
* أمثلة:
  * **Petya (2016):** شفر الـ MBR + Master File Table وخلى الضحية مش عارف يدخل على الداتا.
  * **Bad Rabbit (2017):** مسح الـ MBR الأصلي وكتب مكانه Bootloader مزيف يعرض رسالة فدية.

***

#### 3. **Wiper Malware**

* الهدف مش الفلوس، الهدف **تدمير الجهاز**.
* بيكتب Random Data أو Garbage مكان الـ MBR.
* النتيجة: السيستم مش بيقلع نهائيًا (Unbootable).
* مثال:
  * **Shamoon:** هاجم شركات بترول ومسح الـ MBR بحيث الأجهزة كلها وقفت عن العمل.

#### ------

MBR Tampering Case

### السيناريو

* السيرفر بتاع الداتابيز بتاع الشركة **وقف عن البوت خالص**.
* التحقيق الأولي: موظف فتح **إيميل ملغوم** → الجهاز عمل ريستارت → بعدها بقى Unbootable.
* الفحص أظهر إن **المالوير لعب في الـ MBR** (Master Boot Record).

***

### &#x20;إيه اللي اتغير في الـ MBR؟

1. **العنوان المنطقي للبارتشن الأول (LBA Address)**:
   * كان المفروض يكون: `00 08 00 00`
   * اتلعب فيه (بقى قيمة تانية غلط).
2. **الـ Signature بتاعة الـ MBR** (الـ 2 بايت اللي في آخر السيكتور):
   * المفروض تكون دايمًا: `55 AA`
   * دي ثابتة في أي MBR سليم.
   * المالوير غيرها → وبالتالي الجهاز مش شايف البارتشنات.

***

### &#x20;خطوات الإصلاح باستخدام الأدوات

#### &#x20;باستخدام **HxD (Hex Editor)**

1. افتح الملف:\
   `C:\Analysis\MBR_Corrupted_Disk.001`
2. دور على البايتات الغلط:
   * غيّر **العنوان بتاع البارتشن الأول** للقيمة الصح: `00 08 00 00`.
   * غيّر **الـ Signature** في آخر السيكتور للقيمة الصح: `55 AA`.
3. بعد التعديل → دوس **Save**.
   * لو ظهرت رسالة "There is not enough space on the disk" → دوس **Yes** عشان يحفظ من غير Backup.

***

#### &#x20;باستخدام **FTK Imager**

1. افتح البرنامج → `File` → `Add Evidence Item`.
2. اختار: **Image File** → Next.
3. حدد الصورة: `MBR_Corrupted_Disk.001`.
4. في الأول (قبل الإصلاح) كان بيظهرلك: **Unrecognized file system**.
5. بعد التعديل بالـ HxD → لما تعيد فتحها هتلاقي الملفات والداتا كلها ظهرت عادي في الـ Tree View.

#### --------

ملخص \
الـ **MBR (Master Boot Record)** بيتقسم لأجزاء أساسية:

1. **Bootloader code**
2. **Partition table** (مساحتها 64 بايت – فيها 4 entries، كل واحدة 16 بايت)
3. **Signature** (اتنين بايت: 55 AA)

لما تيجي تبص على **Partition Table Entry** (الـ 16 بايت)، فيه ترتيب ثابت:

* أول بايت = Boot flag (بيوضح الـ partition دي bootable ولا لأ).
* بعد كده 3 بايت = Starting CHS.
* بعد كده 1 بايت = Partition Type.
* بعد كده 3 بايت = Ending CHS.
* بعد كده 4 بايت = Starting LBA (العنوان اللي بتبدأ منه).
* بعد كده 4 بايت = Partition size بالـ sectors.

فإنت لما شفت في الهكس:

```
00 08 00 00
```

ده جه في مكان **Starting LBA** (اللي هو بيبدأ من البايت رقم 8 لحد البايت رقم 11 جوا الـ entry).\
الـ LBA هنا بيتكتب **little endian** (يعني أقل بايت الأول).

* لو بصيت كده: `00 08 00 00` → معناها **0x00000800**.
* ولما تحوّلها decimal تبقى **2048** sector.
* وده الطبيعي جدًا إن أول partition في الهارد يبدأ من sector 2048 (عشان بيبقوا سايبين أول sectors للهارد فيها معلومات زي MBR أو alignment).

يعني أنا عرفت إنها `00 08 00 00` مش من فراغ، لأ من مكانها في الـ entry + القاعدة بتاعة little endian.

#### -------

### What if GPT

#### البروسيس مع GPT + UEFI

1. **Power On + UEFI Start**
   * الجهاز بيتفتح، الكهرباء توصل للبروسيسور.
   * UEFI firmware يشتغل (بديل الـ BIOS).
2. **POST (Power-On Self Test)**
   * UEFI يتأكد إن الهاردوير سليم (RAM, CPU, Keyboard … إلخ).
3. **Locate Boot Device**
   * UEFI يدور على هارد/SSD بوتابل.
   * هنا مش بيبص على MBR، لكن بيبص على الـ **GPT**.
4. **Protective MBR** (Sector 0)
   * أول سيكتور في الهارد لسه فيه "MBR" شكلي.
   * بس الفرق إن ده مش Bootloader حقيقي، ده اسمه **Protective MBR**.
   * وظيفته الوحيدة إنه يقول للأنظمة القديمة (BIOS):

     > "الهارد ده GPT، ماتلعبش فيه."
   * البايت المهم هنا = **EE** (في جدول الـ Partition Entry) → ده علامة إن الهارد GPT.
5. **Primary GPT Header** (Sector 1)
   * UEFI يقرأ الـ GPT Header.
   * ده عبارة عن Blueprint للهارد كله:
     * Signature = `"EFI PART"`
     * Version = 1.0 غالباً
     * First Usable LBA / Last Usable LBA (المساحة اللي ممكن تتحجز للـ partitions)
     * Disk GUID (ID مميز للهارد)
     * مكان جدول الـ Partition Entries
6. **Partition Entry Array**
   * هنا في أوصاف كل الـ partitions (مش زي MBR اللي بيدعم 4 بس → GPT بيدعم 128).
   * كل Partition Entry = 128 بايت.
7. **EFI System Partition (ESP)**
   * UEFI يلاقي الـ ESP Partition.
   * ده Partition خاص (FAT32 صغير غالباً \~100–500MB).
   * جواه Bootloaders (زي `bootmgfw.efi` للويندوز، أو `grubx64.efi` للينكس).
   * UEFI يشغل الـ Bootloader من هنا.
8. **OS Boot**
   * Bootloader يحمل الكيرنل بتاع الـ OS → الـ OS يشتغل.

***

#### &#x20;الفرق الأساسي بين GPT و MBR في البوت

|            | **MBR + BIOS**   | **GPT + UEFI**              |
| ---------- | ---------------- | --------------------------- |
| أول سيكتور | Bootloader حقيقي | Protective MBR شكلي         |
| جدول تقسيم | 4 Partition Max  | 128 Partition Max           |
| حجم مدعوم  | 2TB Max          | 9ZB (Zettabyte!)            |
| Bootloader | في الـ MBR       | في الـ EFI System Partition |

#### ----

مع GPT + UEFI، الـ Boot ما بيعتمدش على أول 512 بايت زي الـ MBR، لكن بيعتمد على

* **Protective MBR** → علامة للهارد إنه GPT.
* **GPT Header + Partition Entries** → يحدد مكان ESP.
* **UEFI** يقرأ Bootloader من الـ ESP.

#### ---

### Partition Entry Array (PEA) في GPT

* مكانه: بيبدأ من **Sector 2** (بعد الـ Protective MBR و الـ GPT Header).
* كل **Partition Entry = 128 بايت**.
* GPT ممكن يدعم **128 Partition Entries** → يعني إجمالي 128 × 128 = 16 KB محجوز للـ Partition Table.
* لو عدد البارتشنات الفعلي قليل (زي 6)، الباقي كله بيكون `00`.

***

### مكونات Partition Entry (128 Byte)

مثال:  أول Partition Entry متقسم كده:

| Bytes Position | Length | Example Hex                                       | Field                 | معنى الفيلد                                      |
| -------------- | ------ | ------------------------------------------------- | --------------------- | ------------------------------------------------ |
| 0–15           | 16     | `28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B` | Partition Type GUID   | نوع البارتشن (EFI, Basic Data, Linux Swap … إلخ) |
| 16–31          | 16     | `9E 43 0D 72 EC 12 54 44 8F B2 EE 17 8D F3 CD 3B` | Unique Partition GUID | ID مميز للبارتشن ده بس                           |
| 32–39          | 8      | `00 08 00 00 00 00 00 00`                         | Starting LBA          | أول سكتور للبارتشن                               |
| 40–47          | 8      | `FF 27 03 00 00 00 00 00`                         | Ending LBA            | آخر سكتور للبارتشن                               |
| 48–55          | 8      | `00 00 00 00 00 00 00 80`                         | Attributes            | Flags (bootable, hidden …)                       |
| 56–127         | 72     | `45 00 46 00 49 00 20 00 73 00 79 00 73 ...`      | Partition Name        | اسم البارتشن (UTF-16)                            |

***

### &#x20;مثال عملي: Partition Type GUID

* الأصل: `28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B`
* التحويل من **Mixed Endian**:
  * `28 73 2A C1` → `C12A7328`
  * `1F F8` → `F81F`
  * `D2 11` → `11D2`
  * الباقي زي ما هو: `BA4B-00A0C93EC93B`
* الناتج النهائي:\
  **C12A7328-F81F-11D2-BA4B-00A0C93EC93B**
* ده GUID خاص بالـ **EFI System Partition - ESP**

***

### &#x20;ليه مهم؟

* الـ **ESP Partition** ده هو قلب البوت في GPT + UEFI.
* جواه ملفات Bootloaders بامتداد `.efi` (زي `bootmgfw.efi` للويندوز، أو `grubx64.efi` للينكس).
* من غيره الجهاز مش هيلاقي طريقة يقلع منها.

***

### النسخ الاحتياطي (Redundancy)

ميزة جبارة في GPT مقارنة بـ MBR:

1. **Backup GPT Header** → آخر سيكتور في الهارد.
2. **Backup Partition Entry Array** → قبل آخر سيكتور.\
   لو الجدول الأساسي اتمسح/اتضرب → UEFI يقدر يعتمد على الباك أب.

***

### التهديدات اللي بتستهدف GPT

#### 1. Bootkits

* إزاي الهجوم بيتم؟
  * الملفات المسؤولة عن الإقلاع (Bootloaders) اللي بامتداد `.efi` بتتخزن جوه ESP.
  * المهاجم يستبدلها بملف Bootkit .
  * النتيجة: الكود الخبيث يشتغل قبل ما النظام يفتح، وبالتالي يقدر يعدي على كل الحماية بتاعة الـ OS.
* **الحماية:**
  * ميزة **UEFI Secure Boot** بتمنع ده لأنها بتشيك التوقيع الرقمي لكل ملف `.efi`. لو متغير أو متلعب فيه → الجهاز يرفض يقلع.

***

#### 2.  Ransomware

* الهدف: يعطل عملية البوت.
* ليه أصعب من MBR؟
  * GPT عنده **Backup Header + Backup Partition Entry Array** → فممكن يتصلح.
* لكن المهاجمين المتقدمين يعملوا إيه؟
  * يشفروا (Encrypt) الـ **ESP Partition** نفسه.
  * النتيجة: ملفات الـ Bootloader تختفي أو تبقى مش متاحة → الجهاز مش هيعرف يفتح.

***

#### 3. Wiper Malware

* الهدف: تدمير كامل (Permanent Damage).
* إزاي بيشتغل؟
  * يمسح أو يشفر **الـ GPT Header الأساسي + الباك أب** مع بعض.
  * ساعات كمان بيهاجم **ESP Partition** نفسه.
* النتيجة:
  * النظام مالوش أي طريقة يعرف البارتشنات فين.
  * البوت بيتعطل بالكامل → الاسترجاع شبه مستحيل.

#### -----

### خطوات تحليل ملف bootmgr.efi المشكوك فيه

1. **فتح الملف في HxD**
   * افتح أداة HxD من الديسكتوب.
   * من **File → Open**، روح للمسار:

     ```
     C:\Analysis\bootmgr.efi
     ```
   * دلوقتي هتشوف محتوى الملف بالهيكس (Hex) + التفسير النصي (Text) على اليمين.

***

2. **فهم طبيعة الملف**
   * ملف `bootmgr.efi` هو جزء أساسي من **Windows Boot Manager**.
   * أي تعديل فيه (سواء في الكود أو في المساحات الفاضية) بيكون مؤشر قوي على محاولة إدخال Bootkit.
   * Bootkits ساعات بتحط **سلاسل مشفرة (Encoded Strings)** أو **Shellcode** في الأماكن غير المستخدمة داخل الملف.

***

3. **البحث عن البيانات الغريبة**
   * في HxD، لفّ على طول الملف ولاحظ:
     * أي **تسلسل غير مألوف** (زي Base64, XOR encoded, أو نصوص مش مفهومة).
     * أي **مساحات Unused Space** متعلم عليها كـ `00 00 00 ...` وبعدها فجأة ييجي Data. ← هنا غالبًا المكان اللي اتحقن فيه الكود.
   * تقدر كمان تستخدم:
     * **Ctrl+F → Search for text/string** → جرّب كلمات زي `http`, `cmd`, `exe`, إلخ.
     * أو Search for **Hex patterns** مش طبيعية.

***

4. **تحليل السلسلة المشفرة (Encoded String)**
   * لو لقيت بيانات مش واضحة، خد جزء منها (مثلاً 20-30 بايت).
   * انسخها في ملف نصي أو أداة Online (Hex → ASCII, أو Base64 Decoder).
   * شوف هل بترجع نصوص مفهومة (زي IP، URL، أو أوامر Powershell).

***

5. **مقارنة مع نسخة سليمة**
   * لو عندك نسخة نظيفة من `bootmgr.efi` (ممكن من نفس نسخة Windows)، قارن بين الملفين باستخدام HxD →
     * **Analysis → File Compare → Compare**.
   * ده هيوضحلك بالظبط الأماكن اللي اتغيرت.

***

6. **توثيق الأدلة**
   * خد Screenshot للجزء اللي فيه الكود أو السلسلة المشفرة.
   * احفظ نسخة من البيانات المستخرجة للتحليل اللاحق.

***

\--

\--

\--

\--

\---

### NTFS Overview

* **NTFS (New Technology File System)**:\
  نظام ملفات من مايكروسوفت ظهر من سنة 1993 (Windows NT 3.1).\
  ومن وقتها وهو النظام الافتراضي في نسخ ويندوز الحديثة.
* **فكرة الـ File System**:\
  دي الطريقة اللي الكمبيوتر بيخزن وينظم بيها الملفات على الهارد.

***

#### &#x20;ليه NTFS يعتبر Journaling File System؟

* بيكتب أي تغييرات (transactions) الأول في **journal/log file** قبل ما يطبقها على الملفات الحقيقية.
* ده بيديله ميزة: لو حصل **crash** أو **قطع كهربا**، النظام يقدر يرجع للوضع السليم بسهولة.
* من منظور **forensics**: اللوج ده ممكن يديك trail (أثر) للتغييرات اللي حصلت.

***

#### أهم مميزات NTFS (Key Features)

1. **Advanced Metadata**
   * بيخزن معلومات كتيرة عن الملفات (توقيت الإنشاء، التعديل، الوصول).
   * مفيد جدًا للمحقق الجنائي (forensic investigator) عشان يعرف النشاط اللي حصل على الملفات.
2. **Journaling**
   * أي عملية بتتسجل في journal قبل التطبيق.
   * مفيد في:
     * استرجاع البيانات بعد crash.
     * تتبع أنشطة المهاجم.
3. **Security Features**
   * فيه دعم للـ **EFS (Encrypting File System)**.
   * فيه **permissions (ACLs)** لتحديد مين يقرأ أو يعدل الملف.
   * ودي بتفيد في فهم أنماط الوصول وقت التحقيق.
4. **Large Volume Support**
   * يقدر يتعامل مع ملفات وأحجام ضخمة جدًا (على عكس FAT32 مثلًا اللي محدود).
5. **Resilience**
   * أقوى ضد الفساد (corruption) من الأنظمة الأقدم زي FAT32.
   * عنده ميكانيزمات recovery أفضل.
6. **Compatibility**
   * افتراضي في ويندوز.
   * ممكن يتقري على Linux و macOS باستخدام برامج إضافية.
7. **Compression**
   * فيه خاصية ضغط الملفات built-in عشان يوفر مساحة.

### مكونات الـ NTFS Disk Structure وأهميتها في الـ Forensics

#### 1. **Partition Boot Sector (PBS)**

* **هو إيه؟**\
  أول قطاع في بارتشن NTFS. بيحتوي على معلومات أساسية عن البارتشن ونظام الملفات، وكمان الـ BIOS Parameter Block (BPB).
* **المحتويات المهمة:**
  * jump instruction للـ bootstrap code.
  * نوع الـ File System (NTFS).
  * مكان الـ MFT + الـ MFT Mirror.
  * End-of-sector marker (0x55AA).
* **القيمة الجنائية:**
  * تقدر تكشف tampering (زي rootkits).
  * تتحقق من سلامة boot code والـ BPB.
  * يوضحلك إعدادات القرص (sectors per cluster, layout).

***

#### 2. **Master File Table (MFT)**

* **هو إيه؟**\
  العمود الفقري لـ NTFS. قاعدة بيانات بتخزن metadata عن كل ملف أو فولدر.
* **الخصائص:**
  * متقسم records (عادة 1KB).
  * لكل ملف/فولدر سجل.
  * بيخزن timestamps، permissions، مكان البيانات.
* **القيمة الجنائية:**
  * تقدر تلاقي ملفات محذوفة لسه محتفظة بسجلاتها.
  * أساسي في الـ timeline analysis.
  * يكشف تعديلات مش مصرح بيها على metadata.

***

#### 3. **$MFTMirr (MFT Mirror)**

* **هو إيه؟**\
  نسخة احتياطية من أول شوية records في الـ MFT.
* **الغرض:**
  * redundancy واستعادة البيانات لو الـ MFT الرئيسي اتلف.
* **القيمة الجنائية:**
  * تستخدم للتحقق من integrity بتاع الـ MFT.
  * لو الـ MFT الرئيسي متلعب فيه، mirror بيساعدك تسترجع metadata.

***

#### 4. **System Files (ملفات النظام الأساسية)**

أمثلة:

* **$MFT**: الماستر فايل تابل.
* **$MFTMirr**: النسخة الاحتياطية.
* **$LogFile**: لوج معاملات.
* **$Bitmap**: تتبع الكلاسترز الفاضية والمستخدمة.
* **$Boot**: معلومات البوت سيكتور.
* **$BadClus**: تتبع الكلاسترز التالفة.
* **$UpCase**: يحول الأحرف الكبيرة والصغيرة (case-insensitive).
* **القيمة الجنائية:**
  * **$LogFile**: يكشف تاريخ العمليات.
  * **$Bitmap**: يوضح الكلاسترز اللي اتمسحت أو اتخصصت جديد.
  * **$BadClus**: ممكن يبان فيه إخفاء بيانات في Sectors متعلم إنها تالفة.

***

#### 5. **File Data Area**

* **هو إيه؟**\
  مكان تخزين البيانات الفعلية للملفات. ممكن تكون **Resident** (جوا الـ MFT لو صغيرة) أو **Non-Resident** (في كلاسترز منفصلة).
* **القيمة الجنائية:**
  * المصدر الأساسي لاسترجاع بيانات المستخدم.
  * يتفحص فيه slack space و file fragments اللي ممكن تحتوي بيانات قديمة.

***

#### 6. **Alternate Data Streams (ADS)**

* **هو إيه؟**\
  خاصية NTFS بتسمح بوجود Streams إضافية مرتبطة بنفس الملف (ممكن تخزن بيانات مخفية).
* **مثال:** `notepad.exe:secret.txt`
* **القيمة الجنائية:**
  * وسيلة شائعة للإخفاء (steganography).
  * ممكن تلاقي فيها Malware أو بيانات سرية مش ظاهرة بحجم الملف.

***

#### 7. **التحليل باستخدام FTK Imager**

* بتفتح FTK Imager → File → Add Evidence Item → تختار Physical Drive.
* بتستعرض الـ Partition → NONAME \[NTFS] → \[root].
* تقدر تشوف كل مكونات NTFS (MFT, LogFile, Bitmap, ADS … إلخ).

### Master File Table (MFT) Record Analysis

#### 1. **MFT Record Concept**

* الـ **MFT Record** هو الأساس، لأنه بيخزن **كل ملف أو فولدر** على النظام (حتى الملفات المحذوفة ليها أثر جوه).
* لكل ملف / فولدر فيه **سجل (Entry)** في الـ MFT.
* السجل ده عبارة عن **metadata repository** فيه كل المعلومات عن الكائن ده.

***

#### 2. **محتويات الـ MFT Record**

كل سجل في الـ MFT بيتكون من مجموعة Attributes مهمة جدًا:

1. **File Name**
   * اسم الملف أو الفولدر.
2. **Standard Information**
   * الـ timestamps (MACB: Modified, Accessed, Created, Birth).
   * file attributes (read-only, hidden…).
   * link count (عدد الـ hard links).
3. **Attributes**
   * metadata إضافية زي حجم الملف، خصائصه.
4. **File Data**
   * لو الملف صغير → ممكن يتخزن **Resident** جوه الـ MFT.
   * لو كبير → بيتخزن **Non-Resident** في الـ clusters، والـ MFT بس بيحط pointers.
5. **File Index**
   * لو فولدر، هنا بيتخزن index بيربطه بالملفات أو الفولدرات التانية.
6. **Security Information**
   * Access Control List (ACLs): مين يقدر يقرأ/يكتب/ينفذ.

***

#### 3. **Forensics Value**

ليه الـ MFT مهم جدًا في التحقيقات؟

* **وجود الأدلة**: يثبت إن الملف كان موجود حتى لو اتشال.
* **تحليل الـ Timeline**: timestamps بتوضح تسلسل الأحداث (ممكن نكشف tampering لو attacker عدل وقت واحد ونسي الباقي).
* **الكشف عن التعديلات**: أي تغيير في metadata (زي تغيير Permissions) بيتسجل.
* **Recover Deleted Data**: سجلات الملفات المحذوفة ممكن تبقى لسه موجودة.

***

#### 4. **استخدام MFTECmd.exe**

الأداة دي بتعمل parsing للـ $MFT وتطلعلك النتائج بشكل CSV مرتب.

* **الخطوات**:
  1. افتح terminal.
  2. شوف الـ options:

     ```bash
     MFTECmd.exe --help
     ```
  3. شغل الأمر لتحليل الـ $MFT:

     ```bash
     MFTECmd.exe -f ..\Evidence\$MFT --csv ..\Evidence --csvf ..\Evidence\MFT_record.csv
     ```
* **النتيجة:**
  * الأداة هتتعرف إن الملف هو **MFT**.
  * هتطلع ملف CSV باسم `MFT_record.csv` في فولدر Evidence.
  * تقدر تفتحه في **Timeline Explorer** وتبدأ تستعرض كل الأحداث بالترتيب الزمني.

***

#### 5. **Timeline Explorer**

* أداة GUI قوية بتعرضلك النتائج كـ جدول زمني مرتب.
* تقدر تعمل **فلترة** للملفات، **ترتيب حسب timestamps**، وتشوف الـ activity patterns بوضوح.
* مثالية في التحقيقات اللي عايزة تحدد "إيه اللي حصل وإمتى بالظبط؟".

### أهم الأعمدة في الـ MFT Record وتحليلها جنائيًا

#### 1. **Entry Number**

* رقم فريد لكل سجل في الـ MFT.
* **الأهمية:**
  * بيحدد الملف/الفولدر بالضبط.
  * ممكن يتكرر استخدامه بعد ما الملف يتمسح (مع فرق الـ Sequence Number).

***

#### 2. **Parent Entry Number**

* &#x20;رقم السجل الخاص بالفولدر الأب.
* **الأهمية:**
  * بيساعدنا نعرف مكان الملف في الـ Directory Structure.
  * مهم جدًا لما نعيد بناء التسلسل الهرمي ونشوف هل الملف كان متخزن في مكان غير عادي (مثلاً داخل System32 أو Temp).

***

#### 3. **Sequence Number**

* عدّاد بيتغير كل مرة السجل يُعاد استخدامه.
* **الأهمية:**
  * بيفرق بين ملف قديم اتحذف وملف جديد اتحط مكانه.
  * لو الرقم عالي → السجل ده اتعدل أو اتعاد استخدامه كذا مرة.

***

#### 4. **File Name**

* &#x20;اسم الملف/الفولدر.
* **الأهمية:**
  * أول نقطة تشك فيها لو لقيت اسم غريب، أو EXE في فولدر مش منطقي.
  * مثال: ملف اسمه `svch0st.exe` بدل `svchost.exe` → classic malware trick.

***

#### 5. **Timestamps (MACB)**

* **Creation Time:** وقت إنشاء الملف.
* **Modification Time:** آخر تعديل في محتوى الملف.
* **Access Time:** آخر مرة الملف اتفتح.
* **MFT Modification Time:** آخر تعديل في الميتاداتا (مش المحتوى نفسه).
* **الأهمية:**
  * بناء **Timeline of Events**.
  * مقارنة التواريخ: لو محتوى الملف اتعدل **قبل** وقت إنشاؤه → anomaly (علامة على manipulation).
  * Malware بيغير أوقات الملفات عشان يخبّي أثره.

***

#### 6. **Flags**

* يوضح إذا كان السجل ده لملف / فولدر / غير مستخدم.
* **الأهمية:**
  * ممكن تلاقي أثر ملف متشال لكن السجل بتاعه لسه موجود كـ “unused record”.
  * بيساعد تعرف الملفات المحذوفة اللي لسه ليها أثر.

***

#### 7. **Entry Flags**

* &#x20;خصائص زي Read-only، Hidden، System.
* **الأهمية:**
  * لو ملف مهم أو أداة مشبوهة متعلم عليه كـ **Hidden** أو **System** → ده suspicious جدًا.
  * كتير من المالوير بيخفي نفسه بالـ flag ده.

***

#### 8. **In Use**

* هل السجل لسه مربوط بملف نشط ولا متشال.
* **الأهمية:**
  * حتى بعد الحذف، السجل ممكن يبان كـ not in use → بيأكد إن الملف كان موجود.

***

#### 9. **Logical Size**

* &#x20;حجم البيانات الفعلية.
* **الأهمية:**
  * لو لقيت حجم منطقي = 0 لكن الملف EXE → مش طبيعي.
  * ممكن يشير إلى ملف Placeholder أو Wiper.

***

#### 10. **Physical Size**

* &#x20;المساحة المخصصة على القرص.
* **الأهمية:**
  * الفرق بين الـ Logical والـ Physical = **Slack Space** (ممكن يحتوي بيانات متبقية).
  * مهم جدًا في **Data Carving** أو استرجاع بقايا الملفات.

***

### MACB Timestamps في NTFS

كل ملف/مجلد في نظام NTFS بيرتبط بـ 4 أنواع من الـ Timestamps:

* **M → Modified**
  * آخر مرة اتغير فيها **المحتوى** نفسه (data).
  * مثال: لو فتحت ملف TXT وكتبت فيه جملة جديدة.
* **A → Accessed**
  * آخر مرة الملف اتفتح للقراءة أو التشغيل.
  * مثال: لو فتحت صورة تتفرج عليها من غير ما تعدلها.
* **C → Changed (Metadata)**
  * آخر مرة اتغير فيها **الميتاداتا** مش المحتوى.
  * مثال: تغيير صلاحيات الملف (permissions) أو إعادة تسمية الملف.
* **B → Birth (Creation)**

  * وقت إنشاء الملف لأول مرة.
  * مثال: أول مرة تحفظ ملف جديد على الجهاز.

### ليه MACB مهم في التحقيق الجنائي؟

1. **إعادة بناء الخط الزمني للأحداث**
   * MACB بيساعدك تعرف بالترتيب: إمتى الملف اتخلق → اتعدل → اتقرا → اتغيرت خصائصه.
   * ده أساسي عشان تعرف سلوك المستخدم أو المهاجم.
2. **اكتشاف الأنشطة الغريبة**
   * لو ملف System اتعدل في وقت متأخر بالليل أو في وقت غير مرتبط بنشاط المستخدم الطبيعي → suspicious.
   * لو ملف Access Time مختلف تمامًا عن باقي الملفات → ممكن يكون تم فتحه من attacker.
3. **مطابقة مع سجلات تانية (Logs)**
   * بتحط الـ timestamps جنب Logs بتاعة النظام أو الشبكة → تعرف إذا الملف اتفتح وقت الهجوم.
4. **الكشف عن محاولات التمويه (Timestomping)**
   * الهجوم المعروف باسم **Timestomping** بيعدل تواريخ الملفات عشان يبان إنها قديمة أو طبيعية.
   * لكن بالمقارنة بين الـ MACB values + مراجع تانية (زي Prefetch أو Event Logs) تقدر تكشف التلاعب.

## NTFS Journaling Overview

الـ NTFS بيستخدم **Journaling** كـ transactional system عشان يحافظ على **سلامة النظام** حتى لو حصل crash أو قطع كهربا.\
الفكرة: أي عملية تعديل بتتسجل الأول في journal → بعدين تتطبق على القرص → وبالتالي لو حصل فشل، يقدر النظام **يعيد التشغيل أو يكمل** من آخر نقطة.

***

### &#x20;الأنواع الرئيسية من Journals

#### 1. **$LogFile**

* &#x20;الموقع: جذر الـ Volume (`C:\$LogFile`).
* &#x20;دوره: بيسجل **تغييرات الميتاداتا** (زي إنشاء/حذف الملفات أو تعديل الـ MFT).
* &#x20;الاستخدام: لو السيستم وقع، NTFS بيقدر يعمل replay للـ transactions المخزنة هنا لاستعادة التناسق.
* في التحقيق: بيديك صورة عن العمليات اللي حصلت على مستوى metadata مش المحتوى.

***

#### 2. **$USNJrnl (Update Sequence Number Journal)**

* &#x20;الموقع: موجود في `$Extend\$USNJrnl`.
* &#x20;دوره: بيسجل **التغييرات اللي بتحصل للملفات/المجلدات وخصائصها** (create, delete, modify, rename).
* في التحقيق: ممتاز جدًا في **timeline analysis** لأنك تقدر تعرف إمتى ملفات معينة اتغيرت أو اتمسحت.
* &#x20;ملحوظة: الـ USN بيتعامل كـ **ADS (Alternate Data Stream)**.

**تركيب $USNJrnl**

* **$Max** → يحدد الحجم الأقصى للـ Journal.
* **$J** → ده المهم لينا، بيحتوي على **السجلات الفعلية** للتغييرات.

***

خطوات عملية للتحقيق

1. **استخراج $J من FTK Imager**
   * اعمل Right Click → Export → احفظه في Evidence folder.
2. **تحليل $J باستخدام MFTECmd**

   ```bash
   MFTECmd.exe -f ..\Evidence\$J --csv ..\Evidence --csvf USNJrnl.csv
   ```

   * بيولد CSV فيه كل السجلات.
   * الأداة هتتعرف تلقائيًا إن الملف نوعه USN Journal.
3. **فتح النتيجة في Timeline Explorer**
   * بتظهرلك الأحداث بالترتيب الزمني:
     * File Created
     * File Deleted
     * File Modified
     * Rename Events

***

### &#x20;القيمة الجنائية

* **$LogFile** → بيديك **تغييرات الميتاداتا** → مهم في استعادة consistency.
* **$USNJrnl ($J)** → بيديك **تاريخ كل تغيير حصل على الملفات** → مهم جدًا في التحقيقات:
  * تعرف مين أنشأ/عدل/مسح ملف.
  * تكشف نشاط مالوير (بيحاول يمسح أو يغير ملفات).
  * تربط الأحداث بـ timeline شامل.
  * تستخدمه حتى لو الملف نفسه اتمسح → السجل يفضل موجود.

الـ **Update Reason** (أو الـ Opcodes) في **USN Journal ($J)** بيقولك *إيه نوع التغيير اللي حصل على الملف/المجلد*. ده جزء مهم جدًا في **forensics timeline analysis** لأنه بيديك سياق الحدث مش مجرد تاريخ.

### أهم الـ Opcodes في USN Journal

| **Opcode**                              | **الوصف**                           | **القيمة الجنائية (Forensics Value)**                                |
| --------------------------------------- | ----------------------------------- | -------------------------------------------------------------------- |
| **USN\_REASON\_DATA\_OVERWRITE**        | البيانات اتكتبت فوقها (overwrite).  | بيدل إن المحتوى اتغير → مهم لو حد عدل ملف evidence أو log.           |
| **USN\_REASON\_DATA\_EXTEND**           | البيانات اتزادت (الحجم كبر).        | بيدل على إضافة محتوى جديد → مثل ملفات لوج بتتضخم أو ملف تم تنزيله.   |
| **USN\_REASON\_DATA\_TRUNCATION**       | البيانات اتقصت (الحجم صغر).         | ممكن يشير إن جزء من الملف اتمسح عمدًا (محاولة إخفاء أثر).            |
| **USN\_REASON\_NAMED\_DATA\_OVERWRITE** | تعديل في **Alternate Data Stream**. | مهم جدًا لأنه ممكن يشير لإخفاء بيانات في ADS (تقنية شائعة للمالوير). |
| **USN\_REASON\_NAMED\_DATA\_EXTEND**    | إضافة بيانات لــ **ADS**.           | نفس النقطة السابقة، أداة قوية لكشف ملفات مخفية.                      |
| **USN\_REASON\_FILE\_CREATE**           | إنشاء ملف/مجلد جديد.                | يكشف نشاط جديد (ملفات مشبوهة أو تنفيذ أدوات هاكرز).                  |
| **USN\_REASON\_FILE\_DELETE**           | حذف ملف/مجلد.                       | بيديك تاريخ الحذف حتى لو الملف مش موجود.                             |
| **USN\_REASON\_RENAME\_OLD\_NAME**      | إعادة تسمية (الاسم القديم).         | يساعد في تتبع الملفات اللي بيحاول المهاجم يغير أسماءها لإخفاء الأثر. |
| **USN\_REASON\_CLOSE**                  | غلق الـ Handle بعد التغيير.         | بيظهر نهاية العملية → بيساعد في بناء تسلسل الأحداث.                  |

***

### ما هو $I30؟

* هو **Index Allocation Attribute** مسؤول عن حفظ **Index entries** لكل الملفات والمجلدات الموجودة داخل أي Directory في NTFS.
* بيحتوي على **Metadata** أساسية عن الملفات زي:
  * أسماء الملفات.
  * Timestamps (MACB).
  * حجم الملف.
  * Attributes (Hidden, System, Encrypted...).
  * علاقة الملف بالمجلد الأب.

***

### Slack Space في $I30

* لما ملف يتحذف / يتنقل / يتسمى → **Index entry** بتاعه بيتشال من الـ Active Index.
* لكن: *البيانات القديمة بتفضل موجودة في الـ Slack Space* داخل $I30 لحد ما تتكتب فوقها.
* هنا بتيجي القيمة الجنائية: ممكن تلاقي Metadata لملف "ممسوح" لسه محفوظة.

مثال:\
في FTK Imager → فولدر `C:\metasploit` بيبين بس 4 ملفات حية.\
لكن لو فحصنا **$I30** بتاع نفس الفولدر → ممكن نلاقي آثار ملفات تانية متحذفة/منقولة (موجودة في "From Slack").

***

### القيمة الجنائية (Forensics Value)

1. **استرجاع ملفات محذوفة:** تقدر تكشف وجود ملف حتى بعد حذفه، طالما بياناته لسه في Slack Space.
2. **كشف إعادة التسمية/النقل:** أي Rename أو Move بينعكس في $I30.
3. **كشف الملفات المخفية:** لو الملف متعلم عليه Hidden / System / Encrypted → هتلاقي الـ Flag موجود.
4. **تحليل نشاط المجلدات:** تقدر تبني Timeline لمجلد كامل (إيه الملفات دخلت/اتمسحت/اتغيرت).

***

### أداة التحليل (MFTECmd)

بعد استخراج `$I30` من الفولدر `metasploit` باستخدام FTK:

```bash
MFTECmd.exe -f ..\Evidence\$I30 --csv ..\Evidence\ --csvf i30.csv
```

* بيعمل Parse للـ $I30 وبيطلع CSV فيه:
  * **Filename** → اسم الملف أو المجلد.
  * **From Slack** → (Yes/No) → يوضح إذا الملف محذوف أو لسه نشط.
  * **File Size** → الحجم الأصلي.
  * **Parent Directory** → علاقة الملف.
  * **MACB Timestamps** → لإنشاء Timeline.
  * **Attributes** → (Hidden, Read-Only, System, Encrypted...).

***

### طريقة الاستفادة

* افتح الملف `i30.csv` في **Timeline Explorer**.
* اعمل **Filter على العمود From Slack** → ده هيعرضلك كل الملفات اللي *كانت موجودة واتمسحت أو اتنقلت*.
* تقدر تستخدم الـ MACB timestamps + Update Reasons (من USN Journal) علشان تبني سيناريو كامل:

  * إمتى الملف اتعمل.
  * إمتى اتعدل.
  * إمتى اتشال من المجلد.

***

### File Carving

**File Carving** هو تقنية لاستخراج الملفات من البيانات الخام (raw data) بدون الاعتماد على **filesystem metadata**.\
يعني لما يكون نظام الملفات مش موجود أو تالف، File Carving بيعتمد على **بنية الملف نفسها** بدل ما يعتمد على الجداول اللي النظام بيحفظها (زي MFT في NTFS أو FAT entries في FAT32).

#### ليه ده مهم؟

* الملفات المحذوفة عادة **بيكون metadata بتاعها متلغى** لكن البيانات نفسها موجودة على القرص لحد ما يتم الكتابة فوقها.
* الملفات المخفية أو المدمجة steganography أو غيرها ما تظهرش في directory\
  &#x20;listings
* التحقيق الجنائي محتاج **استرجاع الأدلة الرقمية** حتى لو نظام الملفات مش شغال.

***

### المفاهيم الأساسية&#x20;

1. **File Signatures / Magic Numbers**
   * كل نوع ملف له بداية ثابتة (header) وأحيانًا نهاية (footer).
   * أمثلة:
     * PNG: `89 50 4E 47 0D 0A 1A 0A`
     * JPG: يبدأ بـ `FF D8` وينتهي بـ `FF D9`
     * PDF: يبدأ بـ `%PDF-` وينتهي بـ `%%EOF`
2. **Slack Space**
   * المساحة اللي بتفضل بعد ما الـ file ما يملاش cluster بالكامل.
   * ممكن تحتوي على بقايا ملفات قديمة أو محذوفة.
3. **Fragmentation**
   * الملفات ممكن تكون مقسمة على أجزاء غير متجاورة على القرص.
   * File Carving التقليدي أحيانًا يستخرج جزء من الملف بس لو متجزء.
   * Advanced carving tools ممكن تحاول **reassemble fragments**.
4. **Manual vs Automated Carving**
   * **Manual**: تستخدم hex editor أو hexdump لتحديد بداية ونهاية الملفات بنفسك.
   * **Automated**: أدوات زي `foremost`, `scalpel`, `binwalk` تحدد وتحفظ الملفات تلقائيًا.

***

### استخراج الملفات

1. **التعرف على البيانات الخام**
   * نفحص صورة القرص أو الmemory dump.
   * نستخدم `hexdump` أو `xxd` لفهم البنية.
2. **تحديد الـ file signatures**
   * نحدد نوع الملفات المستهدفة (PDF, PNG, JPG...).
   * نبحث عن الـ headers والfooters.
3. **استخراج الملفات**
   * نستخدم أدوات carving لاستخراج الملفات حسب signature.
   * لو fragments، نحتاج reassembly.
4. **تحليل الملفات المستخرجة**
   * نتأكد إنها كاملة وصحيحة.
   * نحلل المحتوى كجزء من التحقيق الجنائي.

***

#### أ. File Systems Recap

**نظام الملفات** هو الطريقة اللي بيستخدمها نظام التشغيل لتنظيم البيانات على التخزين. من غيره، البيانات هتكون مجرد مجموعة bits عشوائية.

* **Windows**
  * **FAT (File Allocation Table)**: نظام قديم وبسيط، بيستخدم في USB و memory cards.
  * **NTFS (New Technology File System)**: نظام حديث، يحتوي على **MFT (Master File Table)** اللي بيسجل كل الملفات مع attributes زي الحجم، الصلاحيات، والتواريخ.
    * ملفات كبيرة ممكن تكون **non-resident attributes** يعني البيانات موجودة في أماكن مختلفة على القرص (data runs).
    * ملفات النظام (زي `$MFT`, `$DATA`) مهمة للتحليل الجنائي.
* **Linux**
  * ext2, ext3, ext4
  * **Inodes**: كل ملف عنده inode بيحتوي على metadata (حجم الملف، ملكية، صلاحيات، تواريخ) بدون الاسم.
  * الملفات مخزنة في **blocks**، والinode بيربطهم مع بعض، والملفات الكبيرة ممكن تكون متفرقة.

&#x20;**الفرق المهم:**\
NTFS يستخدم MFT و data runs، بينما Linux يعتمد على inodes و blocks. وده بيأثر على طرق File Carving لكل نظام.

***

#### ب. File Headers & Footers

* الملفات ليها **بداية مميزة (header)** وأحيانًا **نهاية (footer)**.
* دي **magic bytes** بتساعد forensic analyst يعرف الملف ويستخرجه حتى لو metadata مفقود.

| نوع الملف | Header (Magic Bytes)    | Footer / End Marker     | ملاحظات     |
| --------- | ----------------------- | ----------------------- | ----------- |
| JPEG      | FF D8 FF E0             | FF D9                   | صور         |
| PNG       | 89 50 4E 47 0D 0A 1A 0A | 49 45 4E 44 AE 42 60 82 | Chunks      |
| PDF       | %PDF                    | %%EOF                   | مستندات     |
| DOCX      | 50 4B 03 04             | 50 4B 05 06             | ZIP archive |
| GIF       | 47 49 46 38 39 61       | 00 3B                   | GIF89a/87a  |
| ZIP       | 50 4B 03 04             | 50 4B 05 06             | أرشيف       |

* أي أداة File Carving هتبحث عن headers/footers دي عشان تعرف تبدأ وتنتهي الملفات.

***

#### . Metadata

**Metadata** = معلومات عن البيانات نفسها.\
أنواعها:

1. **Embedded**: جوه الملف نفسه (EXIF في JPEG).
2. **Extended**: attributes نظام التشغيل (permissions, last accessed).
3. **External**: سجلات أو logs خارج الملف نفسه.

* Metadata مهم جدًا للتحليل الجنائي، بيوفر context، وبيساعد أحيانًا على استرجاع الملفات حتى لو الطرق التقليدية فشلت.

***

### Tools

### Hex Editors

* أدوات بتديك إمكانية عرض وتعديل البيانات الخام للملفات أو أقراص التخزين بالـ **hexadecimal**، اللي أسهل على البشر من الـ binary.
* **استخدامات forensic:**
  * معرفة بداية الملفات (headers) ونهايتها (footers) يدوياً.
  * تحليل الملفات المدمجة أو المشتتة.

***

### Binwalk

* أداة لتحليل الملفات الثنائية (binary files)، وبتستخرج الملفات المدمجة أو الكود التنفيذي.
* **استخدامات forensic:**
  * التعامل مع **memory dumps** أو **embedded systems**.
  * اكتشاف الملفات المخبأة داخل ملفات أخرى.
* &#x20;ممتاز للـ embedded data.
* &#x20;ضعيف مع البيانات الم fragment أو المشفرة.

***

### &#x20;Scalpel

* &#x20;أداة مفتوحة المصدر خفيفة للـ file carving، تعتمد على **configuration file** يحدد file signatures.
* **استخدامات forensic:**
  * استرجاع ملفات محددة (صور، مستندات).
  * سريع ودقيق للمهام المستهدفة.
* &#x20;ضعيف مع الملفات الم fragment أو الهياكل المعقدة.

***

### Foremost

* &#x20;مشابه لـ Scalpel لكنه أداة أكثر مرونة، خصوصًا للسيناريوهات الجنائية الدقيقة.
* **استخدامات forensic:**
  * يتيح ضبط قواعد دقيقة للـ file signatures.
* &#x20;مفتوح المصدر، قابل للتخصيص بدقة.
* صعوبة مع الملفات الم fragmentة أو الهياكل المعقدة.

### &#x20;PhotoRec

* أداة قوية لاسترجاع أكثر من 480 نوع ملف.
* **استخدامات forensic:**
  * استرجاع الملفات المتنوعة في خطوة واحدة.
* قوي جدًا، يدعم أنواع كثيرة.
* &#x20;ممكن يجيب ملفات غير مرغوب فيها (noise).

***

### EnCase

* أداة احترافية متكاملة للتحليل الجنائي الرقمي، تشمل file carving ضمن مجموعة شاملة لتحليل البيانات والتقارير.
* **forensic:**
  * شامل، قوي، يستخدمه المحترفون في التحقيقات المعقدة.
  * يدعم استرجاع الملفات، تحليل الـ disk images، وتوليد تقارير رسمية.
* &#x20;تجاري، مكلف، ثقيل على الأجهزة.

***

#### الملخص&#x20;

* **الـ Hex Editors** = تحليل يدوي، دقة قصوى، لكن بطئ.
* **Binwalk** = تحليل ملفات binary و embedded systems.
* **Scalpel / Foremost** = carving سريع ودقيق للملفات المستهدفة، مع limitations على fragmentation.
* **PhotoRec** = carving شامل لأنواع ملفات متعددة، لكن noisy.
* **EnCase** = حل متكامل للـ forensic analysis احترافي، لكنه تجاري.

***

### Manual Carving Overview

Manual file carving يعني استخراج الملفات من **raw data** من غير ما نعتمد على **file system metadata**. العملية دي بتحتاج التعامل مع **file structures** على مستوى الـ **bytes**.\
التقنيات الأساسية:

* **Header-Footer Carving:** تدور على بداية الملف (header) ونهايته (footer) وبعدين تاخد البيانات اللي بينهم.
* **File Structure Carving:** تحلل البنية الداخلية للملفات (زي objects في PDF أو PNG chunks) عشان تعيد تركيبها.

***

### &#x20;Scenario 1: USB Drive Wipe Recovery

**السياق:** موظف مستاء مسح USB drive. المهمة بتاعتك: recover الملفات المحذوفة من الصورة `Challenge1_Manual_Carve_usb.img`.

#### الخطوات:

1. **فتح Disk Image في Hex Editor** (Okteta)
   * تشوف الـ **raw bytes** والـ **offsets**.
   * تفحص أول sector (MBR). لو partition table فاضية يبقى الـ USB غالبًا اتعمله format.
2. **تحديد Data Fragments**
   * دور على الباقي من البيانات في الـ hex.
   * دور على **known headers** زي JPEG: `FFD8FF`, PNG: `89504E47`, PDF: `%PDF`.
3. **تحديد Start و End Offsets**
   * مثال: PNG يبدأ من `0001069056` وينتهي عند `0001526433`.
   * احسب حجم الملف: `Ending Offset – Starting Offset`.
4. **استخراج الملف باستخدام dd**

   ```bash
   dd if=Challenge1_Manual_Carve_usb.img of=Image.png bs=1 skip=134483968 count=463
   ```

   * `bs=1`: نقرأ بايت واحد مرة وحدة.
   * `skip`: بداية الـ offset.
   * `count`: عدد البايتات اللي هنستخرجها.
5. **تحقق من المحتوى و Metadata**
   * استخدم `ExifTool` عشان تشوف خصائص الملف (size, format, timestamps) وتتأكد من سلامته.

***

### &#x20;Scenario 2: Recovering Files from Slack Space

**السياق:** Slack space هو المساحة الفاضية في cluster بعد كتابة البيانات. ممكن تلاقي فيها بيانات من ملفات قبل كده.

#### الخطوات:

1. **تحليل Disk Image باستخدام Binwalk**

   * تعرف **file fragments** و offsets.
   * مثال:

   ```
   268782594  0x10054C02  MPEG transport stream data
   ```
2. **تشوف الـ fragments في Hex Editor**
   * روح للـ offset بالـ decimal.
   * دور على الـ signature bytes عشان تعرف بداية البيانات ونوع الملف.
3. **استخراج Fragmented Files**

   * استخدم Binwalk extraction:

   ```bash
   binwalk -e Challenge2_slack_space.img
   ```

   * هينشئ folder جديد ويحط فيه كل الملفات اللي لقاها.
4. **إعادة تركيب الملفات الم fragmented**
   * لو الملفات متقسمة، هتحتاج تربط القطع باستخدام معرفة file encoding.

***

### &#x20;Best Practices

* دايمًا اشتغل على **copy** من image أو sandbox environment.
* سجل offsets، file types، والطرق اللي استخدمتها.
* اتأكد من recovered data بال metadata عشان تتأكد من authenticity.
* لو البيانات fragmented أو معقدة، اجمع بين manual و automated carving

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xmedhat.gitbook.io/whoami/file-system-notes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
