Saltar al contenido principal

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​

  1. Clic derecho sobre un archivo o carpeta
  2. Propiedades
  3. Pestaña "Versiones anteriores"
  4. 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:

  1. Recuperar archivos eliminados (credenciales, configuraciones)
  2. Eludir protecciones (archivos bloqueados)
  3. 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​

  1. Respuestas a las 2 preguntas

  2. Capturas de pantalla:

    • Lista de Shadow Copies
    • Acceso a versiones anteriores
    • Demostración de recuperación
  3. Informe (1 página):

    • Funcionamiento de las Shadow Copies
    • Riesgos de seguridad identificados
    • Recomendaciones de protección

Criterios de Evaluación​

CriterioPuntos
Creación Shadow Copy25%
Acceso a los datos30%
Comprensión de seguridad25%
Recomendaciones20%

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