المختبر 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: الطريقة الرسومية - الإصدارات السابقة
- انقر بزر الماوس الأيمن على ملف أو مجلد
- خصائص
- علامة التبويب "الإصدارات السابقة"
- اختر إصدارًا و"استعادة" أو "فتح"
الخطوة 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: تداعيات للمهاجمين
يمكن للمهاجمين استخدام النسخ الظلية لـ:
- استعادة الملفات المحذوفة (بيانات الاعتماد، التكوينات)
- تجاوز الحمايات (الملفات المقفلة)
- استخراج البيانات التاريخية (الإصدارات القديمة من الملفات)
الخطوة 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
التسليمات
-
الإجابات على السؤالين
-
لقطات شاشة:
- قائمة النسخ الظلية
- الوصول إلى الإصدارات السابقة
- عرض الاستعادة
-
تقرير (صفحة واحدة):
- كيفية عمل النسخ الظلية
- المخاطر الأمنية المحددة
- توصيات الحماية
معايير التقييم
| المعيار | النقاط |
|---|---|
| إنشاء النسخة الظلية | 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