Los ataques APT apuntan al gobierno de India con GOGITTER, GITSHELLPAD y GOSHELL | Parte 1
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Zscaler ThreatLabz descubrió dos campañas: Gopher Strike y Sheet Attack, operadas por un grupo APT vinculado a Pakistán, que apuntan a organizaciones gubernamentales indias. La actividad introduce herramientas basadas en Golang, incluyendo GOGITTER, GITSHELLPAD y GOSHELL, para preparar cargas útiles, usar repositorios privados de GitHub para C2 y, finalmente, desplegar un beacon de Cobalt Strike. El acceso inicial se logra a través de PDFs de spearphishing que atraen a las víctimas a descargar archivos ISO maliciosos. Los operadores aplican múltiples métodos de evasión, incluyendo verificaciones del entorno, relleno de archivos y persistencia de tareas programadas.
Investigación
El análisis mostró que GOGITTER valida la presencia de un script windows_api.vbs, lo crea si está ausente y registra una tarea programada para ejecutarlo cada 50 minutos. GITSHELLPAD utiliza la API REST de GitHub para la recuperación de comandos y extracción de datos, mientras que GOSHELL carga condicionalmente un beacon de Cobalt Strike en etapas solo en ciertos nombres de host. Las herramientas integran URLs y cadenas de agente de usuario codificadas para dificultar el análisis automatizado y el sandboxing. Las campañas también utilizaron repositorios privados de GitHub para alojar cargas útiles de soporte como adobe_update.zip.
Mitigación
Bloquear la ejecución de binarios Golang no confiables/sin firmar y aplicar revisiones y listas de permitidos estrictas para la creación de tareas programadas. Monitorear el tráfico saliente a dominios maliciosos conocidos y a recursos de GitHub usados como C2, incluyendo el uso anómalo de la API de GitHub desde puntos finales no desarrolladores. Fortalecer la seguridad del correo electrónico escaneando adjuntos PDF para detectar ofuscación y bloqueando enlaces que redirigen a descargas de ISO. Las detecciones en el endpoint deben alertar sobre la creación de windows_api.vbs y patrones de ejecución de tareas periódicas consistentes con intervalos de 50 minutos.
Respuesta
Si se detectan IOC, aislar el endpoint, detener y eliminar la tarea programada, y eliminar artefactos maliciosos asociados. Realizar una revisión forense de la actividad de C2 basada en GitHub, preservar registros de ejecución de comandos y eliminar todo contenido exfiltrado o subido donde sea posible. Restablecer credenciales para cuentas afectadas, buscar movimientos laterales y actualizar detecciones con indicadores extraídos para identificar actividad relacionada en todo el entorno.
graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#b3e5fc classDef tool fill:#ffe0b2 classDef malware fill:#ffcccb classDef process fill:#d5f5e3 classDef operator fill:#ff9900 %% Nodes – Attack Steps step1_initial_access[«<b>Técnica</b> – T1204.002 Ejecución por el Usuario: Archivo Malicioso<br/><b>Descripción</b>: El usuario ejecuta un archivo malicioso entregado mediante ingeniería social.<br/><b>Detalle</b>: PDF de spear-phishing que se hace pasar por una actualización de Adobe Acrobat; al hacer clic en un botón falso se descarga un ISO con la carga útil.»] class step1_initial_access technique step2_recon[«<b>Técnica</b> – T1593.003 Búsqueda en Sitios Web/Dominios Abiertos: Repositorios de Código<br/><b>Descripción</b>: El adversario recopila información de sitios públicos de alojamiento de código.<br/><b>Detalle</b>: Los actores de amenazas crean repositorios privados de GitHub que posteriormente alojan C2 y cargas útiles.»] class step2_recon technique step3_exec_vbscript[«<b>Técnica</b> – T1059.005 Intérprete de Comandos y Scripts: Visual Basic<br/><b>Descripción</b>: Ejecuta scripts de Visual Basic para ejecutar comandos.<br/><b>Detalle</b>: GOGITTER descarga windows_api.vbs y lo ejecuta para recuperar más comandos desde un servidor web.»] class step3_exec_vbscript technique step4_exec_cmd[«<b>Técnica</b> – T1059.003 Intérprete de Comandos y Scripts: Consola de Comandos de Windows<br/><b>Descripción</b>: Utiliza la consola de comandos nativa de Windows para la ejecución.<br/><b>Detalle</b>: GITSHELLPAD emite comandos como net user, systeminfo, tasklist y curl.»] class step4_exec_cmd technique step5_persistence[«<b>Técnica</b> – T1053.005 Tarea/Trabajo Programado: Tarea Programada<br/><b>Descripción</b>: Crea una tarea programada para ejecutar código malicioso de forma recurrente.<br/><b>Detalle</b>: GOGITTER programa una tarea llamada MicrosoftEdge_ConfigurationUpdate_<random> que ejecuta el VBScript cada 50 minutos.»] class step5_persistence technique step6_masquerade[«<b>Técnica</b> – T1036.008 Enmascaramiento: Tipo de Archivo Enmascarado y T1036.007 Doble Extensión de Archivo<br/><b>Descripción</b>: Los archivos se nombran para parecer legítimos y ocultar su verdadero tipo.<br/><b>Detalle</b>: Archivos depositados llamados windows_api.vbs, adobe_update.zip, edgehost.exe.»] class step6_masquerade technique step7_obfuscation[«<b>Técnica</b> – T1027.015 Archivos u Información Ofuscados: Compresión<br/><b>Descripción</b>: Utiliza compresión para ocultar cargas útiles maliciosas.<br/><b>Detalle</b>: Cargas útiles empaquetadas en archivos ZIP/RAR alojados en el repositorio privado de GitHub.»] class step7_obfuscation technique step8_account_disc[«<b>Técnica</b> – T1087.001 Descubrimiento de Cuentas: Cuenta Local<br/><b>Descripción</b>: Enumera cuentas de usuario locales en el sistema.<br/><b>Detalle</b>: GITSHELLPAD ejecuta \»net user\» para listar cuentas.»] class step8_account_disc technique step9_network_disc[«<b>Técnica</b> – T1016.001 Descubrimiento de Configuración de Red del Sistema: Descubrimiento de Conectividad a Internet<br/><b>Descripción</b>: Comprueba la conectividad a Internet y los endpoints C2 accesibles.<br/><b>Detalle</b>: Usa curl para probar la conectividad a dominios del atacante.»] class step9_network_disc technique step10_collection[«<b>Técnica</b> – T1560.002 Archivar Datos Recopilados: Archivado mediante Biblioteca<br/><b>Descripción</b>: Comprime los datos recopilados en archivos para su uso posterior.<br/><b>Detalle</b>: Herramientas post-compromiso entregadas como archivos ZIP/RAR.»] class step10_collection technique step11_c2[«<b>Técnica</b> – T1102.001 Servicio Web: Resolutor de Punto Muerto (Dead Drop)<br/><b>Descripción</b>: Se comunica con C2 mediante un servicio web que actúa como dead-drop.<br/><b>Detalle</b>: Utiliza la API REST de GitHub para cargar info.txt y consultar command.txt.»] class step11_c2 technique step12_exfil[«<b>Técnica</b> – T1567.001 Exfiltración por Servicio Web: Exfiltración a Repositorio de Código<br/><b>Descripción</b>: Exfiltra datos cargándolos en un repositorio de código.<br/><b>Detalle</b>: El info.txt recopilado se carga en un repositorio de GitHub controlado por el atacante.»] class step12_exfil technique %% Connections – Attack Flow step1_initial_access –>|conduce_a| step2_recon step2_recon –>|conduce_a| step3_exec_vbscript step3_exec_vbscript –>|conduce_a| step4_exec_cmd step4_exec_cmd –>|conduce_a| step5_persistence step5_persistence –>|conduce_a| step6_masquerade step6_masquerade –>|conduce_a| step7_obfuscation step7_obfuscation –>|conduce_a| step8_account_disc step8_account_disc –>|conduce_a| step9_network_disc step9_network_disc –>|conduce_a| step10_collection step10_collection –>|conduce_a| step11_c2 step11_c2 –>|conduce_a| step12_exfil
Flujo de Ataque
Detecciones
Comunicación de Dominio de Búsqueda de IP Posible Intentada (vía dns)
Ver
Proceso Sospechoso Utiliza una URL en la Línea de Comando (vía cmdline)
Ver
Uso Sospechoso de CURL (vía cmdline)
Ver
Posible Enumeración del Sistema (vía cmdline)
Ver
Posible Enumeración de Cuentas o Grupos (vía cmdline)
Ver
Archivos Extraídos Sospechosos de un Archivo (vía file_event)
Ver
Posible Descubrimiento de Configuración de Red del Sistema (vía cmdline)
Ver
IOC (HashSha1) para detectar: Ataques APT Dirigidos al Gobierno Indio Usando GOGITTER, GITSHELLPAD y GOSHELL | Parte 1
Ver
IOC (HashMd5) para detectar: Ataques APT Dirigidos al Gobierno Indio Usando GOGITTER, GITSHELLPAD y GOSHELL | Parte 1
Ver
IOC (HashSha256) para detectar: Ataques APT Dirigidos al Gobierno Indio Usando GOGITTER, GITSHELLPAD y GOSHELL | Parte 1
Ver
Detección de Backdoor GITSHELLPAD y Comandos de Limpieza [Creación de Procesos en Windows]
Ver
Detección de Descargador GOGITTER y Comunicación C2 [Conexión de Red de Windows]
Ver
Ejecución de Simulación
Pre-requisito: 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 la narrativa DEBEN reflejar directamente los TTPs identificados 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 de Ataque y Comandos:
Un grupo APT despliega el backdoor GITSHELLPAD (edgehost.exe) en un host de Windows comprometido. Para mezclarse con el comportamiento esperado del sistema, el atacante lanza el backdoor a través del shell de comandos de Windows (cmd /c). Después de completar su carga útil (por ejemplo, descargar módulos adicionales), el backdoor realiza una “limpieza” terminando su propio proceso usandotaskkill /F /PID <PID>. Ambas acciones generan eventos de creación de procesos que contienen el nombre del binario y las subcadenas de línea de comando requeridas, cumpliendo con la regla Sigma. -
Script de Prueba de Regresión:
# ------------------------------------------------- # Simular ejecución de backdoor GITSHELLPAD y limpieza # ------------------------------------------------- # 1. Dejar caer un marcador edgehost.exe (cualquier ejecutable benigno) $src = "$env:SystemRootSystem32notepad.exe" $dst = "$env:TEMPedgehost.exe" Copy-Item -Path $src -Destination $dst -Force # 2. Lanzar edgehost.exe vía cmd /c (coincide con el patrón cmd_cmd) $proc = Start-Process -FilePath "cmd.exe" -ArgumentList "/c `"$dst`"" -PassThru # 3. Esperar unos segundos para asegurar que el proceso esté vivo Start-Sleep -Seconds 5 # 4. Limpieza: matar el proceso edgehost.exe usando taskkill (coincide con el patrón taskkill_cmd) $pid = $proc.Id cmd /c "taskkill /F /PID $pid" # 5. Eliminar el archivo dejado caer Remove-Item -Path $dst -Force -
Comandos de Limpieza:
# Asegurar que cualquier instancia residual de edgehost.exe esté terminada Get-Process -Name "edgehost" -ErrorAction SilentlyContinue | Stop-Process -Force # Eliminar el binario temporal si aún está presente $tempPath = "$env:TEMPedgehost.exe" if (Test-Path $tempPath) { Remove-Item $tempPath -Force }