Ataques APT Apuntan al Gobierno de India con SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El informe cubre la operación Sheet Attack, que desplegó tres puertas traseras a medida—SHEETCREEP, FIREPOWER, y MAILCREEP—para comprometer a organizaciones gubernamentales indias. Los implantes dependieron de plataformas de nube legítimas para el mando y control, incluidas Google Sheets, Firebase Realtime Database, y la Microsoft Graph API, ayudando a que la actividad se mezcle con el tráfico normal de SaaS. El análisis también señala artefactos consistentes con desarrolladores que utilizan IA generativa para asistir en la producción de código. La campaña se evalúa como probablemente vinculada a un subgrupo de APT36 con base en Pakistán.
Investigación
ThreatLabz realizó tanto análisis dinámico como estático de las puertas traseras, documentando métodos de persistencia, flujos de trabajo de C2 y comportamiento de exfiltración de datos. El equipo también mapeó la infraestructura de apoyo, observó filtrado basado en geografía y User-Agent, y capturó indicadores a nivel de código que sugieren generación de fuente asistida por IA.
Mitigación
Implementar detecciones en capas para cadenas de entrega de PDF/LNK sospechosos y monitorear tareas programadas que inicien la ejecución de PowerShell o VBS. Aplicar controles estrictos de salida y monitoreo de anomalías para servicios de nube comúnmente abusados como C2, incluidos Google Sheets, Firebase y Microsoft Graph. Usar bloqueo basado en hash para cargas útiles conocidas y bloquear dominios e IP maliciosos identificados.
Respuesta
Cuando se detecte, aísle el extremo, termine la actividad oculta de cmd.exe y PowerShell, elimine las tareas programadas relacionadas, y borre los binarios de la puerta trasera. Conserve y revise los registros de C2 basados en Google Sheets y los artefactos de Firebase, luego cace en el entorno para detectar equipos adicionales que muestren los mismos indicadores.
Flujo de Ataque
Detecciones
Descarga o carga vía Powershell (via cmdline)
Ver
Dominio de Microsoft Graph API Resuelto por Proceso Inusual (via dns_query)
Ver
Archivos Sospechosos en el Perfil de Usuario Público (via file_event)
Ver
Intento de Ejecución de GNU Wget Sospechoso (via cmdline)
Ver
Llamada a Métodos Sospechosos de .NET desde Powershell (via powershell)
Ver
Ejecución Sospechosa desde el Perfil de Usuario Público (via process_creation)
Ver
Posible Infiltración/Exfiltración de Datos/C2 vía Servicios o Herramientas de Terceros (via dns)
Ver
Archivos Extraídos Sospechosos de un Archivo Comprimido (via file_event)
Ver
IOCs (SourceIP) para detectar: Ataques APT que apuntan al gobierno indio usando SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2
Ver
IOCs (HashMd5) para detectar: Ataques APT que apuntan al gobierno indio usando SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2
Ver
IOCs (DestinationIP) para detectar: Ataques APT que apuntan al gobierno indio usando SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2
Ver
IOCs (HashSha1) para detectar: Ataques APT que apuntan al gobierno indio usando SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2
Ver
IOCs (HashSha256) para detectar: Ataques APT que apuntan al gobierno indio usando SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2
Ver
Detección de Comandos de PowerShell para Despliegue de Puertas Traseras SHEETCREEP y FIREPOWER [Windows Powershell]
Ver
Detección de Comunicación C2 de Puertas Traseras SHEETCREEP y FIREPOWER [Conexión de Red de Windows]
Ver
Ejecución de Simulación
Requisito previo: La verificación previa de telemetría y línea base debe haber pasado.
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 el relato DEBEN reflejar directamente los TTPs identificados y buscan generar la telemetría exacta que espera la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un diagnóstico erróneo.
-
Narrativa de Ataque y Comandos:
- Posicionar el PNG malicioso:
- El atacante crea un archivo PNG (
details.png) que en realidad contiene un flujo de bytes de ensamblaje .NET compilado, pero con sus bytes invertidos para evadir el análisis estático.
- El atacante crea un archivo PNG (
- Lanzar PowerShell en modo oculto para cargar el ensamblaje:
- El atacante ejecuta PowerShell con
-WindowStyle Hidden -Commandy una línea que lee los bytes invertidos, restaura el orden correcto, carga el ensamblaje a través de[System.Reflection.Assembly]::Load(), e invoca un punto de entrada conocido (Task10.Program::MB()).
- El atacante ejecuta PowerShell con
- Implementación alternativa de capabilities de fuego mediante LNK:
- Un
.lnkconstruido ejecutapowershell.execon--headless -e(script codificado) para buscar y ejecutar una puerta trasera de PowerShell remota.
- Un
Estos pasos coinciden exactamente con las cadenas que la regla Sigma busca, asegurando que se active la alerta.
- Posicionar el PNG malicioso:
-
Script de Prueba de Regresión:
# ------------------------------------------------- # Simulación de carga útil de SHEETCREEP – reproduce exactamente la línea de comando # ------------------------------------------------- # 1. Crear un ensamblaje .NET ficticio (simple hola mundo en C#) y compilarlo $source = @" using System; public class Task10 { public static void MB() { Console.WriteLine("Payload executed"); } } "@ $tempDir = "$env:TEMPsheetcreep" New-Item -ItemType Directory -Force -Path $tempDir | Out-Null $csFile = Join-Path $tempDir "Task10.cs" $dllFile = Join-Path $tempDir "Task10.dll" $source | Set-Content -Path $csFile -Encoding UTF8 # Compilar usando csc (se asume que el SDK de .NET Framework está instalado) $cscPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe" & $cscPath /target:library /out:$dllFile $csFile # 2. Leer los bytes del DLL, invertirlos, y escribirlos en un archivo .png $bytes = [IO.File]::ReadAllBytes($dllFile) $revBytes = $bytes[($bytes.Length-1)..0] $pngPath = Join-Path $tempDir "details.png" [IO.File]::WriteAllBytes($pngPath, $revBytes) # 3. Ejecutar exactamente la línea de comando de PowerShell maliciosa (esto activará la regla) $maliciousCmd = '-WindowStyle Hidden -Command "$b=[IO.File]::ReadAllBytes(''details.png'');' + '([System.Reflection.Assembly]::Load([byte[]]($b[($b.Length-1)..0])).GetType("Task10.Program")::MB())"' Start-Process -FilePath "$env:SystemRootSystem32WindowsPowerShellv1.0powershell.exe" ` -ArgumentList $maliciousCmd ` -WindowStyle Hidden ` -NoNewWindow # Limpieza (opcional, ejecutar después de la verificación) # Remove-Item -Recurse -Force $tempDir -
Comandos de Limpieza:
# Eliminar archivos temporales y directorios creados para la prueba $tempDir = "$env:TEMPsheetcreep" if (Test-Path $tempDir) { Remove-Item -Recurse -Force $tempDir }