SOC Prime Bias: Crítico

05 Jun 2026 15:40 UTC

C0XMO: Una Nueva Variante de Gafgyt con Propagación Multiplataforma

Author Photo
SOC Prime Team linkedin icon Seguir
C0XMO: Una Nueva Variante de Gafgyt con Propagación Multiplataforma
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

FortiGuard Labs identificó una nueva variante del botnet Gafgyt llamado C0XMO que se propaga explotando una vulnerabilidad de desbordamiento de búfer en enrutadores DD-WRT identificada como CVE-2021-27137. El malware utiliza un escáner separado basado en Python para ampliar las infecciones a través de diferentes arquitecturas de CPU, al mismo tiempo que confía en ataques de credenciales débiles, varias capacidades de DDoS y rutinas para eliminar malware competitivo. Después de la infección, establece persistencia mediante archivos ocultos, trabajos cron y cambios en el perfil del shell antes de comunicarse con su servidor de comando y control. El informe también incluye indicadores y orientación defensiva para organizaciones que operan con dispositivos IoT expuestos.

Investigación

El análisis muestra que C0XMO abusa de CVE-2021-27137 en el servicio UPnP de DD-WRT para obtener acceso inicial, luego recupera un escáner de Python desde 217.160.125.125:15527. Ese escáner lleva a cabo intentos de fuerza bruta de Telnet y SSH, lanza múltiples solicitudes de explotación basadas en HTTP y despliega binarios específicos de arquitectura dependiendo del entorno del objetivo. Se mantiene la persistencia a través de archivos ocultos colocados en ubicaciones como /tmp, /var/tmp, /dev/shm, y directorios de inicio de usuario, junto con entradas de trabajos cron y ediciones de perfil de shell. Luego, el malware se comunica con su infraestructura de C2 en 85.215.131.70 utilizando una secuencia de saludo personalizada.

Mitigación

Las organizaciones deben actualizar el firmware de DD-WRT a una versión posterior al cambio 45723 y aplicar correcciones para todas las CVE relacionadas. Los servicios remotos innecesarios, como UPnP, Telnet y SSH, deben deshabilitarse en dispositivos expuestos a Internet siempre que sea posible. Se deben imponer credenciales fuertes y únicas en todos los dispositivos perimetrales, y los servicios expuestos deben revisarse con regularidad. También deben implementarse detecciones basadas en red para las direcciones IP, puertos y patrones de comandos maliciosos asociados con la campaña.

Respuesta

Los defensores deben monitorear el tráfico saliente en busca de conexiones a la conocida infraestructura de C2 y el puerto de descarga del escáner. Se deben configurar alertas para archivos ocultos nombrados .sys, cambios en cron que se ejecutan cada 15 minutos y ejecución del script del escáner. Las IPs y dominios maliciosos identificados deben ser bloqueados en el firewall, y cualquier dispositivo comprometido debe ser aislado para revisión forense y limpieza completa.

Flujo de Ataque

Ejecución de Simulación

Prerrequisito: La Verificación de Prevuelo de la Telemetría y la 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 y Comandos del Ataque:
    El bot del adversario, ya instalado en el host comprometido a través de la ejecución de servicios (T1546.007), inicia un saludo de C2 con el servidor codificado 217.160.125.125 en el puerto 15527. La conexión utiliza un socket TCP simple para extraer comandos, cumpliendo exactamente con los criterios de la regla. Esta actividad es típica del comportamiento de “phone-home” del botnet C0XMO.

  • Script de Prueba de Regresión:

    # Simulación de comunicación C2 de C0XMO – activa la regla Sigma
    $c2Ip = "217.160.125.125"
    $c2Port = 15527
    
    # Abre una conexión TCP, envía una carga útil mínima, luego cierra
    $client = New-Object System.Net.Sockets.TcpClient
    $client.Connect($c2Ip, $c2Port)
    
    $stream = $client.GetStream()
    $payload = [System.Text.Encoding]::ASCII.GetBytes("PING`n")
    $stream.Write($payload, 0, $payload.Length)
    
    # Espera brevemente para imitar la latencia realista
    Start-Sleep -Seconds 2
    
    $stream.Close()
    $client.Close()
  • Comandos de Limpieza:

    # No se realizaron cambios persistentes; solo asegúrese de que los sockets abiertos estén cerrados
    # (El script ya cierra el socket; esto es una red de seguridad.)
    Get-Process -Name "powershell" | Where-Object { $_.MainWindowTitle -eq "" } | Stop-Process -Force