Defesa Contra Ransomware no Windows: Guia Avançado com Scripts Práticos
Automatize sua Proteção Contra Ransomware:
Scripts Prontos para Uso

Fortaleça sua segurança digital com scripts PowerShell automatizados, eliminando vulnerabilidades sem esforço manual. Este guia prático traz soluções completas para:
✅ Monitoramento contínuo de arquivos suspeitos – Identifique e neutralize ameaças antes que se espalhem.
🔄
Backup automático de dados críticos – Preserve suas informações contra ataques.
🛡️
Atualização dinâmica de regras de firewall – Bloqueie IPs maliciosos sem intervenção manual.
🚨
Resposta imediata a infecções – Isole dispositivos comprometidos em segundos.
Todos os scripts vêm com instruções detalhadas e passo a passo para fácil implementação no Windows Task Scheduler, permitindo configurar defesas avançadas em minutos.
🔍 O que você encontrará neste guia:
- Scripts testados e otimizados para máxima eficiência.
- Agendamento automatizado (diário, semanal ou em tempo real).
- Monitoramento proativo com logs detalhados e alertas por e-mail.
- Configuração simplificada – copie, cole e adapte conforme sua necessidade.
Proteja sua rede ou dispositivos pessoais sem gastar fortunas. Avance agora para implementar uma estratégia antifurto de dados eficaz!
Cada script inclui explicações detalhadas e instruções de implementação.
📅 1. Verificação Diária de Ransomware
Objetivo: Escanear arquivos suspeitos todos os dias às 2h.
Script:
Scan-Ransomware.ps1
$foldersToScan = @("C:\Users", "D:\Documents")
$ransomwareExtensions = @("*.locky", "*.encrypted", "*.crypt")
$logFile = "C:\SecurityScripts\RansomwareScan_$(Get-Date -Format 'yyyyMMdd').log"
"=== Scan iniciado em $(Get-Date) ===" | Out-File $logFile -Append
foreach ($folder in $foldersToScan) {
Get-ChildItem -Path $folder -Recurse -Include $ransomwareExtensions | ForEach-Object {
"[ALERTA] Arquivo suspeito encontrado: $($_.FullName)" | Out-File $logFile -Append
}
}
"=== Scan concluído em $(Get-Date) ===" | Out-File $logFile -Append
Agendamento:
$trigger = New-ScheduledTaskTrigger -Daily -At 2am
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\SecurityScripts\Scan-Ransomware.ps1"
Register-ScheduledTask -TaskName "ScanDiarioRansomware" -Trigger $trigger -Action $action -RunLevel Highest
🔄 2. Backup Automático de Pastas Críticas
Objetivo: Backup diário de C:\Documents
para um HD externo às 23h.
Script:
Backup-Documents.ps1
$source = "C:\Users\$env:USERNAME\Documents"
$destination = "E:\Backups\Documents_$(Get-Date -Format 'yyyyMMdd')"
if (-not (Test-Path $destination)) { New-Item -ItemType Directory -Path $destination | Out-Null }
Robocopy $source $destination /MIR /Z /LOG:"C:\SecurityScripts\BackupLog.txt"
Get-ChildItem "E:\Backups" -Directory | Where { $_.CreationTime -lt (Get-Date).AddDays(-30) } | Remove-Item -Recurse -Force
Agendamento:
$trigger = New-ScheduledTaskTrigger -Daily -At 11pm
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\SecurityScripts\Backup-Documents.ps1"
Register-ScheduledTask -TaskName "BackupDiarioDocuments" -Trigger $trigger -Action $action
🛡️ 3. Atualização Semanal de Regras de Firewall
Objetivo: Atualizar bloqueios de IPs maliciosos toda segunda-feira às 6h.
Script: FirewallMultiBlock.ps1
✔ Baixa listas de IPs maliciosos de fontes confiáveis.
✔ Remove IPs confiáveis da whitelist
para evitar bloqueios errados.
✔ Aplica as novas regras de firewall automaticamente.
✔ Funciona 100% no Windows 10/11 e Server.
1️⃣ Abra o Bloco de Notas
2️⃣ Copie o código abaixo
e salve como:
📂 C:\Defesa\FirewallMultiBlock.ps1
# CONFIGURAÇÕES
$fontes = @(
"https://feodotracker.abuse.ch/downloads/ipblocklist.txt",
"https://www.blocklist.de/downloads/export-ssh.txt",
"https://raw.githubusercontent.com/stamparm/ipsum/master/ipsum.txt"
)
$ipListPath = "C:\Defesa\ips_unificados.txt"
$whitelistPath = "C:\Defesa\whitelist.txt"
$logPath = "C:\Defesa\firewall_log.txt"
$rulePrefix = "BlockMaliciousIPs"
# GARANTIR PASTAS E ARQUIVOS
if (!(Test-Path "C:\Defesa")) { New-Item -Path "C:\" -Name "Defesa" -ItemType Directory | Out-Null }
if (!(Test-Path $whitelistPath)) { Set-Content -Path $whitelistPath -Value "8.8.8.8`n8.8.4.4" }
# LOG INICIAL
$time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Add-Content -Path $logPath -Value "`n[$time] Iniciando atualização de IPs maliciosos..."
# CARREGAR WHITELIST
$whitelist = Get-Content -Path $whitelistPath | Where-Object { $_ -match '^\d{1,3}(\.\d{1,3}){3}$' }
Add-Content -Path $logPath -Value "Whitelist carregada: $($whitelist -join ', ')"
# BAIXAR E UNIR LISTAS
$allIPs = @()
foreach ($url in $fontes) {
try {
$conteudo = Invoke-WebRequest -Uri $url -UseBasicParsing
$linhas = $conteudo.Content -split "`n"
$ips = $linhas | Where-Object { $_ -match '^\d{1,3}(\.\d{1,3}){3}$' }
$allIPs += $ips
Add-Content -Path $logPath -Value "Fonte carregada: $url"
} catch {
Add-Content -Path $logPath -Value "Erro ao acessar $url: $_"
}
}
# FILTRAR IPs ÚNICOS, REMOVER WHITELIST
$uniqueIPs = $allIPs | Sort-Object -Unique | Where-Object { $_ -notin $whitelist }
$uniqueIPs | Set-Content $ipListPath
# REMOVER REGRAS ANTIGAS
Get-NetFirewallRule -DisplayName "$rulePrefix_*" -ErrorAction SilentlyContinue | Remove-NetFirewallRule -Confirm:$false
Add-Content -Path $logPath -Value "Regras antigas removidas."
# APLICAR NOVAS REGRAS
foreach ($ip in $uniqueIPs) {
try {
New-NetFirewallRule -DisplayName "${rulePrefix}_$ip" -Direction Inbound -RemoteAddress $ip -Action Block -Protocol Any -Enabled True -Profile Any | Out-Null
} catch {
Add-Content -Path $logPath -Value "Erro ao adicionar IP: $ip"
}
}
# FINALIZAÇÃO
Add-Content -Path $logPath -Value "Total de IPs bloqueados: $($uniqueIPs.Count)"
Add-Content -Path $logPath -Value "[$time] Atualização concluída com sucesso."
CRIAR A LISTA DE WHITELIST (OPCIONAL)
1️⃣ Abra o Bloco de Notas
2️⃣ Crie o arquivo
C:\Defesa\whitelist.txt
3️⃣ Adicione IPs confiáveis, um por linha:
8.8.8.8
8.8.4.4
192.168.1.1
200.200.200.200
4️⃣ Salve o arquivo
e esses IPs não serão bloqueados!
AGENDAR EXECUÇÃO AUTOMÁTICA
1️⃣ Pressione Win + R, digite taskschd.msc e clique em OK.
2️⃣ Clique em Criar Tarefa... (no lado direito).
3️⃣ Na aba Geral:
-
Nome: Firewall AutoBlock
-
Marque "Executar com privilégios mais altos"
-
Opção: "Executar se o usuário estiver logado ou não"
4️⃣ Na aba Gatilhos > Novo...
-
Escolha "Diariamente" e marque "Repetir a cada 12 horas"
5️⃣ Na aba Ações > Novo...
Ação: Iniciar um programa
Programa: powershell.exe
Argumentos:
-ExecutionPolicy Bypass -File "C:\Defesa\FirewallMultiBlock.ps1"
6️⃣ Clique em OK
para salvar!
TESTE SE FUNCIONA
1️⃣ Execute o script manualmente:
powershell -File "C:\Defesa\FirewallMultiBlock.ps1"
2️⃣ Verifique o log de execução:
C:\Defesa\firewall_log.txt
3️⃣ Para listar as regras aplicadas, use:
Get-NetFirewallRule -DisplayName "BlockMaliciousIPs_*"
4️⃣ Para testar um IP específico:
Test-NetConnection -ComputerName 1.1.1.1
Se der "Blocked", significa que está funcionando!
✔ Revise sua whitelist (C:\Defesa\whitelist.txt) para evitar bloqueios errados.
✔ Atualize regularmente
as fontes de IPs maliciosos no script.
✔ Cheque os logs semanalmente (C:\Defesa\firewall_log.txt).
✔ Caso algo pare de funcionar, remova as regras manualmente:
Get-NetFirewallRule -DisplayName "BlockMaliciousIPs_*" | Remove-NetFirewallRule -Confirm:$false
🚨 4. Resposta Automática a Incidentes
Objetivo: Isolar a máquina se um arquivo .encrypted
for detectado.
Script:
Ransomware-Response.ps1
$infectedFiles = Get-ChildItem -Path "C:\" -Recurse -Filter "*.encrypted" -ErrorAction SilentlyContinue
if ($infectedFiles) {
Get-NetAdapter | Disable-NetAdapter -Confirm:$false
$message = "RANSOMWARE DETECTADO em $env:COMPUTERNAME. Arquivos: $($infectedFiles.Count)"
Send-MailMessage -From "alerta@empresa.com" -To "admin@empresa.com" -Subject "[URGENTE] Infecção por Ransomware" -Body $message -SmtpServer "smtp.empresa.com"
$logPath = "C:\SecurityScripts\Incident_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
$infectedFiles.FullName | Out-File $logPath
}
Monitoramento em Tempo Real:
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\"
$watcher.Filter = "*.encrypted"
$watcher.EnableRaisingEvents = $true
Register-ObjectEvent $watcher "Created" -Action {
Start-Process PowerShell.exe -ArgumentList "-File C:\SecurityScripts\Ransomware-Response.ps1" -WindowStyle Hidden
}
📌 Resumo das Tarefas Agendadas
Automatizar tarefas de segurança reduz riscos e garante proteção contínua. Abaixo, um resumo das principais ações agendadas e como configurá-las de forma simples:
1. Verificação de Ransomware
🔹
O que faz? Escaneia arquivos suspeitos de ransomware.
🔹
Frequência: Diária às 2h da manhã.
🔹
Como agendar:
- Criar um script para verificar arquivos suspeitos.
- No Agendador de Tarefas do Windows, criar uma nova tarefa.
- Configurar o acionamento para execução diária às 2h.
- No campo "Ação", selecionar "Iniciar um programa" e informar o caminho do script.
2. Backup de Documentos
🔹
O que faz? Copia automaticamente arquivos para um local seguro.
🔹
Frequência: Diária às 23h.
🔹
Como agendar:
- Criar um script para copiar os arquivos necessários.
- Abrir o Agendador de Tarefas e adicionar uma nova tarefa.
- Definir a execução diária às 23h.
- Configurar a ação para rodar o script de backup.
3. Atualização de Firewall
🔹
O que faz? Atualiza regras para bloquear IPs maliciosos.
🔹
Frequência: Semanalmente às segundas-feiras, 6h da manhã.
🔹
Como agendar:
- Criar um script que adiciona novas regras ao firewall.
- No Agendador de Tarefas, criar uma tarefa semanal.
- Definir para rodar toda segunda-feira às 6h.
- Configurar a ação para executar o script de atualização.
4. Resposta a Incidentes
🔹
O que faz? Desconecta a máquina da rede ao detectar uma ameaça.
🔹
Frequência: Em tempo real.
🔹
Como configurar:
- Criar um script que monitora arquivos suspeitos.
- Configurar o Windows para executar o script ao detectar novas ameaças.
- Opcionalmente, integrar alertas por e-mail para administradores.
Considerações finais
Com essas configurações, o sistema se mantém protegido automaticamente, sem necessidade de intervenção manual frequente.
Teste os scripts em uma VM antes de implantar.
Verifique os logs periodicamente:
Get-Content "C:\SecurityScripts\RansomwareScan_$(Get-Date -Format 'yyyyMMdd').log"
Para editar ou desativar tarefas agendadas:
Get-ScheduledTask -TaskName "ScanDiarioRansomware" | Disable-ScheduledTask