انتقل إلى المحتوى الرئيسي

المختبر 4.3: النسخ الظلية في ويندوز

الأهداف التعليمية​

في نهاية هذا المختبر، ستكون قادرًا على:

  • فهم كيفية عمل النسخ الظلية
  • إنشاء وإدارة نقاط الاستعادة
  • الوصول إلى الإصدارات السابقة من الملفات
  • فهم تداعيات الأمان (استعادة البيانات الحساسة)

المدة المقدرة​

40 دقيقة

المتطلبات المسبقة​

  • جهاز افتراضي ويندوز 10/11
  • حقوق المسؤول
  • مساحة قرص متاحة (~2 جيجابايت كحد أدنى)

السياق المهني​

تُستخدم النسخ الظلية لـ:

  • استعادة الملفات المحذوفة/المعدلة
  • النسخ الاحتياطي دون انقطاع الخدمة
  • التحليل الجنائي: استعادة البيانات التاريخية
  • الأمان: يمكن للمهاجمين العثور على معلومات حساسة

الجزء 1: فهم النسخ الظلية​

الخطوة 1.1: ما هي النسخة الظلية؟​

النسخة الظلية (أو VSS - خدمة النسخ الظلي للحجم) هي خدمة في ويندوز تقوم بإنشاء "لقطات" لنظام الملفات في لحظة معينة.

الخصائص:

  • النسخ الاحتياطي على مستوى الكتلة
  • تعمل حتى مع الملفات المفتوحة
  • تُستخدم لاستعادة النظام والنسخ الاحتياطية في ويندوز
  • تُخزن في مساحة محجوزة على الحجم

الخطوة 1.2: التحقق من خدمة VSS​

# حالة الخدمة
Get-Service VSS

# بدء إذا لزم الأمر
Start-Service VSS

الخطوة 1.3: سرد النسخ الظلية الموجودة​

# الطريقة 1: vssadmin
vssadmin list shadows

# الطريقة 2: WMI
Get-WmiObject Win32_ShadowCopy | Select-Object ID, InstallDate, VolumeName

السؤال 1: كم عدد النسخ الظلية الموجودة على نظامك؟


الجزء 2: إنشاء النسخ الظلية​

الخطوة 2.1: تفعيل حماية النظام​

# التحقق مما إذا كانت الحماية مفعلة لـ C:
Get-ComputerRestorePoint -ErrorAction SilentlyContinue

# التفعيل عبر الواجهة الرسومية
# لوحة التحكم > النظام > حماية النظام

عبر PowerShell (يتطلب رفع الصلاحيات):

# تفعيل الحماية على C:
Enable-ComputerRestore -Drive "C:\"

# التحقق
vssadmin list shadowstorage

الخطوة 2.2: إنشاء نقطة استعادة​

# إنشاء نقطة استعادة
Checkpoint-Computer -Description "Lab Shadow Copy Test" -RestorePointType MODIFY_SETTINGS

# التحقق
Get-ComputerRestorePoint | Select-Object -Last 3

الخطوة 2.3: إنشاء نسخة ظلية مباشرة​

# إنشاء نسخة ظلية عبر WMI
$class = [WMICLASS]"root\cimv2:Win32_ShadowCopy"
$shadow = $class.Create("C:\", "ClientAccessible")

if ($shadow.ReturnValue -eq 0) {
Write-Host "تم إنشاء النسخة الظلية بنجاح" -ForegroundColor Green
Write-Host "ID: $($shadow.ShadowID)"
} else {
Write-Host "خطأ: $($shadow.ReturnValue)" -ForegroundColor Red
}

# السرد للتحقق
vssadmin list shadows

الجزء 3: الوصول إلى النسخ الظلية​

الخطوة 3.1: الطريقة الرسومية - الإصدارات السابقة​

  1. انقر بزر الماوس الأيمن على ملف أو مجلد
  2. خصائص
  3. علامة التبويب "الإصدارات السابقة"
  4. اختر إصدارًا و"استعادة" أو "فتح"

الخطوة 3.2: طريقة سطر الأوامر​

# سرد النسخ الظلية مع مساراتها
$shadows = Get-WmiObject Win32_ShadowCopy
foreach ($shadow in $shadows) {
Write-Host "التاريخ: $($shadow.InstallDate)" -ForegroundColor Yellow
Write-Host "المسار: $($shadow.DeviceObject)"
Write-Host ""
}

الخطوة 3.3: تركيب نسخة ظلية​

# الحصول على مسار النسخة الظلية
$shadow = Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1
$shadowPath = $shadow.DeviceObject

# إنشاء رابط رمزي
$linkPath = "C:\ShadowMount"
cmd /c mklink /d $linkPath "$shadowPath\"

# استكشاف النسخة الظلية
Get-ChildItem $linkPath

# الوصول إلى الملفات
Get-ChildItem "$linkPath\Users" -ErrorAction SilentlyContinue

الخطوة 3.4: الاستكشاف عبر مسار UNC​

النسخ الظلية متاحة عبر مسار خاص:

# الصيغة: \\localhost\C$\@GMT-YYYY.MM.DD-HH.MM.SS\
# ولكن أسهل عبر DeviceObject

# سرد مجلد محدد في النسخة الظلية
$shadowPath = (Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1).DeviceObject
cmd /c dir "$shadowPath\Windows\System32\config\" 2>$null

الجزء 4: تداعيات الأمان​

الخطوة 4.1: مخاطر الأمان​

البيانات الحساسة في النسخ الظلية:

  • ملفات التكوين مع كلمات المرور
  • قواعد البيانات
  • الملفات المحذوفة "نهائيًا"
  • تاريخ التعديلات

الخطوة 4.2: عرض - استعادة ملف محذوف​

# 1. إنشاء ملف "حساس"
$testFile = "C:\Temp\fichier_secret.txt"
New-Item -Path "C:\Temp" -ItemType Directory -Force | Out-Null
"كلمة المرور: SuperSecret123!" | Out-File $testFile
Write-Host "تم إنشاء الملف: $testFile" -ForegroundColor Green

# 2. إنشاء نسخة ظلية
$class = [WMICLASS]"root\cimv2:Win32_ShadowCopy"
$shadow = $class.Create("C:\", "ClientAccessible")
Start-Sleep -Seconds 2
Write-Host "تم إنشاء النسخة الظلية" -ForegroundColor Green

# 3. حذف الملف
Remove-Item $testFile -Force
Write-Host "تم حذف الملف" -ForegroundColor Yellow

# 4. التحقق من أنه محذوف حقًا
if (-not (Test-Path $testFile)) {
Write-Host "تم تأكيد حذف الملف" -ForegroundColor Yellow
}

# 5. الاستعادة من النسخة الظلية
$latestShadow = Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1
$shadowPath = $latestShadow.DeviceObject

# الوصول إلى الملف في النسخة الظلية
$recoveredPath = "$shadowPath\Temp\fichier_secret.txt"
$content = cmd /c type "$recoveredPath" 2>$null

if ($content) {
Write-Host "`nتم استعادة الملف من النسخة الظلية:" -ForegroundColor Red
Write-Host $content -ForegroundColor Red
} else {
Write-Host "ملاحظة: يجب أن يكون الملف قد تم إنشاؤه قبل النسخة الظلية"
}

السؤال 2: لماذا يعتبر هذا خطرًا أمنيًا؟

الخطوة 4.3: تداعيات للمهاجمين​

يمكن للمهاجمين استخدام النسخ الظلية لـ:

  1. استعادة الملفات المحذوفة (بيانات الاعتماد، التكوينات)
  2. تجاوز الحمايات (الملفات المقفلة)
  3. استخراج البيانات التاريخية (الإصدارات القديمة من الملفات)

الخطوة 4.4: الوصول إلى الملفات النظامية الحساسة​

# ملفات SAM/SYSTEM عادة ما تكون مقفلة
# ولكن يمكن الوصول إليها عبر النسخة الظلية!

$shadow = (Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1).DeviceObject

# التحقق مما إذا كان يمكن سرد ملفات التكوين
$configPath = "$shadow\Windows\System32\config"
Write-Host "الملفات في النسخة الظلية:" -ForegroundColor Yellow
cmd /c dir "$configPath" 2>$null

# ملاحظة: نسخ هذه الملفات سيمكن من استخراج الهاشات
# يُستخدم هذا من قبل أدوات مثل secretsdump

الجزء 5: الحماية والتنظيف​

الخطوة 5.1: حذف النسخ الظلية​

تنبيه: للاستخدام بحذر في الإنتاج!

# حذف جميع النسخ الظلية (خطر!)
# vssadmin delete shadows /all /quiet

# حذف الأقدم
# vssadmin delete shadows /for=C: /oldest /quiet

# الحذف بواسطة ID
$shadowId = (Get-WmiObject Win32_ShadowCopy | Select-Object -First 1).ID
# Get-WmiObject Win32_ShadowCopy | Where-Object {$_.ID -eq $shadowId} | Remove-WmiObject

الخطوة 5.2: تحديد مساحة النسخ الظلية​

# رؤية المساحة المستخدمة
vssadmin list shadowstorage

# تحديد المساحة (مثال: 10% من الحجم)
# vssadmin resize shadowstorage /for=C: /maxsize=10%

الخطوة 5.3: سكريبت التأمين​

# سكريبت التحقق من النسخ الظلية
Write-Host "=== تدقيق النسخ الظلية ===" -ForegroundColor Cyan

# عد النسخ الظلية
$shadows = Get-WmiObject Win32_ShadowCopy
Write-Host "`nعدد النسخ الظلية: $($shadows.Count)"

# المساحة المستخدمة
Write-Host "`nمساحة التخزين الظلي:" -ForegroundColor Yellow
vssadmin list shadowstorage 2>$null

# سرد التواريخ
if ($shadows) {
Write-Host "`nالنسخ الظلية المتاحة:" -ForegroundColor Yellow
foreach ($s in $shadows) {
$date = [Management.ManagementDateTimeConverter]::ToDateTime($s.InstallDate)
Write-Host " - $date"
}
}

# التوصيات
Write-Host "`n=== التوصيات ===" -ForegroundColor Cyan
Write-Host "1. تحديد مساحة التخزين VSS"
Write-Host "2. حذف النسخ القديمة بانتظام"
Write-Host "3. عدم تخزين البيانات الحساسة بشكل واضح"
Write-Host "4. مراقبة الوصول إلى النسخ الظلية"

الخطوة 5.4: تنظيف المختبر​

# حذف الرابط الرمزي
if (Test-Path "C:\ShadowMount") {
cmd /c rmdir "C:\ShadowMount"
}

# حذف ملفات الاختبار
Remove-Item "C:\Temp\fichier_secret.txt" -Force -ErrorAction SilentlyContinue

Write-Host "تم الانتهاء من التنظيف" -ForegroundColor Green

التسليمات​

  1. الإجابات على السؤالين

  2. لقطات شاشة:

    • قائمة النسخ الظلية
    • الوصول إلى الإصدارات السابقة
    • عرض الاستعادة
  3. تقرير (صفحة واحدة):

    • كيفية عمل النسخ الظلية
    • المخاطر الأمنية المحددة
    • توصيات الحماية

معايير التقييم​

المعيارالنقاط
إنشاء النسخة الظلية25%
الوصول إلى البيانات30%
فهم الأمان25%
التوصيات20%

أوامر مرجعية​

# الخدمة
Get-Service VSS
Start-Service VSS

# السرد
vssadmin list shadows
Get-WmiObject Win32_ShadowCopy

# الإنشاء
Checkpoint-Computer -Description "Test"
([WMICLASS]"root\cimv2:Win32_ShadowCopy").Create("C:\", "ClientAccessible")

# الحذف
vssadmin delete shadows /for=C: /oldest

# المساحة
vssadmin list shadowstorage
vssadmin resize shadowstorage /for=C: /maxsize=10%

الموارد​


تم تطوير المختبر في إطار دورة نظم التشغيل - الوحدة 4