SOC Prime Bias: Crítico

30 Ene 2026 19:58

Ataques APT Apuntan al Gobierno de India con SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2

Author Photo
Ruslan Mikhalov Jefe de Investigación de Amenazas en SOC Prime linkedin icon Seguir
Ataques APT Apuntan al Gobierno de India con SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2
shield icon

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.

graph TB %% Class definitions classDef action fill:#99ccff classDef process fill:#ffdd99 classDef file fill:#ffcccc classDef data fill:#e6e6ff classDef protocol fill:#d9ead3 classDef technique fill:#ffd966 %% Nodes – Initial Access action_phishing[«<b>Acción</b> – <b>T1204.001 Ejecución del Usuario: Enlace Malicioso</b><br/>La víctima hace clic en un enlace malicioso dentro de un PDF»] class action_phishing action file_phishing_pdf[«<b>Archivo</b> – <b>Nombre</b>: PDF de phishing<br/><b>Técnica</b>: T1204.001»] class file_phishing_pdf file file_malicious_lnk[«<b>Archivo</b> – <b>Nombre</b>: LNK malicioso<br/><b>Técnica</b>: T1204.002 Ejecución del Usuario: Archivo Malicioso»] class file_malicious_lnk file process_powershell[«<b>Proceso</b> – <b>Nombre</b>: PowerShell<br/><b>Técnica</b>: T1059.001 Intérprete de Comandos y Scripts»] class process_powershell process file_dotnet_assembly[«<b>Archivo</b> – <b>Nombre</b>: Ensamblado .NET disfrazado de PNG<br/><b>Técnicas</b>: T1620 Carga de Código Reflectiva, T1036.008 Suplantación de Tipo de Archivo»] class file_dotnet_assembly file process_hidden_cmd[«<b>Proceso</b> – <b>Nombre</b>: cmd.exe oculto<br/><b>Técnica</b>: T1059.003 Intérprete de Comandos»] class process_hidden_cmd process %% Nodes – Persistence action_persistence[«<b>Acción</b> – Configuración de Persistencia»] class action_persistence action task_scheduled[«<b>Técnica</b> – T1053 Tarea Programada»] class task_scheduled technique script_gservices[«<b>Archivo</b> – <b>Nombre</b>: GServices.vbs<br/><b>Propósito</b>: Ejecución repetida»] class script_gservices file %% Nodes – Command and Control action_c2[«<b>Acción</b> – Comando y Control»] class action_c2 action data_google_sheets[«<b>Almacén de Datos</b> – Google Sheets<br/><b>Técnica</b>: T1102.002 Servicio Web: Hoja de Cálculo»] class data_google_sheets data protocol_https[«<b>Protocolo</b> – HTTPS<br/><b>Técnica</b>: T1071.001 Protocolos Web»] class protocol_https protocol technique_dead_drop[«<b>Técnica</b> – T1102.001 Resolución Dead Drop»] class technique_dead_drop technique backup_firebase[«<b>Almacén de Datos</b> – URL de Firebase<br/><b>Respaldo</b>: Canal C2»] class backup_firebase data backup_gcs[«<b>Almacén de Datos</b> – Google Cloud Storage<br/><b>Respaldo</b>: Canal C2»] class backup_gcs data encryption_tripledes[«<b>Técnica</b> – T1027 Archivo o Información Ofuscada/Cifrada (TripleDES)»] class encryption_tripledes technique encryption_channel[«<b>Técnica</b> – T1573 Canal Cifrado»] class encryption_channel technique %% Nodes – Discovery action_discovery[«<b>Acción</b> – Descubrimiento»] class action_discovery action command_whoami[«<b>Comando</b> – whoami<br/><b>Técnica</b>: T1033 Descubrimiento del Usuario del Sistema»] class command_whoami technique command_enum_domains[«<b>Comando</b> – Enumerar cuentas de dominio<br/><b>Técnica</b>: T1087.002 Cuenta de Dominio»] class command_enum_domains technique %% Nodes – Execution of Commands action_execution[«<b>Acción</b> – Ejecutar Comandos Recibidos»] class action_execution action %% Nodes – Cloud Account Creation cloud_account_creation[«<b>Acción</b> – Crear Cuenta de Google Cloud<br/><b>Técnica</b>: T1136.003 Cuenta en la Nube»] class cloud_account_creation action %% Nodes – Defense Evasion action_defense_evasion[«<b>Acción</b> – Evasión de Defensas»] class action_defense_evasion action technique_hidden_fs[«<b>Técnica</b> – T1564.005 Archivos y Directorios Ocultos»] class technique_hidden_fs technique %% Connections – Flow action_phishing –>|entrega| file_phishing_pdf file_phishing_pdf –>|contiene enlace a| file_malicious_lnk file_malicious_lnk –>|ejecuta| process_powershell process_powershell –>|carga por reflexión| file_dotnet_assembly file_dotnet_assembly –>|genera| process_hidden_cmd process_hidden_cmd –>|habilita| action_persistence action_persistence –>|crea| task_scheduled action_persistence –>|ejecuta| script_gservices action_persistence –>|se comunica con| action_c2 action_c2 –>|usa| data_google_sheets data_google_sheets –>|a través de| protocol_https action_c2 –>|emplea| technique_dead_drop action_c2 –>|respaldo a| backup_firebase action_c2 –>|respaldo a| backup_gcs action_c2 –>|cifra tráfico mediante| encryption_tripledes action_c2 –>|establece| encryption_channel action_c2 –>|emite| action_discovery action_discovery –>|ejecuta| command_whoami action_discovery –>|ejecuta| command_enum_domains action_c2 –>|recibe comandos para| action_execution action_execution –>|ejecuta vía PowerShell| process_powershell action_execution –>|ejecuta vía cmd oculto| process_hidden_cmd action_c2 –>|requiere| cloud_account_creation cloud_account_creation –>|proporciona infraestructura para| data_google_sheets cloud_account_creation –>|proporciona infraestructura para| backup_firebase cloud_account_creation –>|proporciona infraestructura para| backup_gcs action_execution –>|usa| action_defense_evasion action_defense_evasion –>|aplica| technique_hidden_fs

Flujo de Ataque

Detecciones

Descarga o carga vía Powershell (via cmdline)

Equipo SOC Prime
29 Ene 2026

Dominio de Microsoft Graph API Resuelto por Proceso Inusual (via dns_query)

Equipo SOC Prime
29 Ene 2026

Archivos Sospechosos en el Perfil de Usuario Público (via file_event)

Equipo SOC Prime
29 Ene 2026

Intento de Ejecución de GNU Wget Sospechoso (via cmdline)

Equipo SOC Prime
29 Ene 2026

Llamada a Métodos Sospechosos de .NET desde Powershell (via powershell)

Equipo SOC Prime
29 Ene 2026

Ejecución Sospechosa desde el Perfil de Usuario Público (via process_creation)

Equipo SOC Prime
29 Ene 2026

Posible Infiltración/Exfiltración de Datos/C2 vía Servicios o Herramientas de Terceros (via dns)

Equipo SOC Prime
29 Ene 2026

Archivos Extraídos Sospechosos de un Archivo Comprimido (via file_event)

Equipo SOC Prime
29 Ene 2026

IOCs (SourceIP) para detectar: Ataques APT que apuntan al gobierno indio usando SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2

Reglas de AI de SOC Prime
29 Ene 2026

IOCs (HashMd5) para detectar: Ataques APT que apuntan al gobierno indio usando SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2

Reglas de AI de SOC Prime
29 Ene 2026

IOCs (DestinationIP) para detectar: Ataques APT que apuntan al gobierno indio usando SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2

Reglas de AI de SOC Prime
29 Ene 2026

IOCs (HashSha1) para detectar: Ataques APT que apuntan al gobierno indio usando SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2

Reglas de AI de SOC Prime
29 Ene 2026

IOCs (HashSha256) para detectar: Ataques APT que apuntan al gobierno indio usando SHEETCREEP, FIREPOWER y MAILCREEP | Parte 2

Reglas de AI de SOC Prime
29 Ene 2026

Detección de Comandos de PowerShell para Despliegue de Puertas Traseras SHEETCREEP y FIREPOWER [Windows Powershell]

Reglas de AI de SOC Prime
29 Ene 2026

Detección de Comunicación C2 de Puertas Traseras SHEETCREEP y FIREPOWER [Conexión de Red de Windows]

Reglas de AI de SOC Prime
29 Ene 2026

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:

    1. 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.
    2. Lanzar PowerShell en modo oculto para cargar el ensamblaje:
      • El atacante ejecuta PowerShell con -WindowStyle Hidden -Command y 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()).
    3. Implementación alternativa de capabilities de fuego mediante LNK:
      • Un .lnk construido ejecuta powershell.exe con --headless -e (script codificado) para buscar y ejecutar una puerta trasera de PowerShell remota.

    Estos pasos coinciden exactamente con las cadenas que la regla Sigma busca, asegurando que se active la alerta.

  • 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
    }