Lab 4.3: Shadow Copies en Windows
Objetivos de Aprendizaje
Al finalizar este laboratorio, usted será capaz de:
- Comprender el funcionamiento de las Shadow Copies
- Crear y gestionar puntos de restauración
- Acceder a versiones anteriores de archivos
- Comprender las implicaciones de seguridad (recuperación de datos sensibles)
Duración Estimada
40 minutos
Prerrequisitos
- VM Windows 10/11
- Derechos de administrador
- Espacio en disco disponible (~2 GB mínimo)
Contexto Profesional
Las Shadow Copies se utilizan para:
- Recuperación de archivos eliminados/modificados
- Respaldo sin interrupción del servicio
- Forense: Recuperación de datos históricos
- Seguridad: Los atacantes pueden encontrar información sensible allí
Parte 1: Comprender las Shadow Copies
Paso 1.1: ¿Qué es Shadow Copy?
Shadow Copy (o VSS - Volume Shadow Copy Service) es un servicio de Windows que crea "instantáneas" del sistema de archivos en un momento dado.
Características:
- Respaldo a nivel de bloque
- Funciona incluso con archivos abiertos
- Utilizado para Restaurar Sistema y respaldos de Windows
- Almacenado en un espacio reservado en el volumen
Paso 1.2: Verificar el servicio VSS
# Estado del servicio
Get-Service VSS
# Iniciar si es necesario
Start-Service VSS
Paso 1.3: Listar las Shadow Copies existentes
# Método 1: vssadmin
vssadmin list shadows
# Método 2: WMI
Get-WmiObject Win32_ShadowCopy | Select-Object ID, InstallDate, VolumeName
Pregunta 1: ¿Cuántas Shadow Copies existen en su sistema?
Parte 2: Crear Shadow Copies
Paso 2.1: Activar la protección del sistema
# Verificar si la protección está activada para C:
Get-ComputerRestorePoint -ErrorAction SilentlyContinue
# Activar vía GUI
# Panel de control > Sistema > Protección del sistema
Vía PowerShell (requiere elevación):
# Activar la protección en C:
Enable-ComputerRestore -Drive "C:\"
# Verificar
vssadmin list shadowstorage
Paso 2.2: Crear un punto de restauración
# Crear un punto de restauración
Checkpoint-Computer -Description "Lab Shadow Copy Test" -RestorePointType MODIFY_SETTINGS
# Verificar
Get-ComputerRestorePoint | Select-Object -Last 3
Paso 2.3: Crear una Shadow Copy directamente
# Crear una Shadow Copy vía WMI
$class = [WMICLASS]"root\cimv2:Win32_ShadowCopy"
$shadow = $class.Create("C:\", "ClientAccessible")
if ($shadow.ReturnValue -eq 0) {
Write-Host "Shadow Copy creada con éxito" -ForegroundColor Green
Write-Host "ID: $($shadow.ShadowID)"
} else {
Write-Host "Error: $($shadow.ReturnValue)" -ForegroundColor Red
}
# Listar para verificar
vssadmin list shadows
Parte 3: Acceder a las Shadow Copies
Paso 3.1: Método GUI - Versiones anteriores
- Clic derecho sobre un archivo o carpeta
- Propiedades
- Pestaña "Versiones anteriores"
- Seleccionar una versión y "Restaurar" u "Abrir"
Paso 3.2: Método línea de comandos
# Listar las Shadow Copies con sus rutas
$shadows = Get-WmiObject Win32_ShadowCopy
foreach ($shadow in $shadows) {
Write-Host "Fecha: $($shadow.InstallDate)" -ForegroundColor Yellow
Write-Host "Ruta: $($shadow.DeviceObject)"
Write-Host ""
}
Paso 3.3: Montar una Shadow Copy
# Obtener la ruta de la shadow copy
$shadow = Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1
$shadowPath = $shadow.DeviceObject
# Crear un enlace simbólico
$linkPath = "C:\ShadowMount"
cmd /c mklink /d $linkPath "$shadowPath\"
# Explorar la shadow copy
Get-ChildItem $linkPath
# Acceder a los archivos
Get-ChildItem "$linkPath\Users" -ErrorAction SilentlyContinue
Paso 3.4: Explorar vía ruta UNC
Las Shadow Copies son accesibles mediante una ruta especial:
# Formato: \\localhost\C$\@GMT-YYYY.MM.DD-HH.MM.SS\
# Pero es más fácil vía DeviceObject
# Listar una carpeta específica en la shadow
$shadowPath = (Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1).DeviceObject
cmd /c dir "$shadowPath\Windows\System32\config\" 2>$null
Parte 4: Implicaciones de Seguridad
Paso 4.1: Riesgos de seguridad
Datos sensibles en las Shadow Copies:
- Archivos de configuración con contraseñas
- Bases de datos
- Archivos eliminados "definitivamente"
- Historial de modificaciones
Paso 4.2: Demostración - Recuperar un archivo eliminado
# 1. Crear un archivo "sensible"
$testFile = "C:\Temp\fichier_secret.txt"
New-Item -Path "C:\Temp" -ItemType Directory -Force | Out-Null
"Mot de passe: SuperSecret123!" | Out-File $testFile
Write-Host "Archivo creado: $testFile" -ForegroundColor Green
# 2. Crear una Shadow Copy
$class = [WMICLASS]"root\cimv2:Win32_ShadowCopy"
$shadow = $class.Create("C:\", "ClientAccessible")
Start-Sleep -Seconds 2
Write-Host "Shadow Copy creada" -ForegroundColor Green
# 3. Eliminar el archivo
Remove-Item $testFile -Force
Write-Host "Archivo eliminado" -ForegroundColor Yellow
# 4. Verificar que realmente está eliminado
if (-not (Test-Path $testFile)) {
Write-Host "Archivo confirmado eliminado" -ForegroundColor Yellow
}
# 5. Recuperar desde la Shadow Copy
$latestShadow = Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1
$shadowPath = $latestShadow.DeviceObject
# Acceder al archivo en la shadow
$recoveredPath = "$shadowPath\Temp\fichier_secret.txt"
$content = cmd /c type "$recoveredPath" 2>$null
if ($content) {
Write-Host "`nARCHIVO RECUPERADO desde Shadow Copy:" -ForegroundColor Red
Write-Host $content -ForegroundColor Red
} else {
Write-Host "Nota: El archivo debe haber sido creado ANTES de la shadow copy"
}
Pregunta 2: ¿Por qué es esto un riesgo de seguridad?
Paso 4.3: Implicaciones para los atacantes
Los atacantes pueden utilizar las Shadow Copies para:
- Recuperar archivos eliminados (credenciales, configuraciones)
- Eludir protecciones (archivos bloqueados)
- Extraer datos históricos (versiones antiguas de archivos)
Paso 4.4: Acceso a archivos de sistema sensibles
# Los archivos SAM/SYSTEM normalmente están bloqueados
# ¡Pero accesibles vía Shadow Copy!
$shadow = (Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1).DeviceObject
# Verificar si se pueden listar los archivos de configuración
$configPath = "$shadow\Windows\System32\config"
Write-Host "Archivos en la Shadow Copy:" -ForegroundColor Yellow
cmd /c dir "$configPath" 2>$null
# Nota: Copiar estos archivos permitiría extraer los hashes
# Esto es utilizado por herramientas como secretsdump
Parte 5: Protección y Limpieza
Paso 5.1: Eliminar las Shadow Copies
Atención: ¡Usar con precaución en producción!
# Eliminar TODAS las shadow copies (¡PELIGROSO!)
# vssadmin delete shadows /all /quiet
# Eliminar la más antigua
# vssadmin delete shadows /for=C: /oldest /quiet
# Eliminar por ID
$shadowId = (Get-WmiObject Win32_ShadowCopy | Select-Object -First 1).ID
# Get-WmiObject Win32_ShadowCopy | Where-Object {$_.ID -eq $shadowId} | Remove-WmiObject
Paso 5.2: Limitar el espacio de las Shadow Copies
# Ver el espacio utilizado
vssadmin list shadowstorage
# Limitar el espacio (ej: 10% del volumen)
# vssadmin resize shadowstorage /for=C: /maxsize=10%
Paso 5.3: Script de aseguramiento
# Script de verificación de las Shadow Copies
Write-Host "=== AUDITORÍA SHADOW COPIES ===" -ForegroundColor Cyan
# Contar las shadow copies
$shadows = Get-WmiObject Win32_ShadowCopy
Write-Host "`nNúmero de Shadow Copies: $($shadows.Count)"
# Espacio utilizado
Write-Host "`nEspacio Shadow Storage:" -ForegroundColor Yellow
vssadmin list shadowstorage 2>$null
# Listar las fechas
if ($shadows) {
Write-Host "`nShadow Copies disponibles:" -ForegroundColor Yellow
foreach ($s in $shadows) {
$date = [Management.ManagementDateTimeConverter]::ToDateTime($s.InstallDate)
Write-Host " - $date"
}
}
# Recomendaciones
Write-Host "`n=== RECOMENDACIONES ===" -ForegroundColor Cyan
Write-Host "1. Limitar el espacio de almacenamiento VSS"
Write-Host "2. Eliminar regularmente las copias antiguas"
Write-Host "3. No almacenar datos sensibles en texto claro"
Write-Host "4. Monitorear el acceso a las Shadow Copies"
Paso 5.4: Limpieza del laboratorio
# Eliminar el enlace simbólico
if (Test-Path "C:\ShadowMount") {
cmd /c rmdir "C:\ShadowMount"
}
# Eliminar los archivos de prueba
Remove-Item "C:\Temp\fichier_secret.txt" -Force -ErrorAction SilentlyContinue
Write-Host "Limpieza terminada" -ForegroundColor Green
Entregables
-
Respuestas a las 2 preguntas
-
Capturas de pantalla:
- Lista de Shadow Copies
- Acceso a versiones anteriores
- Demostración de recuperación
-
Informe (1 página):
- Funcionamiento de las Shadow Copies
- Riesgos de seguridad identificados
- Recomendaciones de protección
Criterios de Evaluación
| Criterio | Puntos |
|---|---|
| Creación Shadow Copy | 25% |
| Acceso a los datos | 30% |
| Comprensión de seguridad | 25% |
| Recomendaciones | 20% |
Comandos de Referencia
# Servicio
Get-Service VSS
Start-Service VSS
# Listar
vssadmin list shadows
Get-WmiObject Win32_ShadowCopy
# Crear
Checkpoint-Computer -Description "Test"
([WMICLASS]"root\cimv2:Win32_ShadowCopy").Create("C:\", "ClientAccessible")
# Eliminar
vssadmin delete shadows /for=C: /oldest
# Espacio
vssadmin list shadowstorage
vssadmin resize shadowstorage /for=C: /maxsize=10%
Recursos
Laboratorio desarrollado en el marco del curso Sistemas Operativos - MÓDULO 4