SOC Prime Bias: Alto

17 Jun 2026 13:03 UTC

Operación Poisson: Desglosando Toda una Operación Cibercriminal

Author Photo
SOC Prime Team linkedin icon Seguir
Operación Poisson: Desglosando Toda una Operación Cibercriminal
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Un actor de amenaza con pocas habilidades conocido como «Poisson» llevó a cabo una campaña de robo de credenciales de múltiples etapas dirigida a individuos franceses y a una pequeña empresa. El atacante utilizó Havoc C2, un keylogger personalizado en Python, y construyó un acceso resiliente a través de OpenSSH y una malla VPN de Tailscale. Esta configuración permitió al operador mantener el acceso incluso después de que se interrumpiera la infraestructura principal de comando y control.

Investigación

Cato CTRL realizó una revisión post-incidente en profundidad cubriendo 33 días de actividad del atacante y 339 comandos registrados. La investigación reveló el uso de servicios de nivel gratuito como Backblaze B2, DuckDNS e IONOS, junto con un diseño de persistencia destinado a sobrevivir a eliminaciones de C2. Los investigadores también recuperaron el libro de jugadas SSH del operador y las claves SSH de las víctimas, que habían sido expuestas por error en un depósito de almacenamiento público.

Mitigación

Los defensores deben generar alertas para el despliegue del servidor OpenSSH en estaciones de trabajo y monitorear la actividad de VPN de Tailscale en sistemas donde no se espera. Las organizaciones también necesitan detectar túneles inversos SSH y rastrear tareas programadas sospechosas ejecutándose con privilegios elevados. Una remediación efectiva debe ir más allá de eliminar el acceso al C2 y debe incluir la eliminación de mecanismos de persistencia basados en mallas VPN.

Respuesta

Cuando se identifique esta actividad, los equipos de seguridad deben localizar e interrumpir inmediatamente cualquier conexión de malla activa de Tailscale o SSH. Los investigadores deben revisar todas las tareas programadas y los accesos directos de inicio para detectar persistencia no autorizada. Se recomienda encarecidamente un restablecimiento completo de credenciales para todos los usuarios, ya que el uso de un keylogger crea una alta probabilidad de compromiso de credenciales.

graph TB %% Definición de clases classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef persistence fill:#99ff99 classDef command_control fill:#ffcc99 %% Ejecución inicial y entrega de carga útil action_stager_exec[«<b>Acción</b> – <b>T1216.002 PowerShell: Intérprete de comandos y scripts</b><br/>El usuario ejecuta el stager VBScript sys.vbs para activar<br/>la ejecución mediante proxy de scripts del sistema.<br/><b>Archivo</b>: sys.vbs»] class action_stager_exec action malware_powershell_payload[«<b>Malware</b> – <b>T1216.002 PowerShell</b><br/>Carga útil de PowerShell descifrada utilizada para<br/>descargar el malware principal.<br/><b>Tipo</b>: Stager/Descargador»] class malware_powershell_payload malware action_download_primary[«<b>Acción</b> – <b>T1105 Transferencia de herramientas de entrada</b><br/>Descarga del implante principal mediante PowerShell.»] class action_download_primary action %% Ofuscación y carga malware_senti_dll[«<b>Malware</b> – <b>Nombre</b>: senti.dll<br/><b>Técnicas</b>: T1027.009 Cargas útiles incrustadas y T1027.015 Compresión<br/>Utiliza codificación matrioska de cinco capas para ocultar<br/>shellcode dentro de palabras en inglés dentro de una DLL .NET.<br/><b>Objetivo</b>: Ejecución sin archivos»] class malware_senti_dll malware %% Escalada de privilegios y persistencia action_uac_bypass[«<b>Acción</b> – <b>T1204 Ejecución del usuario</b><br/>Intento de escalada de privilegios mediante<br/>Start-Process -Verb RunAs para activar avisos UAC.»] class action_uac_bypass action persist_task_admin[«<b>Persistencia</b> – <b>T1053 Tarea programada</b><br/>Creación de TaskAdmin1 para ejecutar el stager<br/>con privilegios máximos durante el inicio de sesión.»] class persist_task_admin persistence persist_startup_lnk[«<b>Persistencia</b> – <b>T1547.001 Ejecución automática al inicio: Claves Registry Run / Carpeta Startup</b><br/>Coloca el acceso directo sys.lnk en la carpeta de inicio.»] class persist_startup_lnk persistence %% Robo de credenciales tool_keylogger[«<b>Herramienta</b> – <b>Nombre</b>: KeyL.zip<br/><b>Técnica</b>: T1056.001 Captura de entrada: Keylogging<br/>Registrador de teclas Python personalizado de 70 líneas<br/>para obtener credenciales bancarias y de correo.»] class tool_keylogger tool %% Comando y Control c2_havoc[«<b>Comando y Control</b> – <b>Nombre</b>: Havoc Framework<br/>Framework principal de gestión C2.»] class c2_havoc command_control tool_rustdesk[«<b>Herramienta</b> – <b>T1219 Software de acceso remoto</b><br/>RustDesk compilado de forma personalizada<br/>instalado como acceso remoto redundante.»] class tool_rustdesk tool %% Persistencia resistente persist_ssh_tailscale[«<b>Persistencia</b> – <b>T1668 Control exclusivo</b><br/>Instala OpenSSH Server y se une a una malla VPN Tailscale<br/>para sobrevivir a la interrupción del C2.»] class persist_ssh_tailscale persistence action_ssh_tunnel[«<b>Acción</b> – <b>T1219.001 Túneles IDE y T1572 Túnel de protocolos</b><br/>Uso del túnel SSH inverso ssh -R para mantener<br/>acceso cifrado directo.»] class action_ssh_tunnel action %% Flujo de conexiones action_stager_exec –>|ejecuta| malware_powershell_payload malware_powershell_payload –>|descarga| action_download_primary action_download_primary –>|carga| malware_senti_dll malware_senti_dll –>|activa| action_uac_bypass action_uac_bypass –>|establece| persist_task_admin action_uac_bypass –>|establece| persist_startup_lnk malware_senti_dll –>|implementa| tool_keylogger malware_senti_dll –>|se_comunica_con| c2_havoc c2_havoc –>|despliega_redundante| tool_rustdesk tool_rustdesk –>|conduce_a| persist_ssh_tailscale persist_ssh_tailscale –>|utiliza| action_ssh_tunnel

Flujo de Ataque

Ejecución de Simulación

Prerequisito: Comprobación Pre-vuelo de Telemetría y Línea Base debe haber pasado.

Justificación: Esta sección detalla la ejecución precisa de la técnica de adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y tienen como objetivo 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: El adversario, simulando al grupo «Poisson», busca establecer un punto de acceso remoto. Primero, preparan una carga creando un archivo llamado thales.zip en un directorio temporal. Para escalar privilegios, ejecutan un comando de PowerShell usando el RunAs verbo, que es un método común para activar las solicitudes de UAC. Finalmente, ejecutan rustdesk.exe para proporcionar un canal secundario de comunicación de escritorio remoto. Esta secuencia imita el patrón de comportamiento específico (elevación de UAC + RustDesk + archivo zip específico) definido en la regla de detección.

  • Guion de Prueba de Regresión:

    # Guion de Simulación: Emulación de TTP Poisson
    
    # 1. Preparar el archivo 'thales.zip' (requerido por la lógica de detección)
    $targetZip = "$env:TEMPthales.zip"
    New-Item -Path $targetZip -ItemType File -Force
    Write-Host "[+] Preparado $targetZip"
    
    # 2. Simular intento de elevación de UAC via PowerShell (requerido por la lógica de detección)
    # Nota: Esto activará una solicitud de UAC en un entorno real.
    Write-Host "[+] Intentando elevación de UAC via Start-Process -Verb RunAs..."
    Start-Process powershell.exe -ArgumentList "-Command Write-Host 'Intento de Elevación'" -Verb RunAs
    
    # 3. Simular ejecución de RustDesk (requerido por la lógica de detección)
    # Crearemos un dummy rustdesk.exe en la carpeta temp para activar la detección sin instalación real
    $rustdeskPath = "$env:TEMPrustdesk.exe"
    New-Item -Path $rustdeskPath -ItemType File -Force
    Write-Host "[+] Ejecutando RustDesk simulado en $rustdeskPath"
    Start-Process $rustdeskPath
  • Comandos de Limpieza:

    # Limpieza de Artefactos de Simulación
    Remove-Item -Path "$env:TEMPthales.zip" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPrustdesk.exe" -Force -ErrorAction SilentlyContinue
    Write-Host "[+] Limpieza completa."