Indicadores de Compromiso (IoC) y eliminación del malware persistente

Latest Comments

No hay comentarios para mostrar.

Tras la limpieza de nuestro sitio WordPress hackeado, identificamos las huellas que dejó el atacante. En este artículo comparto los indicadores de compromiso (IoC) que encontramos y los pasos para eliminar las tareas automáticas maliciosas (cron jobs). Si estás lidiando con una infección similar, esto te ayudará a detectarla y erradicarla.

El diagrama completo del proceso de respuesta a incidentes con IoC y eliminación de malware persistente. Está organizado en cinco fases secuenciales:

Fase 1 – Detección de IoC: agrupa los indicadores por tipo (red, host y conductuales) y los correlaciona en un SIEM/SOAR con inteligencia de amenazas.

Fase 2 – Análisis forense: examina memoria volátil, artefactos de disco (MFT, Prefetch) y tráfico de red (PCAP/C2) para reconstruir el ataque.

Fase 3 – Caza de persistencia: identifica los mecanismos que usa el malware para sobrevivir reinicios: registro (Run keys), tareas y servicios (WMI, Schtasks), DLL hijacking/rootkits y bootkits.

Fase 4 – Contención y erradicación: primero se aísla el host y se bloquean los IoC en el firewall; luego se limpian artefactos, se parchea y, si es necesario, se reimagina el sistema.

Fase 5 – Recuperación y mejora: restauración desde backups validados, actualización de reglas en SIEM/EDR con los nuevos IoC, y documentación de lecciones aprendidas.

Puedes hacer clic en cualquier bloque para profundizar en ese tema.

📡 URLs de los servidores de comando y control (C2)

El malware se comunicaba con estos servidores para recibir instrucciones. No accedas a ellas (las he modificado para inutilizarlas):

text

hxxps://malicioso1[.]xyz/update.php
hxxps://malicioso2[.]net/gate.php
http://panel.c2backup[.]org/control
hxxps://secure.cdn[.]biz/stats.php
http://update.wordpress[.]compatible[.]info/check.php
hxxps://fonts.googleapis[.]com.css[.]pw/css

Propósito de cada una:

URLFunción maliciosa
/update.phpDescarga módulos adicionales (spam, backdoors)
/gate.phpEnvía información del servidor (versiones, plugins)
/controlPanel de control remoto para comandos
/stats.phpReporta estadísticas de infección
/check.phpVerifica si el malware sigue activo
/css (falso CDN)Descarga un web shell camuflado

IPs asociadas (no incluidas por seguridad): rangos de proveedores de hosting baratos y VPS.

🔑 Firmas de ofuscación y detección (para usar con grep o escáneres)

Estas cadenas aparecen en los archivos infectados. Úsalas para buscar:

bash

# Buscar patrones de ofuscación
grep -r "eval(gzinflate(base64_decode" /ruta/de/tu/sitio/
grep -r "eval(gzuncompress(base64_decode" /ruta/de/tu/sitio/
grep -r "str_rot13(base64_decode" /ruta/de/tu/sitio/
grep -r "preg_replace(\"/.*/e\"" /ruta/de/tu/sitio/

Nombres de opciones maliciosas en la base de datos (tabla wp_options):

text

_transient_wp_social_sm_bar_inline
_hdra_core
_wp_auto_update_cache
_cron_reinfect_flag

Nombres de archivos backdoor (comunes):

text

sitemap.php
wp-links-opml.php
shortcodes-for-divi.php
wp-reset.php
error_log.php
xmlrpc2.php
class-wp-hook.php (modificado, dentro de wp-includes)

Firma en .htaccess (redirección de bots):

apache

RewriteCond %{HTTP_USER_AGENT} (bot|crawl|slurp|spider|google|msnbot|yahoo) [NC]
RewriteRule ^.*$ readme.php [L]

Hooks maliciosos en WordPress (buscar en archivos PHP):

php

add_action('wp_loaded', 'malware_reinfect');
add_action('init', 'inject_spam_footer');
add_action('wp_head', 'c2_beacon');
add_filter('cron_schedules', 'add_malware_interval');

🗑️ Cómo eliminar las tareas automáticas (cron jobs) del malware

El malware programa eventos que lo regeneran periódicamente. Sigue estos pasos:

1. Listar los crons actuales

Opción A – Con WP-CLI (recomendado):

bash

wp cron event list --format=table

Opción B – Desde MySQL:

sql

SELECT option_value FROM wp_options WHERE option_name = 'cron';

El valor es un array serializado. Busca eventos con nombres como malware_reinfect_hookcheck_remote_commands o cualquier cosa extraña.

2. Eliminar los crons maliciosos

Con WP-CLI:

bash

wp cron event delete malware_reinfect_hook
wp cron event delete check_remote_commands

Desde MySQL (borra solo la tarea específica – avanzado):
Extrae el array, elimina la entrada, y actualiza. Alternativa rápida (pero borra todos los crons, incluyendo los legítimos):

sql

UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'cron';

⚠️ Luego deberás regenerar los crons normales (por ejemplo, desactivando y reactivando plugins que los usan).

3. Revisar crons del sistema (crontab)

El atacante pudo haber agregado tareas a nivel del servidor:

bash

crontab -l

Si ves líneas ejecutando archivos PHP sospechosos (ej. php /home/usuario/sitemap.php), edita el crontab:

bash

crontab -e

Elimina esas líneas y guarda.

4. Verificar la limpieza

Vuelve a listar los crons y asegúrate de que solo aparezcan tareas legítimas (wp_version_checkwp_update_plugins, etc.).

🛡️ Medidas adicionales

  • Cambia todas las contraseñas (hosting, FTP, base de datos, usuarios WordPress).
  • Actualiza WordPress, plugins y temas a sus últimas versiones.
  • Instala un firewall como Wordfence y ejecuta un escaneo completo.
  • Programa copias de seguridad automáticas en un lugar externo.

📌 Conclusión

Compartir estos indicadores ayuda a la comunidad a detectar y eliminar este malware persistente. Si encuentras alguna de estas señales en tu sitio, ya sabes cómo actuar. La limpieza manual es posible, pero siempre recomiendo hacer una copia de seguridad antes de cualquier modificación.

Comments are closed