> For the complete documentation index, see [llms.txt](https://0xmedhat.gitbook.io/whoami/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://0xmedhat.gitbook.io/whoami/file-system-notes.md).

# 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

***
