SOC Prime Bias: Medio

28 Abr 2026 18:45

Drainers de Criptomonedas como una Amenaza Convergente: Perspectivas sobre los Nuevos Ecosistemas de Ataque Híbrido Emergentes

Author Photo
SOC Prime Team linkedin icon Seguir
Drainers de Criptomonedas como una Amenaza Convergente: Perspectivas sobre los Nuevos Ecosistemas de Ataque Híbrido Emergentes
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

El informe explica cómo la infraestructura establecida de ciberdelincuencia está convergiendo cada vez más con las operaciones de drenaje de criptomonedas, dando lugar a ecosistemas de ataque híbridos que ponen en riesgo tanto a los activos de Web2 como de Web3. Los actores de amenazas dependen de páginas de phishing refinadas con temáticas alrededor de herramientas de inteligencia artificial o servicios financieros para convencer a las víctimas de conectar sus carteras, autorizar transacciones de tokens y transferir fondos inconscientemente a través de múltiples blockchains. Dos ejemplos destacados, StepDrainer y EtherRAT, demuestran cómo este modelo abarca tanto el drenaje de carteras basadas en navegador como el malware en Windows con funcionalidad consciente de blockchain. Como resultado, la amenaza ahora se extiende más allá de los usuarios nativos de criptomonedas y llega más profundamente a los entornos empresariales convencionales.

Investigación

Los investigadores examinaron la operación de malware como servicio StepDrainer, incluidas su infraestructura de staging PHP y JavaScript y su uso de Web3Modal para mostrar indicios convincentes de conexión de carteras. También analizaron el malware EtherRAT para Windows, que se entregó a través de un instalador TFTP troyanizado, mantuvo la persistencia mediante una clave de registro Run y se comunicó con puntos finales RPC de Ethereum y Solana. Durante la investigación, el equipo extrajo indicadores como dominios maliciosos, claves de registro y artefactos de línea de comandos vinculados a ambas vías de ataque.

Mitigación

Las organizaciones deben bloquear el acceso a dominios maliciosos conocidos, requerir autenticación multifactor para extensiones de carteras siempre que sea posible, y monitorear sistemas para entradas de registro Run sospechosas y procesos de Node.js inesperados. Los equipos de seguridad también deben inspeccionar el tráfico hacia servicios RPC de blockchain públicos en busca de comportamientos anómalos y revisar regularmente las extensiones del navegador para detectar signos de manipulación o abuso.

Respuesta

Si se detecta esta actividad, aísle inmediatamente el host afectado, elimine la entrada maliciosa de registro Run, termine los procesos no autorizados de Node.js y revoque todas las aprobaciones de tokens otorgadas por las carteras afectadas. Los investigadores deben realizar un análisis forense para identificar cargas adicionales o mecanismos de persistencia y actualizar las listas de permitidos o bloqueados para evitar una mayor comunicación con la infraestructura de comando y control identificada.

graph TB %% Class Definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef operator fill:#ff9900 %% Nodes u2013 Techniques initial_access[«<b>Técnica</b> – <b>T1204.001 Ejecución del usuario: enlace malicioso</b><br/><b>Descripción</b>: Las víctimas hacen clic en un enlace manipulado que lanza contenido malicioso.»] class initial_access technique delivery_html_smuggling[«<b>Técnica</b> – <b>T1027.006 Archivos o información ofuscada: HTML Smuggling</b><br/><b>Descripción</b>: JavaScript malicioso se entrega mediante una página web que oculta la carga útil en HTML.»] class delivery_html_smuggling technique delivery_compile_after[«<b>Técnica</b> – <b>T1027.004 Archivos o información ofuscada: compilación después de la entrega</b><br/><b>Descripción</b>: La carga útil se ensambla en el host después de la entrega inicial.»] class delivery_compile_after technique delivery_embedded_payloads[«<b>Técnica</b> – <b>T1027.009 Archivos o información ofuscada: cargas incrustadas</b><br/><b>Descripción</b>: La carga útil está oculta dentro de otro archivo como JavaScript.»] class delivery_embedded_payloads technique delivery_deobfuscate[«<b>Técnica</b> – <b>T1140 Desofuscar/decodificar archivos o información</b><br/><b>Descripción</b>: Los datos Base64 se decodifican en el navegador antes de su ejecución.»] class delivery_deobfuscate technique persistence_run_key[«<b>Técnica</b> – <b>T1127.002 Ejecución proxy de utilidades de desarrollador confiables: ClickOnce</b><br/><b>Descripción</b>: El instalador crea una clave Run para ejecutar node.exe malicioso.»] class persistence_run_key technique persistence_appcert[«<b>Técnica</b> – <b>T1546.009 Ejecución activada por eventos: DLL AppCert</b><br/><b>Descripción</b>: DLL firmadas con certificado confiable se cargan para persistencia.»] class persistence_appcert technique recon_hardware[«<b>Técnica</b> – <b>T1592.001 Recolección de información del host víctima: hardware</b><br/><b>Descripción</b>: El malware consulta detalles del hardware del sistema comprometido.»] class recon_hardware technique recon_firmware[«<b>Técnica</b> – <b>T1592.003 Recolección de información del host víctima: firmware</b><br/><b>Descripción</b>: El malware recopila versión de firmware y BIOS.»] class recon_firmware technique c2_web_protocols[«<b>Técnica</b> – <b>T1071.001 Protocolo de aplicación: protocolos web</b><br/><b>Descripción</b>: Usa tráfico HTTP/HTTPS estándar para C2.»] class c2_web_protocols technique c2_bidirectional[«<b>Técnica</b> – <b>T1102.002 Servicio web: comunicación bidireccional</b><br/><b>Descripción</b>: Permite comunicación de dos vías entre implante y servidor.»] class c2_bidirectional technique c2_oneway[«<b>Técnica</b> – <b>T1102.003 Servicio web: comunicación unidireccional</b><br/><b>Descripción</b>: Envía datos sin esperar respuesta.»] class c2_oneway technique c2_encrypted[«<b>Técnica</b> – <b>T1573 Canal cifrado</b><br/><b>Descripción</b>: El tráfico C2 está cifrado para evadir detección.»] class c2_encrypted technique c2_data_encoding[«<b>Técnica</b> – <b>T1132 Codificación de datos</b><br/><b>Descripción</b>: Los datos se codifican antes de la transmisión.»] class c2_data_encoding technique c2_config_repo[«<b>Técnica</b> – <b>T1602 Datos desde repositorio de configuración</b><br/><b>Descripción</b>: La configuración se obtiene desde repositorios de cadena.»] class c2_config_repo technique asset_drain[«<b>Técnica</b> – <b>T1204.002 Ejecución del usuario: aprobación de tokens</b><br/><b>Descripción</b>: La víctima aprueba transferencias mediante Web3Modal inyectado.»] class asset_drain technique %% Tools / Processes tool_malicious_link[«<b>Herramienta</b> – Enlace de phishing malicioso»] class tool_malicious_link tool tool_js_payload[«<b>Herramienta</b> – Carga JavaScript ofuscada»] class tool_js_payload tool process_installer[«<b>Proceso</b> – Instalador de Windows»] class process_installer process tool_node_exe[«<b>Herramienta</b> – node.exe»] class tool_node_exe tool tool_web3modal[«<b>Herramienta</b> – UI Web3Modal»] class tool_web3modal tool %% Operators (optional) op_and((«AND»)) class op_and operator %% Connections u2013 Attack Flow initial_access –>|leads_to| delivery_html_smuggling delivery_html_smuggling –>|uses| tool_malicious_link delivery_html_smuggling –>|uses| tool_js_payload delivery_html_smuggling –>|enables| delivery_compile_after delivery_compile_after –>|enables| delivery_embedded_payloads delivery_embedded_payloads –>|triggers| delivery_deobfuscate delivery_deobfuscate –>|creates| process_installer process_installer –>|drops| persistence_run_key process_installer –>|may_use| persistence_appcert persistence_run_key –>|executes| tool_node_exe persistence_app_cert –>|loads| tool_node_exe tool_node_exe –>|collects| recon_hardware tool_node_exe –>|collects| recon_firmware recon_hardware –>|feeds| c2_web_protocols recon_firmware –>|feeds| c2_web_protocols c2_web_protocols –>|supports| c2_bidirectional c2_web_protocols –>|supports| c2_oneway c2_bidirectional –>|uses| c2_encrypted c2_oneway –>|uses| c2_encrypted c2_encrypted –>|encodes| c2_data_encoding c2_data_encoding –>|stores_config_in| c2_config_repo c2_config_repo –>|provides| asset_drain asset_drain –>|uses| tool_web3modal

Flujo de Ataque

Ejecución de Simulación

Prerequisito: El Comprobador de Telemetría y Línea de Base Previa al Vuelo debe haber pasado.

  • Narrativa de Ataque y Comandos

    El adversario ya ha colocado un archivo JavaScript malicioso (payload.js) en el objetivo. Para lograr persistencia, utilizan el node.exe binario para iniciar conhost.exe en modo sin cabeza, que luego carga la carga útil de JavaScript. Esta técnica evita ventanas de consola visibles y se mezcla con el uso normal de node .

    1. Suelta la carga útil maliciosa (payload.js) a una ubicación temporal.
    2. Ejecuta node.exe con un comando que genera conhost.exe --sin_cabeza apuntando a la carga útil.
    3. Crea una tarea programada que ejecuta el mismo comando en el inicio del sistema, proporcionando persistencia.
  • Script de Prueba de Regresión

    # Simulación de Persistencia de EtherRAT – PowerShell
    # -------------------------------------------------
    # 1. Preparar carga útil JavaScript maliciosa
    $payloadPath = "$env:TEMPpayload.js"
    @"
    // JS malicioso mínimo – en realidad esto cargaría el implante EtherRAT
    const { exec } = require('child_process');
    exec('calc.exe'); // Ejemplo de efecto colateral
    "@ | Set-Content -Encoding UTF8 $payloadPath
    
    # 2. Localizar node.exe (asumimos que está en la RUTA)
    $node = (Get-Command node.exe).Source
    if (-not $node) {
        Write-Error "node.exe no encontrado en la RUTA."
        exit 1
    }
    
    # 3. Construir la línea de comandos de conhost
    $conhostCmd = "C:WindowsSystem32conhost.exe --sin_cabeza `"$payloadPath`""
    
    # 4. Lanzar vía node.exe (esto crea la relación padre-hijo)
    $script = "require('child_process').exec(`"$conhostCmd`")"
    & $node -e $script
    
    # 5. OPCIONAL: Crear tarea programada para persistencia
    $taskName = "SystemUpdate"
    $action = New-ScheduledTaskAction -Execute $node -Argument "-e `"$script`""
    $trigger = New-ScheduledTaskTrigger -AtLogOn
    Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -RunLevel Highest -Force
  • Comandos de Limpieza

    # Eliminar tarea programada
    Unregister-ScheduledTask -TaskName "SystemUpdate" -Confirm:$false
    
    # Eliminar carga útil
    Remove-Item -Path "$env:TEMPpayload.js" -Force
    
    # Detener cualquier proceso conhost restante generado por la prueba
    Get-Process conhost -ErrorAction SilentlyContinue | Where-Object {
        $_.Path -eq 'C:WindowsSystem32conhost.exe' -and $_.CommandLine -match '--sin_cabeza'
    } | Stop-Process -Force