Pular para o conteúdo principal

Lab 4.3: Shadow Copies do Windows

Objetivos de Aprendizagem​

Ao final deste laboratório, você será capaz de:

  • Compreender o funcionamento das Shadow Copies
  • Criar e gerenciar pontos de restauração
  • Acessar versões anteriores de arquivos
  • Entender as implicações de segurança (recuperação de dados sensíveis)

Duração Estimada​

40 minutos

Pré-requisitos​

  • VM Windows 10/11
  • Direitos de administrador
  • Espaço em disco disponível (~2 GB mínimo)

Contexto Profissional​

As Shadow Copies são usadas para:

  • Recuperação de arquivos excluídos/modificados
  • Backup sem interrupção de serviço
  • Forense: Recuperação de dados históricos
  • Segurança: Atacantes podem encontrar informações sensíveis

Parte 1: Compreendendo as Shadow Copies​

Etapa 1.1: O que é Shadow Copy?​

Shadow Copy (ou VSS - Volume Shadow Copy Service) é um serviço do Windows que cria "instantâneos" do sistema de arquivos em um determinado momento.

Características:

  • Backup em nível de bloco
  • Funciona mesmo com arquivos abertos
  • Usado para Restauração do Sistema e backups do Windows
  • Armazenado em um espaço reservado no volume

Etapa 1.2: Verificar o serviço VSS​

# Status do serviço
Get-Service VSS

# Iniciar se necessário
Start-Service VSS

Etapa 1.3: Listar as Shadow Copies existentes​

# Método 1: vssadmin
vssadmin list shadows

# Método 2: WMI
Get-WmiObject Win32_ShadowCopy | Select-Object ID, InstallDate, VolumeName

Pergunta 1: Quantas Shadow Copies existem no seu sistema?


Parte 2: Criando Shadow Copies​

Etapa 2.1: Ativar a proteção do sistema​

# Verificar se a proteção está ativada para C:
Get-ComputerRestorePoint -ErrorAction SilentlyContinue

# Ativar via GUI
# Painel de Controle > Sistema > Proteção do Sistema

Via PowerShell (necessita elevação):

# Ativar a proteção em C:
Enable-ComputerRestore -Drive "C:\"

# Verificar
vssadmin list shadowstorage

Etapa 2.2: Criar um ponto de restauração​

# Criar um ponto de restauração
Checkpoint-Computer -Description "Lab Shadow Copy Test" -RestorePointType MODIFY_SETTINGS

# Verificar
Get-ComputerRestorePoint | Select-Object -Last 3

Etapa 2.3: Criar uma Shadow Copy diretamente​

# Criar uma Shadow Copy via WMI
$class = [WMICLASS]"root\cimv2:Win32_ShadowCopy"
$shadow = $class.Create("C:\", "ClientAccessible")

if ($shadow.ReturnValue -eq 0) {
Write-Host "Shadow Copy criada com sucesso" -ForegroundColor Green
Write-Host "ID: $($shadow.ShadowID)"
} else {
Write-Host "Erro: $($shadow.ReturnValue)" -ForegroundColor Red
}

# Listar para verificar
vssadmin list shadows

Parte 3: Acessando as Shadow Copies​

Etapa 3.1: Método GUI - Versões anteriores​

  1. Clique com o botão direito em um arquivo ou pasta
  2. Propriedades
  3. Aba "Versões anteriores"
  4. Selecione uma versão e "Restaurar" ou "Abrir"

Etapa 3.2: Método linha de comando​

# Listar as Shadow Copies com seus caminhos
$shadows = Get-WmiObject Win32_ShadowCopy
foreach ($shadow in $shadows) {
Write-Host "Data: $($shadow.InstallDate)" -ForegroundColor Yellow
Write-Host "Path: $($shadow.DeviceObject)"
Write-Host ""
}

Etapa 3.3: Montar uma Shadow Copy​

# Obter o caminho da shadow copy
$shadow = Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1
$shadowPath = $shadow.DeviceObject

# Criar um link simbólico
$linkPath = "C:\ShadowMount"
cmd /c mklink /d $linkPath "$shadowPath\"

# Explorar a shadow copy
Get-ChildItem $linkPath

# Acessar os arquivos
Get-ChildItem "$linkPath\Users" -ErrorAction SilentlyContinue

Etapa 3.4: Explorar via caminho UNC​

As Shadow Copies são acessíveis por um caminho especial:

# Formato: \\localhost\C$\@GMT-YYYY.MM.DD-HH.MM.SS\
# Mas é mais fácil via DeviceObject

# Listar uma pasta específica na shadow
$shadowPath = (Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1).DeviceObject
cmd /c dir "$shadowPath\Windows\System32\config\" 2>$null

Parte 4: Implicações de Segurança​

Etapa 4.1: Riscos de segurança​

Dados sensíveis nas Shadow Copies:

  • Arquivos de configuração com senhas
  • Bancos de dados
  • Arquivos excluídos "definitivamente"
  • Histórico de modificações

Etapa 4.2: Demonstração - Recuperar um arquivo excluído​

# 1. Criar um arquivo "sensível"
$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 "Arquivo criado: $testFile" -ForegroundColor Green

# 2. Criar uma Shadow Copy
$class = [WMICLASS]"root\cimv2:Win32_ShadowCopy"
$shadow = $class.Create("C:\", "ClientAccessible")
Start-Sleep -Seconds 2
Write-Host "Shadow Copy criada" -ForegroundColor Green

# 3. Excluir o arquivo
Remove-Item $testFile -Force
Write-Host "Arquivo excluído" -ForegroundColor Yellow

# 4. Verificar se realmente foi excluído
if (-not (Test-Path $testFile)) {
Write-Host "Arquivo confirmado como excluído" -ForegroundColor Yellow
}

# 5. Recuperar da Shadow Copy
$latestShadow = Get-WmiObject Win32_ShadowCopy | Select-Object -Last 1
$shadowPath = $latestShadow.DeviceObject

# Acessar o arquivo na shadow
$recoveredPath = "$shadowPath\Temp\fichier_secret.txt"
$content = cmd /c type "$recoveredPath" 2>$null

if ($content) {
Write-Host "`nARQUIVO RECUPERADO da Shadow Copy:" -ForegroundColor Red
Write-Host $content -ForegroundColor Red
} else {
Write-Host "Nota: O arquivo deve ter sido criado ANTES da shadow copy"
}

Pergunta 2: Por que isso é um risco de segurança?

Etapa 4.3: Implicações para atacantes​

Os atacantes podem usar as Shadow Copies para:

  1. Recuperar arquivos excluídos (credenciais, configs)
  2. Contornar proteções (arquivos bloqueados)
  3. Extrair dados históricos (versões antigas de arquivos)

Etapa 4.4: Acesso a arquivos de sistema sensíveis​

# Os arquivos SAM/SYSTEM normalmente estão bloqueados
# Mas acessíveis via Shadow Copy!

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

# Verificar se é possível listar os arquivos de config
$configPath = "$shadow\Windows\System32\config"
Write-Host "Arquivos na Shadow Copy:" -ForegroundColor Yellow
cmd /c dir "$configPath" 2>$null

# Nota: Copiar esses arquivos permite extrair os hashes
# Isso é usado por ferramentas como secretsdump

Parte 5: Proteção e Limpeza​

Etapa 5.1: Excluir as Shadow Copies​

Atenção: Use com cautela em produção!

# Excluir TODAS as shadow copies (PERIGOSO!)
# vssadmin delete shadows /all /quiet

# Excluir a mais antiga
# vssadmin delete shadows /for=C: /oldest /quiet

# Excluir por ID
$shadowId = (Get-WmiObject Win32_ShadowCopy | Select-Object -First 1).ID
# Get-WmiObject Win32_ShadowCopy | Where-Object {$_.ID -eq $shadowId} | Remove-WmiObject

Etapa 5.2: Limitar o espaço das Shadow Copies​

# Ver o espaço utilizado
vssadmin list shadowstorage

# Limitar o espaço (ex: 10% do volume)
# vssadmin resize shadowstorage /for=C: /maxsize=10%

Etapa 5.3: Script de segurança​

# Script de verificação das Shadow Copies
Write-Host "=== AUDITORIA SHADOW COPIES ===" -ForegroundColor Cyan

# Contar as shadow copies
$shadows = Get-WmiObject Win32_ShadowCopy
Write-Host "`nNúmero de Shadow Copies: $($shadows.Count)"

# Espaço utilizado
Write-Host "`nEspaço Shadow Storage:" -ForegroundColor Yellow
vssadmin list shadowstorage 2>$null

# Listar as datas
if ($shadows) {
Write-Host "`nShadow Copies disponíveis:" -ForegroundColor Yellow
foreach ($s in $shadows) {
$date = [Management.ManagementDateTimeConverter]::ToDateTime($s.InstallDate)
Write-Host " - $date"
}
}

# Recomendações
Write-Host "`n=== RECOMENDAÇÕES ===" -ForegroundColor Cyan
Write-Host "1. Limitar o espaço de armazenamento do VSS"
Write-Host "2. Excluir regularmente as cópias antigas"
Write-Host "3. Não armazenar dados sensíveis em texto claro"
Write-Host "4. Monitorar o acesso às Shadow Copies"

Etapa 5.4: Limpeza do lab​

# Excluir o link simbólico
if (Test-Path "C:\ShadowMount") {
cmd /c rmdir "C:\ShadowMount"
}

# Excluir os arquivos de teste
Remove-Item "C:\Temp\fichier_secret.txt" -Force -ErrorAction SilentlyContinue

Write-Host "Limpeza concluída" -ForegroundColor Green

Entregáveis​

  1. Respostas às 2 perguntas

  2. Capturas de tela:

    • Lista das Shadow Copies
    • Acesso às versões anteriores
    • Demonstração de recuperação
  3. Relatório (1 página):

    • Funcionamento das Shadow Copies
    • Riscos de segurança identificados
    • Recomendações de proteção

Critérios de Avaliação​

CritérioPontos
Criação Shadow Copy25%
Acesso aos dados30%
Compreensão de segurança25%
Recomendações20%

Comandos de Referência​

# Serviço
Get-Service VSS
Start-Service VSS

# Listar
vssadmin list shadows
Get-WmiObject Win32_ShadowCopy

# Criar
Checkpoint-Computer -Description "Test"
([WMICLASS]"root\cimv2:Win32_ShadowCopy").Create("C:\", "ClientAccessible")

# Excluir
vssadmin delete shadows /for=C: /oldest

# Espaço
vssadmin list shadowstorage
vssadmin resize shadowstorage /for=C: /maxsize=10%

Recursos​


Lab desenvolvido no âmbito do curso Sistemas Operacionais - MÓDULO 4