DEBIDO RANSOMWARE


DEBIDO RANSOMWARE
AVISO LEGAL: Esta codigo destina-se exclusivamente a fins educacionais e de pesquisa em segurança cibernética. A reprodução, distribuição ou uso dessas técnicas sem autorização explícita é ilegal e antiético. Este material visa ajudar profissionais de segurança a entender ameaças para melhor defendê-las.
📋 Visão Geral Arquitetural
O "DEBIDO RANSOMWARE" é um malware modular escrito em Python que implementa três funcionalidades principais em sequência:
Coleta e exfiltração de dados (Information Stealer)
Estabelecimento de persistência (Persistence Mechanism)
Criptografia destrutiva de arquivos (Destructive Ransomware)
Vamos dissecar cada componente meticulosamente.
🔗 MÓDULO 1:
persistence.py - Mecanismo de Persistência
Objetivo Principal
Garantir a execução automática do malware em cada inicialização do sistema Windows.

Verificação de plataforma: O malware só ativa em sistemas Windows, retornando silenciosamente em outros sistemas.

Autolocalização: Obtém o caminho absoluto do próprio script em execução
Preparação de caminho: Define o diretório TEMP do usuário como destino da cópia
Uso de variáveis de ambiente: %TEMP% expande para C:\Users\[User]\AppData\Local\Temp

Autoduplicação: Copia-se para o diretório TEMP usando copy2 que preserva metadados
Verificação de localização: Evita cópias desnecessárias se já estiver em TEMP

Caminho de inicialização: Acessa a pasta Startup do usuário atual
Nome enganoso: Usa "WindowsUpdateHelper.lnk" para disfarçar como componente legítimo

Script PowerShell: Cria um atalho usando COM objects
WindowStyle = 7: Executa minimizado (janela oculta)
WorkingDirectory: Define o diretório TEMP como working directory
Descrição enganosa: "Windows Update Helper" para parecer legítimo

Execução oculta:
-ExecutionPolicy Bypass: Ignora políticas de execução do PowerShell
-WindowStyle Hidden: Executa sem interface gráfica
stdout=subprocess.DEVNULL: Suprime saída padrão
stderr=subprocess.DEVNULL: Suprime erros
timeout=15: Timeout de 15 segundos
Técnicas de Evasão Identificadas:
Uso de diretório TEMP: Área comum para arquivos legítimos
Nome de arquivo benigno: "WindowsUpdateHelper"
Execução silenciosa: Sem interface gráfica
Bypass de Execution Policy: Contorna restrições do PowerShell
📊 MÓDULO 2:
grabber_file.py - Coletor de Dados e Exfiltrador
Objetivo Principal
Coletar informações sensíveis do sistema, capturar screenshot, compactar arquivos locais e exfiltrar para um servidor Discord via Webhook.
Estrutura de Dados e Constantes

Ponto de exfiltração: Webhook Discord ativo (já expirado/removido para esta análise)
Vetor de comando e controle: Usa infraestrutura legítima (Discord) para evitar bloqueios

Extensões de valor: Foco em documentos, imagens, código-fonte, bancos de dados
Cobertura ampla: 30+ extensões comuns
Função: coletar_info_sistema()
Coleta de Identificação do Sistema:

Obtém nome do host para identificação única
IP Local (Técnica Avançada):

Técnica engenhosa: Conecta-se ao DNS do Google (8.8.8.8) via UDP para descobrir o IP de saída
Vantagem: Funciona mesmo sem conexão à internet ativa
IP Público via API Externa:

Análise de Armazenamento

Módulo psutil: Biblioteca poderosa para informações de sistema
Converte para GB: /(1024**3) converte bytes para gigabytes
Coleta completa: Todos os pontos de montagem
Processos em Execução (Top 5 por CPU):

Iteração de processos: psutil.process_iter() com atributos específicos
Tratamento de exceções: Ignora processos que terminam ou são inacessíveis
Ordenação por uso de CPU: Identifica processos mais ativos
Limite de 5 processos: Minimiza tamanho do relatório
Usuários Ativos:

Sessões ativas: Identifica quem está logado no sistema
Timestamp convertido: Data/hora de início da sessão
Função: capturar_screenshot()

Biblioteca PIL/Pillow: ImageGrab.grab() captura tela inteira
Nome com timestamp: screenshot_YYYYMMDD_HHMMSS.png
Salva no diretório atual: Local temporário para processamento
Função: criar_zip_do_diretorio_atual()

Varredura do diretório atual: os.listdir(".")
Filtro por extensão: Usa EXTENSOES_ALVO definido anteriormente
Apenas arquivos: Ignora diretórios

Compactação eficiente: ZIP_DEFLATED para compressão
Nome com timestamp: backup_local_YYYYMMDD_HHMMSS.zip
Manutenção de estrutura: Preserva nomes originais
Função: formatar_mensagem_discord()
Estrutura de Embed do Discord:

Design profissional: Usa cores, thumbnails e footer
Aviso educacional: Tentativa de justificar uso
Estruturado em fields: Organização lógica da informação
Formatação dos Campos:
7 campos categorizados: Sistema, Disco, Processos, Geolocalização, Hardware, Usuários, Data
Links ativos: Google Maps com coordenadas
Formatação limpa: Emojis e organização visual
Função: enviar_para_discord()

Upload múltiplo: Suporta screenshot + arquivo ZIP
MIME types corretos: image/png e application/zip
Tupla de upload: (nome, arquivo_binário, tipo_mime)

Envio único: JSON + arquivos em uma requisição
Timeout longo: 60 segundos para uploads grandes
Função: run_grabber() - Fluxo Principal

Verificação de conexão: Se não obtém IP local, assume falha
Fluxo sequencial: Coleta → Screenshot → ZIP → Upload

Artefatos temporários: Remove arquivos criados localmente
Tentativa de limpeza: Evita deixar rastros no sistema
💀 MÓDULO 3:
rans.py - Mecanismo de Criptografia Destrutiva
Objetivo Principal
Corromper arquivos de forma irreversível usando múltiplas camadas de criptografia e manipulação de bytes.
Constantes e Configurações

Extensão de marcação: Arquivos corrompidos recebem .debido
Identificação visual: Facilita verificação do ataque

Arquivos de valor: 22 extensões comuns
Ampla cobertura: Documentos, mídia, código, bancos de dados

Evitação de sistema: Ignora diretórios críticos
Prevenção de brick: Evita corromper sistema operacional
Diretórios do Windows: Protege integridade do sistema
Função: corrupt_data() - Núcleo da Corrupção

Arquivos pequenos: Substitui completamente por bytes aleatórios
Limite de 100 bytes: Arquivos muito pequenos são trivialmente corrompidos

Análise das Camadas de Corrupção:
Adição Modular (73):
Altera primeiros 100 bytes
(byte + 73) % 256 garante permanência no range 0-255
Operação reversível teoricamente (subtrair 73), mas combinada com outras camadas torna-se impossível
XOR com 0xFF (NOT binário):
Centro do arquivo (50 bytes)
byte ^ 0xFF inverte todos os bits
Reaplicar XOR restauraria, mas outras camadas impedem
Multiplicação Modular (×7):
Últimos 100 bytes
(byte * 7) % 256 - multiplicação modular não é inversível facilmente devido a perda de informação
Sobrescrita Aleatória:
~10% do arquivo aleatoriamente
struct.unpack('I', os.urandom(4))[0] gera posição aleatória de 32 bits
Substituição direta com os.urandom(1)[0]
Eficácia: A combinação de múltiplas transformações não-lineares e sobrescritas aleatórias torna a recuperação praticamente impossível sem backup.

Função: encrypt_and_corrupt()
Fluxo de Criptografia:
Geração de chaves: 32 bytes (256 bits) - AES-256
IV (Initialization Vector): 16 bytes para GCM
Modo GCM (Galois/Counter Mode): Autenticação integrada
Saída: IV (16) + Tag (16) + Ciphertext (variável)
Corrupção final: Aplica corrupt_data() no resultado
Características:
Chaves descartadas: Não são salvas, tornando decifragem impossível
Autenticação: GCM fornece integridade
Corrupção pós-criptografia: Destrói até a estrutura criptográfica

Função: destroy_file()
5 iterações: Aplica criptografia+corrupção 5 vezes consecutivas
Processamento completo: Lê, processa, sobrescreve
Renomeação: Adiciona extensão .debido
Feedback: Mensagem de confirmação no console

Função: percorrer_diretorio()
Algoritmo de Varredura:
Lista diretório atual: os.listdir()
Arquivos:
Verifica extensão contra EXTENSOES_ALVO
Ignora arquivos já corrompidos (.debido)
Chama destroy_file()
Diretórios:
Verifica contra DIRETORIOS_PROIBIDOS
Ignora diretórios que começam com $ (sistema)
Recursão profunda
Tratamento de erros: Ignora permissões insuficientes
Função: criar_aviso()

Arquivo de resgate: Informa sobre o ataque
Aviso educacional: Tenta justificar como exemplo
Codificação UTF-8: Suporte a caracteres especiais

Função: run_ransomware()
Orquestração simples: Varredura → Aviso
Diretório atual: Começa do local de execução
⚙️ MÓDULO 4:
main.py - Controlador Principal

Estrutura de Execução
Cabeçalho informativo: Declara propósito educacional
Aviso explícito: Tentativa de mitigar uso malicioso

Importação dinâmica: Importa módulo quando necessário
Validação de sucesso: Se falha a coleta, aborta
Sequenciamento: Passo 1 de 3

Persistência silenciosa: Sem validação de sucesso
Independente da coleta: Executa mesmo se coleta falhar parcialmente

Confirmação manual: Requer interação explícita do usuário
Proteção contra execução acidental: String exata "SIM"
Importação tardia: Carrega módulo de ransomware apenas se necessário
🔍 TÉCNICAS DE OFUSCAÇÃO E EVASÃO
1. Uso de Infraestrutura Legítima
Discord Webhooks para C2 (Comando e Controle)
APIs públicas para geolocalização (ip-api.com, ipify.org)
2. Nomes Enganosos
"WindowsUpdateHelper.lnk" no Startup
3. Execução Silenciosa
PowerShell com -WindowStyle Hidden
Supressão de stdout/stderr
Timeouts para evitar hanging
4. Respeito a Limites do Sistema
Ignora diretórios críticos do Windows
Tratamento de exceções para processos/diretórios inacessíveis
5. Auto-limpeza
Remove arquivos temporários (screenshot, ZIP)
Cópia para TEMP em vez de locais suspeitos
🛡️ VETORES DE DETECÇÃO E PROTEÇÃO
Indicadores de Comprometimento (IOCs)
Artefatos de Sistema:
%TEMP%\<script_name>.py
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\WindowsUpdateHelper.lnk
Arquivos com extensão .debido
Comportamentos:
Processo Python executando PowerShell com parâmetros ocultos
Conexões para Discord Webhooks a partir de sistemas corporativos
Múltiplos arquivos sendo renomeados simultaneamente
Redes:
Requisições para discord.com/api/webhooks/*
Consultas a ip-api.com e api.ipify.org
Medidas de Proteção

2 . Detectivas

Corretivas:
Restaurar de backups offline
Usar ferramentas de recuperação de arquivos
Reinstalar sistema se comprometimento grave
📈 ANÁLISE DE IMPACTO
Potencial Destrutivo
Alto: Para usuários finais sem backups
Moderado: Em ambientes corporativos com proteções básicas
Baixo: Contra sistemas com EDR (Endpoint Detection and Response)
Fatores Limitantes
Confirmação manual necessária para ransomware
Não propaga automaticamente
Foco em usuário atual (não escala para rede)
Detectável por soluções antivírus modernas
🧠 REFLEXÕES ÉTICAS E LEGAIS
Dilemas Éticos
Dual-use Technology: Código para defesa pode ser usado para ataque
Responsabilidade do Pesquisador: Como compartilhar conhecimento sem facilitar crimes
Consentimento: Testes só em sistemas próprios ou autorizados
Conformidade Legal
CFAA (EUA): Proíbe acesso não autorizado a sistemas
GDPR (UE): Protege dados pessoais coletados
Lei Carolina Dieckmann (BR): Criminaliza invasão de dispositivos
Boas Práticas para Pesquisadores
Ambientes Isolados: VMs, sandboxes, laboratórios dedicados
Documentação Clara: Propósitos educacionais explícitos
Nenhum Dano Real: Sempre em sistemas controlados
Responsabilidade: Não compartilhar com pessoas não qualificadas
🎯 CONCLUSÃO
O "DEBIDO RANSOMWARE" representa uma implementação educacional completa de malware, demonstrando:
Modularidade em design de malware
Técnicas modernas de persistência e evasão
Mecanismos destrutivos complexos
Exfiltração de dados via canais legítimos
Para profissionais de segurança, entender essas técnicas é fundamental para:
Desenvolver melhores defesas
Criar regras de detecção mais eficazes
Educar usuários sobre ameaças
Implementar políticas de segurança adequadas
A linha entre pesquisador de segurança e criminoso é definida pela ética, legalidade e responsabilidade. Conhecimento em segurança cibernética deve ser usado para proteger, nunca para prejudicar.

