Dentro de Pay2Key: Análisis Técnico de una Variante de Ransomware en Linux
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Pay2Key es una operación de ransomware atribuida a Irán que introdujo una variante para Linux a finales de agosto de 2025. El malware se ejecuta con privilegios de root, desactiva las protecciones de seguridad y cifra archivos con ChaCha20. Su comportamiento está impulsado por un archivo de configuración y admite modos de cifrado completo y parcial. El análisis enfatiza las técnicas del operador y la creciente necesidad de defensas contra ransomware específicas para Linux.
Investigación
Morphisec Threat Labs realizó una revisión de ingeniería inversa de la muestra de Pay2Key para Linux. Los investigadores documentaron la validación de privilegios, el análisis del archivo JSON de configuración, el descubrimiento de sistemas de archivos a través de /proc/mounts, la terminación de servicios, la desactivación de SELinux y AppArmor, la persistencia basada en cron y el cifrado ChaCha20 con claves por archivo almacenadas dentro de un bloque de metadatos ofuscado. La muestra no mostró evidencia de tráfico C2 de red o exfiltración de datos.
Mitigación
El informe aconseja desplegar herramientas antiransomware específicas para Linux que puedan detener la ejecución antes de que comience el cifrado, admitir la defensa de objetivo en movimiento y mantener las protecciones de integridad en tiempo de ejecución. También se recomienda reducir la superficie de ataque desactivando servicios innecesarios y fortaleciendo las políticas de SELinux/AppArmor. La protección de endpoint que rastrea la actividad anormal de procesos con privilegios puede mejorar aún más la resiliencia.
Respuesta
Si se detecta Pay2Key, aísle el sistema, detenga el proceso malicioso y elimine la entrada de persistencia en cron. Confirme que los permisos de los archivos estén intactos y recupere los datos cifrados de las copias de seguridad. Luego, una investigación forense debería capturar los IOC relevantes y verificar el entorno más amplio para detectar actividad relacionada.
"graph TB %% Class definitions classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Nodes representing each ATT&CK technique persistence_cron["<b>Técnica</b> – <b>T1053.003 Tarea/Trabajo Programado: Cron</b><br/>Crea o modifica un trabajo cron para asegurar la ejecución después del reinicio del sistema"] class persistence_cron technique defense_impair["<b>Técnica</b> – <b>T1562 Deterioro de Defensas</b><br/>Desactiva SELinux y AppArmor para debilitar los mecanismos de protección del host"] class defense_impair technique indicator_removal["<b>Técnica</b> – <b>T1027.005 Eliminación de Indicadores de Herramientas</b><br/>Elimina indicadores de herramientas de seguridad para evadir la detección"] class indicator_removal technique discovery_mounts["<b>Técnica</b> – <b>T1083 Descubrimiento de Archivos y Directorios</b><br/>Lee /proc/mounts, filtra sistemas de archivos pseudo y clasifica los montajes para la selección de objetivos"] class discovery_mounts technique obfuscation_storage["<b>Técnica</b> – <b>T1027 Archivos o Información Ofuscada</b><br/>Almacena metadatos de cifrado usando una cadena codificada y ofusca la carga útil"] class obfuscation_storage technique deobfuscate["<b>Técnica</b> – <b>T1140 Desofuscar/Decodificar Archivos o Información</b><br/>Decodifica la carga útil ofuscada durante el procesamiento"] class deobfuscate technique impact_encryption["<b>Técnica</b> – <b>T1486 Datos Cifrados para Impacto</b><br/>Genera claves ChaCha20 por archivo y cifra datos, produciendo archivos con demanda de rescate"] class impact_encryption technique %% Flow connections persistence_cron –>|leads_to| defense_impair defense_impair –>|leads_to| indicator_removal indicator_removal –>|leads_to| discovery_mounts discovery_mounts –>|leads_to| obfuscation_storage obfuscation_storage –>|leads_to| deobfuscate deobfuscate –>|leads_to| impact_encryption "
Flujo de Ataque
Ejecución de Simulación
Prerrequisito: La Verificación 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.
-
Narrativa del Ataque & Comandos:
El atacante simulado ya ha obtenido un punto de apoyo en el host Linux y desea preparar el entorno para el despliegue del ransomware. Primero verifican que están operando con privilegios de root, luego desactivan deliberadamente los controles de seguridad y detienen servicios críticos para evitar interrupciones durante el cifrado. El atacante evita crear una entrada cron durante esta fase para satisfacer la cláusula de negación de la regla.
- Verificación de Privilegios – El atacante ejecuta
id -uy busca UID 0, que aparece en la línea de comandos como “root”. - Interrupción de Servicio – Usando
systemctl stopel atacante detiene elsshservicio para evitar la interferencia remota. - Disrupción de Procesos – El atacante mata un proceso en segundo plano de baja prioridad (
sleep 300 &) para ilustrar el patrón dekill. - Desactivación de Defensas – SELinux se establece en permisivo (
setenforce 0) y AppArmor se desactiva (aa-disable).
Estos pasos producen
eventos execveque satisfacenselección1(contienen “root”) yselección2/selección3(contienen comandos de detener/matar o desactivar) mientras que se omitecrontab, lo que activa la regla Sigma. - Verificación de Privilegios – El atacante ejecuta
-
Script de Prueba de Regresión:
#!/usr/bin/env bash set -e echo "[*] Paso 1 – Verifique los privilegios de root (contiene 'root')" id -u | grep ^0 && echo "privilegio de root confirmado" echo "[*] Paso 2 – Detenga un servicio (systemctl stop sshd)" sudo systemctl stop sshd || true echo "[*] Paso 3 – Generar y matar un proceso de prueba" sleep 300 & DUMMY_PID=$! sudo kill -9 $DUMMY_PID || true echo "[*] Paso 4 – Desactivar SELinux y AppArmor" sudo setenforce 0 || true sudo aa-disable || true echo "[+] Simulación completa – la detección debería haber activado." -
Comandos de Limpieza:
#!/usr/bin/env bash set -e echo "[*] Restaurando servicios" sudo systemctl start sshd || true echo "[*] Rehabilitando SELinux (haciendo cumplir) y AppArmor" sudo setenforce 1 || true sudo aa-enable || true echo "[*] Asegurándose de que no queden procesos itinerantes" pkill -f "sleep 300" || true echo "[+] Limpieza terminada."