La Ilusión del Decodificado de Certificados: Cómo el Blank Grabber Stealer Oculta Su Cargador
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
BlankGrabber es un infostealer basado en Python que comienza con un cargador de scripts por lotes que ‘decodifica’ un stager compilado en Rust disfrazado como un archivo de certificado. El stager realiza comprobaciones de sandbox y VM, desencripta una carga útil incrustada y deja caer múltiples componentes maliciosos, incluido un cliente XWorm y un ladrón empaquetado con PyInstaller. La exfiltración se basa en servicios web públicos como las API de bot de Telegram y los puntos finales de búsqueda de IP para mezclarse con el tráfico normal. El malware también altera la configuración del sistema, bloquea el acceso a sitios de seguridad e intenta eludir UAC para fortalecer la persistencia.
Investigación
El Equipo de Investigación de Amenazas de Splunk analizó el cargador inicial entregado a través de gofile.io, su uso de certutil.exe para decodificar la carga útil, y la lógica de anti-análisis del stager Rust. Revirtieron el flujo de desencriptación AES-GCM/CTR, extrajeron un archivo ZIP incrustado y mapearon el conjunto de cargas resultante. Las pruebas de comportamiento mostraron un amplio descubrimiento de host, captura de cámara web, recolección del portapapeles y robo de claves de host y otros artefactos sensibles.
Mitigación
Monitoree el uso sospechoso de certutil.exe, comandos de PowerShell que alteren las preferencias de Windows Defender y ediciones no autorizadas del archivo de hosts. Alerta sobre la ejecución de WinRAR/rar.exe desde rutas no estándar y búsquedas DNS hacia la API de Telegram o servicios conocidos de búsqueda de IP. Bloquee nombres de archivos maliciosos conocidos y restrinja la ejecución de binarios de Python no firmados empaquetados con PyInstaller mediante políticas de control de aplicaciones.
Respuesta
Si se detectan indicadores, aísle el punto final, preserve evidencia volátil y capture el directorio %TEMP% para revisión forense. Retire tareas programadas maliciosas o entradas de Ejecutar en el registro, revierta cualquier modificación en el archivo de hosts y restablezca las exclusiones de Windows Defender. Realice un restablecimiento completo de credenciales para las credenciales del navegador potencialmente expuestas y los datos de la billetera de criptomonedas.
"gráfico TB %% Definiciones de clase classDef técnica fill:#e6f7ff classDef operador fill:#ffcc66 classDef data fill:#d9ead3 %% Nodos u2013 Técnicas init_exec["<b>Técnica</b> – T1059.003: Shell de comandos de Windows<br/><b>Descripción</b>: El script por lotes ejecuta certutil para decodificar el stager Rust incrustado"] class init_exec technique evasion_vm["<b>Técnica</b> – T1497: Evasión de Virtualización/Sandbox<br/><b>Descripción</b>: Comprueba controladores, nombres de usuario y UUIDs para detectar entornos de análisis"] class evasion_vm technique obfuscation["<b>Técnica</b> – T1027: Archivos o Información Ofuscada<br/><b>Descripción</b>: El ejecutable Rust está disfrazado como un archivo de certificado"] class obfuscation technique decode["<b>Técnica</b> – T1140: Desofuscación/Decodificación de Archivos o Información<br/><b>Descripción</b>: Desencriptación AESu2011CTR/GCM de la carga útil encriptada (blank.aes)"] class decode technique load_stager["<b>Técnica</b> – T1105: Transferencia de Herramienta de Ingreso<br/><b>Descripción</b>: Deja caer un ejecutable con nombre aleatorio en %TEMP% y lo lanza"] class load_stager technique pers_startup["<b>Técnica</b> – T1037.005: Scripts de Inicialización de Arranque o Inicio de Sesión (Carpeta de Inicio)"] class pers_startup technique elev_uac["<b>Técnica</b> – T1548.002: Abuso del Mecanismo de Control de Elevación (elusión del Registro UAC)"] class elev_uac technique impair_def["<b>Técnica</b> – T1562.004: Deterioro de Defensas (Desactivar Windows Defender, añadir exclusión)"] class impair_def technique hide_hosts["<b>Técnica</b> – T1564.012: Ocultar Artefactos (Modificar archivo de hosts para bloquear sitios de seguridad)"] class hide_hosts technique data_collection["<b>Técnica</b> – T1082: Descubrimiento de Información del Sistema y recolección relacionada"] class data_collection data sysinfo["<b>Técnica</b> – T1082: Descubrimiento de Información del Sistema"] class sysinfo technique browser_info["<b>Técnica</b> – T1217: Descubrimiento de Información del Navegador"] class browser_info technique clipboard["<b>Técnica</b> – T1115: Datos del Portapapeles"] 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: Descubrimiento de Configuración de Red del Sistema (contraseñas de WiFi)"] class wifi_passwords technique product_key["<b>Técnica</b> – T1012: Consultar Registro (clave del producto de Windows)"] class product_key technique removable_media["<b>Técnica</b> – T1025: Datos de Medios Extraíbles"] class removable_media technique wmi_queries["<b>Técnica</b> – T1047: Instrumentación de Administración de Windows (Consultas del Sistema)"] class wmi_queries technique archive_data["<b>Técnica</b> – T1560.001: Archivado de Datos Recopilados (herramienta RAR)"] class archive_data technique exfil_telegram["<b>Técnica</b> – T1041: Exfiltración a través del Canal C2 (API de bot de Telegram)"] class exfil_telegram technique exfil_public["<b>Técnica</b> – T1048: Exfiltración a través de Protocolo Alternativo (servicios publicos de compartición de archivos)"] class exfil_public technique self_delete["<b>Técnica</b> – T1070: Eliminación de Indicadores (Autoeliminación tras exfiltración)"] class self_delete technique %% Conexiones de flujo 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 "
Flujo de Ataque
Detecciones
Escalamiento de Privilegios (elusión de UAC) vía FodHelper (vía cmdline)
Ver
Puntos de Persistencia Posibles [ASEPs – Software/Colmena de NTUSER] (vía cmdline)
Ver
Posible Infiltración / Exfiltración de Datos / C2 a través de Servicios / Herramientas de Terceros (vía proxy)
Ver
Posible Preparación de Datos Capturados en la Carpeta Temp (vía file_event)
Ver
Posible Enumeración del Sistema (vía cmdline)
Ver
Cambios en la Ruta del Entorno (vía registry_event)
Ver
Posible Uso de PING para Ejecución con Retraso (vía cmdline)
Ver
Operaciones Sospechosas en la Clave del Registro Ms-settings (vía cmdline)
Ver
Uso de Certutil para Codificación de Datos y Operaciones de Certificación (vía cmdline)
Ver
Posible Descubrimiento de Contraseña WiFi (vía cmdline)
Ver
Variables de Entorno en Argumentos de Línea de Comandos (vía cmdline)
Ver
Posible Infiltración / Exfiltración de Datos / C2 a través de Servicios / Herramientas de Terceros (vía dns)
Ver
Posible Descubrimiento de Configuración de Red del Sistema (vía cmdline)
Ver
Posible Enumeración de Software de Antivirus o Firewall (vía process_creation)
Ver
Cambios Sospechosos en las Preferencias de Windows Defender (vía powershell)
Ver
Desactivar la Monitorización en Tiempo Real de Windows Defender (vía powershell)
Ver
Binarios / Scripts Sospechosos en Localización de Autostart (vía file_event)
Ver
Intentos de Comunicaciones a Dominios de Búsqueda de IP (vía dns)
Ver
Desactivar la Monitorización en Tiempo Real de Windows Defender y Otros Cambios de Preferencias (vía cmdline)
Ver
IOCs (HashSha256) para detectar: La Ilusión de Decodificación de Certificado: Cómo el Ladron de Blank Grabber Oculta su Cargador
Ver
Detección de Comunicaciones C2 de BlankGrabber vía Consultas DNS [Windows Sysmon]
Ver
Detectar Actividad de BlankGrabber PowerShell [Windows Powershell]
Ver
Ejecución de Simulación
Prerrequisito: El chequeo de pre-vuelo de Telemetría y Línea Base debe haber pasado.
Razonamiento: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa del Ataque y Comandos:
El adversario, habiendo comprometido el punto final con el ladrón BlankGrabber, emite consultas DNS a tres servicios distintos utilizados por el malware para C2 y reconocimiento:- Dominio de API de Telegram – utilizado para obtener comandos a través de un bot de Telegram.
Resolve-DnsName -Name api.telegram.org -Type A - Servicio de verificación de IP pública – obtiene la dirección IP externa de la víctima para su posterior exfiltración.
Resolve-DnsName -Name api.ipify.org -Type A - Servicio abusado de compartición de archivos – envía un pequeño fragmento de datos codificado a través de un subdominio de
pastebin.com.Resolve-DnsName -Name maliciouspayload.pastebin.com -Type A
Cada llamada se realiza utilizando la función nativa
Resolve-DnsNamede PowerShell para asegurar que los registros del cliente DNS se generen en el host local. Las tres consultas se mapean directamente a los tresbloques de selección_de la regla Sigma, garantizando una coincidencia. - Dominio de API de Telegram – utilizado para obtener comandos a través de un bot de Telegram.
-
Script de Prueba de Regresión:
# Simulación de C2 DNS BlankGrabber – activa regla de detección $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 "❌ Error al consultar $d : $_" } Start-Sleep -Seconds 2 # ligera demora para imitar tráfico realista } -
Comandos de Limpieza:
# No se crean artefactos persistentes por Resolve-DnsName. # Limpie la caché DNS para eliminar cualquier entrada residual. ipconfig /flushdns Write-Host "Caché DNS limpiada."