SOC Prime Bias: Medio

17 Abr 2026 17:49

Campaña de Phishing de ClickFix Disfrazada como Instalador de Claude

Author Photo
SOC Prime Team linkedin icon Seguir
Campaña de Phishing de ClickFix Disfrazada como Instalador de Claude
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Una campaña de phishing utilizó la técnica ClickFix para distribuir un paquete MSIX malicioso disfrazado como el instalador de Claude AI. La ejecución inicial se basó en mshta lanzado a través de la utilidad Ejecutar de Windows con una URL especialmente diseñada. La carga útil descargada contenía un archivo HTA que construyó una etapa de PowerShell ofuscada, eludió AMSI, recuperó contenido adicional de PowerShell y ejecutó una rutina de inyección de procesos utilizando shellcode cifrado. La actividad se observó en los entornos de clientes tanto en Europa como en los Estados Unidos y fue detectada a través de la cobertura de Rapid7 InsightIDR.

Investigación

Analistas de Rapid7 identificaron mshta la ejecución vinculada a la clave de registro RunMRU y capturaron la URL download-version.1-5-8.com/claude.msixbundle. El análisis mostró que el archivo MSIX incluía un archivo HTA que decodificaba cadenas ofuscadas, ensamblaba un comando de PowerShell, sobrescribía el contexto de AMSI y, finalmente, inyectaba shellcode a través de llamadas a la API nativa de Windows. Los investigadores también encontraron que varias etapas de PowerShell posteriores se descargaron desde URLs generadas dinámicamente derivadas de un hash construido a partir del nombre de la computadora y el nombre de usuario de la víctima.

Mitigación

Los defensores deben monitorear la clave de registro RunMRU en busca de mshta entradas sospechosas y bloquear mshta la ejecución cuando provenga de fuentes no confiables. Las organizaciones también deben restringir las descargas de paquetes MSIX de dominios desconocidos y aplicar una lista blanca de aplicaciones para la ejecución de PowerShell. Las protecciones de AMSI deben permanecer habilitadas, y la configuración de registro de PowerShell debe capturar la actividad de comandos codificados u ofuscados para su investigación.

Respuesta

Cuando se detecta esta actividad, los equipos de seguridad deben aislar el punto final afectado, preservar los artefactos de la línea de comandos y realizar un análisis forense de las etapas de PowerShell descargadas y de cualquier proceso inyectado. Las credenciales utilizadas en el sistema impactado deben ser restablecidas, y el historial del navegador debe ser revisado para rastrear el cebo inicial. La lógica de detección también debe actualizarse para incluir los dominios observados, hashes y patrones de ejecución relacionados.

graph TB classDef action fill:#99ccff step_phishing[«<b>Acción</b> – T1566.002 Phishing: enlace de spearphishing<br/><b>Descripción</b>: La víctima hace clic en un enlace malicioso que ejecuta mshta.»] class step_phishing action step_mshta[«<b>Acción</b> – T1218.005 Mshta<br/><b>Descripción</b>: Ejecución de mshta con URL hacia un payload .msixbundle.»] class step_mshta action step_hta_deobfuscation[«<b>Acción</b> – T1027.010, T1027.013, T1140 Desofuscar/decodificar archivos<br/><b>Descripción</b>: HTA ejecuta VBS que desofusca el código malicioso.»] class step_hta_deobfuscation action step_ps_encoded[«<b>Acción</b> – T1059.001 PowerShell<br/><b>Descripción</b>: Generar un comando PowerShell codificado.»] class step_ps_encoded action step_stage1[«<b>Acción</b> – T1059.001 PowerShell (Etapa 1)<br/><b>Descripción</b>: Calcula MD5 de COMPUTERNAME+USERNAME, construye URL y descarga Etapa 2.»] class step_stage1 action step_stage2[«<b>Acción</b> – T1562.001 Evasión de defensas (AMSI bypass)<br/><b>Descripción</b>: Sobrescribe contexto AMSI y descarga Etapa 3.»] class step_stage2 action step_stage3[«<b>Acción</b> – T1059.001 PowerShell (Etapa 3)<br/><b>Descripción</b>: Decodifica array de bytes y crea ScriptBlock.»] class step_stage3 action step_process_injection[«<b>Acción</b> – T1055 Inyección de proceso<br/><b>Descripción</b>: Inyección de código en un proceso objetivo usando .NET y APIs nativas.»] class step_process_injection action step_persistence[«<b>Acción</b> – T1547.014 Claves Run / carpeta Startup (RunMRU)<br/><b>Descripción</b>: Creación de entrada RunMRU para persistencia.»] class step_persistence action step_phishing –>|conduce a| step_mshta step_mshta –>|ejecuta| step_hta_deobfuscation step_hta_deobfuscation –>|usa| step_ps_encoded step_ps_encoded –>|genera| step_stage1 step_stage1 –>|descarga| step_stage2 step_stage2 –>|descarga| step_stage3 step_stage3 –>|crea| step_process_injection step_mshta –>|establece| step_persistence

Flujo de ataque

Ejecución de simulación

Prerrequisito: La verificación preliminar de Telemetría y Línea Base debe haberse aprobado.

Justificación: 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 TTP identificados y tienen como objetivo generar la telemetría exacta esperada por la lógica de detección.

  • Narrativa del ataque y comandos:

    1. Objetivo: Ejecutar una carga útil maliciosa de PowerShell que está codificada en base-64 e integrada con llamadas a ensamblados .NET para realizar una inyección de procesos, imitando un típico ataque de “vivir de la tierra”.
    2. Pasos:
      • Crear un pequeño ensamblado .NET (C#) que llame a OpenProcess and WriteProcessMemory (simulado a través de [System.Runtime.InteropServices.Marshal]).
      • Codificar el script de PowerShell que contiene Invoke-Expression, FromBase64String, y una referencia a System.Management.Automation.AmsiUtils (usado para eludir AMSI).
      • Añadir un marcador ficticio 0x41414141 para emular el “relleno” que a menudo se ve en ofuscaciones.
      • Lanzar el script usando powershell.exe con la línea de comando completa visible (para que la regla de detección pueda ver las cadenas).
  • Script de prueba de regresión:

    # ==============================================================
    # Ejecución de PowerShell malicioso simulado para activar la regla Sigma
    # ==============================================================
    # 1. Construir una carga útil .NET simple (en línea, para propósitos de demostración)
    $cs = @'
    using System;
    using System.Runtime.InteropServices;
    public class Injector {
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, int nSize, out IntPtr lpNumberOfBytesWritten);
    }
    '@
    Add-Type -TypeDefinition $cs -Language CSharp
    
    # 2. Crear el fragmento malicioso de PowerShell
    $malicious = @'
    $b64 = "aW1wb3J0IHN5c3RlbS5JTy5TY3JpcHQgJ1Rlc3QnLCBJVkU="
    $decoded = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($b64))
    Invoke-Expression $decoded
    $dummy = 0x41414141
    '@
    
    # 3. Codificar el fragmento (Base64, UTF-16LE como espera PowerShell)
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($malicious)
    $encoded = [Convert]::ToBase64String($bytes)
    
    # 4. Lanzar PowerShell con el comando codificado
    $cmd = "powershell.exe -NoProfile -WindowStyle Hidden -EncodedCommand $encoded"
    Write-Host "Lanzando PowerShell malicioso..."
    Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -EncodedCommand $encoded" -WindowStyle Hidden
    
    # Nota: La línea de comando anterior contendrá las cadenas:
    #   Invoke-Expression, FromBase64String, System.Management.Automation.AmsiUtils, 0x41414141
    # que satisfacen la condición de detección de Sigma.
  • Comandos de limpieza:

    # Eliminar cualquier instancia perdida de PowerShell lanzada por la prueba
    Get-Process -Name powershell | Where-Object {$_.StartInfo.Arguments -match "EncodedCommand"} | Stop-Process -Force
    
    # Eliminar cualquier módulo o variable temporal (si fueron persistidos)
    Remove-Variable -Name b64, decoded, dummy -ErrorAction SilentlyContinue

Fin del Informe