A Ilusão do Decodificador de Certificados: Como o Blank Grabber Stealer Oculta Seu Loader
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
BlankGrabber é um infostealer baseado em Python que começa com um carregador de script em lote que “decodifica” um stager compilado em Rust disfarçado como um arquivo de certificado. O stager realiza verificações de sandbox e VM, descriptografa uma carga útil incorporada e solta diversos componentes maliciosos, incluindo um cliente XWorm e um stealer empacotado com PyInstaller. A exfiltração depende de serviços web públicos, como APIs de bot do Telegram e endpoints de consulta IP, para se misturar ao tráfego normal. O malware também altera configurações do sistema, bloqueia o acesso a sites de segurança e tenta ignorar o UAC para fortalecer a persistência.
Investigação
A Equipe de Pesquisa de Ameaças Splunk analisou o carregador inicial entregue via gofile.io, seu uso de certutil.exe para decodificação da carga útil e a lógica de anti-análise do stager Rust. Eles reverteram a engenharia do fluxo de decriptação AES-GCM/CTR, extraíram um arquivo ZIP incorporado e mapearam o conjunto de cargas resultantes. Testes comportamentais mostraram uma ampla descoberta de hosts, captura de webcam, extração de área de transferência e roubo de chaves de host e outros artefatos sensíveis.
Mitigação
Monitore o uso suspeito de certutil.exe, comandos do PowerShell que alteram as preferências do Windows Defender e edições não autorizadas no arquivo hosts. Alerta sobre a execução de WinRAR/rar.exe de caminhos não padronizados e consultas DNS para API do Telegram ou serviços conhecidos de busca de IP. Bloqueie nomes de arquivos maliciosos conhecidos e limite a execução de binários Python não assinados empacotados com PyInstaller através de políticas de controle de aplicativos.
Resposta
Se indicadores forem detectados, isole o endpoint, preserve evidências voláteis e capture o diretório %TEMP% para revisão forense. Remova tarefas agendadas maliciosas ou entradas de execução no registro, reverta quaisquer modificações no arquivo hosts e redefina as exclusões do Windows Defender. Execre uma redefinição completa de credenciais para credenciais do navegador potencialmente expostas e dados de carteiras de criptomoedas.
"graph TB %% Class definitions classDef technique fill:#e6f7ff classDef operator fill:#ffcc66 classDef data fill:#d9ead3 %% Nodes u2013 Techniques init_exec["<b>Técnica</b> – T1059.003: Shell de Comando do Windows<br/><b>Descrição</b>: Script em lote executa certutil para decodificar o stager Rust incorporado"] class init_exec technique evasion_vm["<b>Técnica</b> – T1497: Evasão de Virtualização/Sandbox<br/><b>Descrição</b>: Verifica drivers, nomes de usuário e UUIDs para detectar ambientes de análise"] class evasion_vm technique obfuscation["<b>Técnica</b> – T1027: Arquivos ou Informações Ofuscados<br/><b>Descrição</b>: Executável Rust é disfarçado como um arquivo de certificado"] class obfuscation technique decode["<b>Técnica</b> – T1140: Desofuscar/Decodificar Arquivos ou Informações<br/><b>Descrição</b>: Descriptografia AESu2011CTR/GCM da carga útil criptografada (blank.aes)"] class decode technique load_stager["<b>Técnica</b> – T1105: Transferência de Ferramenta de Ingresso<br/><b>Descrição</b>: Solta um executável com nome aleatório em %TEMP% e o executa"] class load_stager technique pers_startup["<b>Técnica</b> – T1037.005: Scripts de Inicialização de Boot ou Logon (Pasta de Inicialização)"] class pers_startup technique elev_uac["<b>Técnica</b> – T1548.002: Abuso de Mecanismo de Controle de Elevação (bypass do UAC do Registro)"] class elev_uac technique impair_def["<b>Técnica</b> – T1562.004: Prejudicar Defesas (Desativar Windows Defender, adicionar exclusão)"] class impair_def technique hide_hosts["<b>Técnica</b> – T1564.012: Ocultar Artefatos (Modificar arquivo hosts para bloquear sites de segurança)"] class hide_hosts technique data_collection["<b>Técnica</b> – T1082: Descoberta de Informações do Sistema e coleta relacionada"] class data_collection data sysinfo["<b>Técnica</b> – T1082: Descoberta de Informações do Sistema"] class sysinfo technique browser_info["<b>Técnica</b> – T1217: Descoberta de Informações do Navegador"] class browser_info technique clipboard["<b>Técnica</b> – T1115: Dados da Área de Transferência"] class clipboard technique video_capture["<b>Técnica</b> – T1125: Captura de Vídeo"] class video_capture technique wifi_passwords["<b>Técnica</b> – T1016: Descoberta de Configuração de Rede do Sistema (senhas de Wi‑Fi)"] class wifi_passwords technique product_key["<b>Técnica</b> – T1012: Consulta ao Registro (chave de produto do Windows)"] class product_key technique removable_media["<b>Técnica</b> – T1025: Dados de Mídia Removível"] class removable_media technique wmi_queries["<b>Técnica</b> – T1047: Instrumentação de Gerenciamento do Windows (Consultas do Sistema)"] class wmi_queries technique archive_data["<b>Técnica</b> – T1560.001: Arquivar Dados Coletados (utilitário RAR)"] class archive_data technique exfil_telegram["<b>Técnica</b> – T1041: Exfiltração Sobre Canal C2 (API de bot do Telegram)"] class exfil_telegram technique exfil_public["<b>Técnica</b> – T1048: Exfiltração Sobre Protocolo Alternativo (Serviços públicos de compartilhamento de arquivos)"] class exfil_public technique self_delete["<b>Técnica</b> – T1070: Remoção de Indicadores (Autodeleção após exfiltração)"] class self_delete technique %% Flow connections init_exec –>|leads_to| evasion_vm evasion_vm –>|leads_to| obfuscation obfuscation –>|leads_to| decode decode –>|leads_to| load_stager load_stager –>|enables| pers_startup load_stager –>|enables| elev_uac load_stager –>|enables| impair_def load_stager –>|enables| hide_hosts load_stager –>|starts| data_collection data_collection –>|includes| sysinfo data_collection –>|includes| browser_info data_collection –>|includes| clipboard data_collection –>|includes| video_capture data_collection –>|includes| wifi_passwords data_collection –>|includes| product_key data_collection –>|includes| removable_media data_collection –>|includes| wmi_queries data_collection –>|leads_to| archive_data archive_data –>|uses| exfil_telegram archive_data –>|uses| exfil_public exfil_telegram –>|followed_by| self_delete exfil_public –>|followed_by| self_delete "
Fluxo de Ataque
Detecções
Escalação de Privilégios (UAC bypass) via FodHelper (via cmdline)
Visualizar
Possíveis Pontos de Persistência [ASEPs – Hive Software/NTUSER] (via cmdline)
Visualizar
Possível Infiltração/Exfiltração de Dados/C2 via Serviços/Ferramentas de Terceiros (via proxy)
Visualizar
Possível Estágio de Dados Capturados na Pasta Temp (via file_event)
Visualizar
Possível Enumeração do Sistema (via cmdline)
Visualizar
Alterações no Caminho do Ambiente (via registry_event)
Visualizar
Possível Uso do PING para Execução Atrasada (via cmdline)
Visualizar
Operações Suspeitas na Chave de Registro Ms-settings (via cmdline)
Visualizar
Usando Certutil para Codificação de Dados e Operações de Certificado (via cmdline)
Visualizar
Possível Descoberta de Senha de Wifi (via cmdline)
Visualizar
Variáveis de Ambiente nos Argumentos de Linha de Comando (via cmdline)
Visualizar
Possível Infiltração/Exfiltração de Dados/C2 via Serviços/Ferramentas de Terceiros (via dns)
Visualizar
Possível Descoberta de Configuração de Rede do Sistema (via cmdline)
Visualizar
Possível Enumeração de Software Antivirus ou Firewall (via process_creation)
Visualizar
Alterações Suspeitas nas Preferências do Windows Defender (via powershell)
Visualizar
Desativar Monitoramento em Tempo Real do Windows Defender (via powershell)
Visualizar
Binários/Scripts Suspeitos na Localização de Inicialização Automática (via file_event)
Visualizar
Tentativa de Comunicações de Domínio de Consulta de IP (via dns)
Visualizar
Desativar Monitoramento em Tempo Real do Windows Defender e Outras Alterações de Preferências (via cmdline)
Visualizar
IOCs (HashSha256) para detectar: A Ilusão de Decodificação de Certificado: Como o Stealer Blank Grabber Esconde Seu Carregador
Visualizar
Detecção de Comunicações C2 do BlankGrabber via Consultas DNS [Windows Sysmon]
Visualizar
Detectar Atividade do BlankGrabber PowerShell [Windows Powershell]
Visualizar
Execução da Simulação
Pré-requisito: A Verificação Pré-voo de Telemetria & 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 o enredo DEVEM refletir diretamente os TTPs identificados e visam gerar exatamente a telemetria esperada pela lógica de detecção.
-
Narrativa de Ataque & Comandos:
O adversário, tendo comprometido o endpoint com o stealer BlankGrabber, emite consultas DNS para três serviços distintos usados pelo malware para C2 e reconhecimento:- Domínio API do Telegram – usado para buscar comandos via um bot do Telegram.
Resolve-DnsName -Name api.telegram.org -Type A - Serviço de verificação de IP público – obtém o endereço IP externo da vítima para posterior exfiltração.
Resolve-DnsName -Name api.ipify.org -Type A - Serviço de compartilhamento de arquivos abusado – envia um pequeno pedaço de dados codificados via um sub-domínio de
pastebin.com.Resolve-DnsName -Name maliciouspayload.pastebin.com -Type A
Cada chamada é realizada usando o
Resolve-DnsNamenativo do PowerShell para garantir que os logs do cliente DNS sejam gerados no host local. As três consultas mapeiam diretamente para os trêsblocos de seleção da regra Sigma, garantindo uma correspondência.blocos de seleção da regra Sigma, garantindo uma correspondência. - Domínio API do Telegram – usado para buscar comandos via um bot do Telegram.
-
Script de Teste de Regressão:
# Simulação de C2 DNS BlankGrabber - aciona a regra de detecção $domains = @( "api.telegram.org", "api.ipify.org", "maliciouspayload.pastebin.com" ) foreach ($d in $domains) { Write-Host "Consultando $d ..." try { Resolve-DnsName -Name $d -Type A -ErrorAction Stop | Out-Null Write-Host "✅ $d consultado" } catch { Write-Warning "❌ Falha ao consultar $d : $_" } Start-Sleep -Seconds 2 # pequeno atraso para imitar tráfego realista } -
Comandos de Limpeza:
# Nenhum artefato persistente é criado pelo Resolve-DnsName. # Limpe o cache DNS para remover entradas residuais. ipconfig /flushdns Write-Host "Cache DNS limpo."