En resumen: Un criptominero en el servidor se manifiesta normalmente por una carga de CPU permanentemente alta sin causa reconocible, por procesos ajenos, a menudo bajo el usuario del servidor web, y por conexiones salientes a destinos desconocidos. No termine el proceso con precipitación: asegure primero las huellas, busque los mecanismos que lo reinician y cierre la puerta de entrada. Un minero significa que alguien pudo ejecutar código en su servidor.
Cuando la factura del proveedor cloud es la primera advertencia
A menudo un criptominero no se detecta por una alarma de seguridad, sino de pasada. El sitio web se vuelve lento, el hoster avisa de que se ha superado el tiempo de cálculo, el ventilador del propio centro de datos funciona sin parar o la facturación del proveedor cloud sube sin proyectos nuevos. Para los atacantes, un minero es una forma sencilla de sacar dinero de un servidor comprometido.
Minar significa usar la potencia de cálculo de un sistema ajeno para generar criptomoneda. El daño parece manejable, porque no se cifran datos. Eso engaña: quien puede iniciar un minero también puede leer credenciales, copiar bases de datos y crear otras puertas traseras.
Tras PHP2Shell, la revisión merece especialmente la pena. Las vulnerabilidades CVE-2026-109618 y CVE-2026-109619 permiten la ejecución de código malicioso sin inicio de sesión. No hay indicadores de compromiso confirmados, y un minero no es una señal específica de estas vulnerabilidades. Pero la carga alta por procesos desconocidos figura entre los indicios generales descritos en ¿Ya estoy comprometido?.
Interpretar bien los indicios de un criptominero
La carga alta tiene muchas causas inofensivas. La tabla ayuda en la primera clasificación:
| Observación | Posible explicación inofensiva | Qué revisar |
|---|---|---|
| CPU permanentemente cerca del uso total | copia de seguridad, procesamiento de imágenes, creación de índices | ¿La carga es uniforme también de noche y en fin de semana? |
| Proceso con nombre de servicio del sistema | rara vez | ¿Está el archivo de programa en la ruta del sistema esperada? |
Proceso bajo www-data, apache o nginx que no es PHP |
apenas | ¿Quién lo inició, desde qué carpeta? |
Programa en /tmp, /var/tmp o /dev/shm |
apenas | ¿Desde cuándo existe el archivo, a quién pertenece? |
| Conexión saliente permanente a un destino desconocido | monitorización, actualizaciones | ¿Pertenece el destino a un servicio conocido? |
| La carga baja en cuanto usted inicia sesión | rara vez | Algunos programas maliciosos se detienen cuando hay herramientas de vigilancia en marcha |
Cuantas más filas se cumplan, más probable es un hallazgo. Que el usuario del servidor web inicie programas ajenos ya es en sí una señal de alerta fuerte, como muestra el artículo El servidor web inicia una shell.
Cómo revisar procesos y conexiones
Los siguientes comandos solo leen. Anote el resultado y la hora antes de modificar nada:
# Procesos por consumo de CPU, con usuario, hora de inicio y comando completo
ps -eo pid,ppid,user,lstart,%cpu,%mem,args --sort=-%cpu | head -20
# Archivo de programa y directorio de trabajo de un proceso sospechoso (sustituir PID)
sudo ls -l /proc/PID/exe /proc/PID/cwd
# Conexiones salientes con proceso
sudo ss -tnp state established
# Archivos ejecutables en carpetas temporales
sudo find /tmp /var/tmp /dev/shm -type f -perm -u+x -ls 2>/dev/null
Si /proc/PID/exe apunta a un archivo con el añadido (deleted), el programa se borró tras iniciarse. Es un intento típico de camuflaje. El proceso sigue funcionando y, mientras funcione, el archivo de programa todavía puede asegurarse a través de /proc. Debería encargarse de ello alguien que sepa tratar con software malicioso; no ejecute nunca el archivo.
Cómo repasar procesos de forma sistemática más allá del minero lo describe Encontrar procesos sospechosos en servidores Linux.
Por qué el minero siempre vuelve
Muchos operadores terminan el proceso, se alegran de que baje la carga y al día siguiente comprueban que todo vuelve a empezar. Los mineros se instalan casi siempre con un mecanismo de reinicio. Los lugares típicos son:
- Tareas cron del usuario del servidor web o de todo el sistema, que cada pocos minutos comprueban si el minero está en marcha y, si no, lo descargan de nuevo.
- Servicios del sistema con nombres discretos que arrancan al iniciar.
- Una webshell en el directorio web, mediante la cual el atacante reinicia el minero en cualquier momento.
- Scripts de inicio modificados o archivos de perfil de usuarios.
- Claves SSH ajenas con las que el atacante vuelve a iniciar sesión directamente.
# Tareas cron del usuario del servidor web y entradas de todo el sistema
sudo crontab -u www-data -l
ls -la /etc/cron.d /etc/cron.hourly /var/spool/cron 2>/dev/null
# Unidades de systemd modificadas recientemente
sudo find /etc/systemd/system /lib/systemd/system -name '*.service' -newermt "2026-10-17" -ls
Solo cuando se hayan encontrado todos los mecanismos, el servidor queda tranquilo de forma permanente. Si el atacante tuvo derechos de root, reconstruir sobre un sistema nuevo suele ser más fiable que buscar cada escondite.
El orden correcto tras el hallazgo
Un minero parece una molestia técnica, pero es un incidente de seguridad. Proceda por ello con orden:
- Asegurar: copiar con suma de comprobación la lista de procesos, las conexiones, los archivos sospechosos y los registros antes de terminar nada.
- Contener: aislar el servidor o bloquear las conexiones salientes, si es posible sin pérdida de datos.
- Cerrar la causa: llevar PHP a un nivel corregido (8.5.12, 8.4.27, 8.3.36, 8.2.35 o backport confirmado), reiniciar todos los workers, actualizar CMS y extensiones.
- Limpiar o reconstruir: eliminar el minero, los mecanismos de reinicio y las puertas traseras; en caso de duda, volver a instalar.
- Revisar las consecuencias: ¿pudieron leerse credenciales o datos personales? Entonces, aclarar la protección de datos y, en su caso, las obligaciones de notificación.
Implique pronto a su hoster o proveedor cloud. Muchos proveedores bloquean preventivamente los servidores con carga o tráfico de red llamativos. Quien informa al proveedor y acuerda el procedimiento conserva más fácilmente el control sobre el momento de la desconexión. Pregunte también por los registros de red y de acceso del proveedor, porque están fuera de su servidor y son difíciles de modificar para un atacante.
Para la dirección es importante una clasificación breve y honesta: el minero en sí cuesta sobre todo tiempo de cálculo y rendimiento. Pero la verdadera pregunta es qué más ha visto el atacante. Hasta aclararlo, el incidente no debería darse por cerrado, aunque la carga vuelva a ser normal.
Un criptominero muestra que se ha ejecutado código en su servidor. Trate todas las credenciales que estaban en el servidor como posiblemente filtradas y renuévelas tras la limpieza.
¿Cómo ayuda PHP SOS en concreto?
- Clasificamos la carga y distinguimos entre causas inofensivas y procesos ajenos.
- Aseguramos procesos, archivos y conexiones antes de terminar el minero.
- Buscamos todos los mecanismos de reinicio y puertas traseras y limpiamos el servidor en el marco de la eliminación de malware o lo reconstruimos.
- Cerramos la puerta de entrada, renovamos los accesos y configuramos una vigilancia de carga que avise pronto de patrones inusuales.
Preguntas frecuentes
¿Cómo reconozco un criptominero en mi servidor?
Es típica una carga de CPU permanentemente alta que no encaja con el número de visitantes ni con las tareas programadas. A ello se suman procesos con nombres desconocidos o de apariencia inofensiva, a menudo bajo el usuario del servidor web, y conexiones salientes a direcciones ajenas. Un rasgo aislado todavía no es una prueba.
¿Basta con terminar el proceso de minería?
No. Los mineros suelen reiniciarse una y otra vez mediante tareas cron, servicios del sistema o una webshell. Quien solo termina el proceso lo ve a menudo de nuevo poco después. Además, la puerta de entrada por la que el minero llegó al servidor sigue abierta.
¿Es inofensivo un criptominero porque solo roba potencia de cálculo?
No. Quien pudo instalar un minero pudo ejecutar código en el servidor. Por lo general, también eran accesibles archivos de configuración, credenciales y bases de datos. El minero es el síntoma visible de una intrusión.
¿Qué causas inofensivas tiene una carga alta del servidor?
Copias de seguridad, procesamiento de imágenes, creación de índices de búsqueda, rastreadores agresivos o una extensión defectuosa también pueden consumir mucho tiempo de cálculo. Estas causas suelen poder asignarse a un proceso y a una programación conocidos. Si la carga sigue sin explicación, debería revisarlo con más detalle.