Investigadores de XLab, el laboratorio de QiAnXin, descubrieron cwpdoor, una puerta trasera escondida en el servidor web de Control Web Panel (CWP). CWP es un panel gratuito para administrar servidores de alojamiento Linux, muy usado por proveedores de hosting y empresas con servidores propios. El riesgo es alto porque el atacante ejecuta comandos de forma remota y esas peticiones no quedan en los registros de acceso.
El backdoor es el propio binario cwpsrv, recompilado con código adicional. Funciona como el programa legítimo hasta que recibe una petición con una marca de tiempo y una firma válidas. Esos datos viajan en cabeceras HTTP personalizadas cuyo nombre empieza por X-Ngx-Integrity. En ese momento, el servidor ejecuta el comando incluido en la petición. Además, el instalador restaura las fechas originales del archivo, de modo que herramientas como ls y stat lo muestran sin cambios. Al momento del análisis, ningún motor de VirusTotal lo detectaba (0 de 63).
El alcance tiene límites claros. Instalar cwpdoor exige acceso root, es decir, el atacante ya controla el servidor; los investigadores aún no saben cómo obtienen ese acceso. El instalador, un script que se hace pasar por una actualización, solo funciona con cwpsrv 1.15.10 y 1.24.0. XLab lo capturó el 29 de junio. El 30 de septiembre alguien subió desde Brasil un archivo con una copia del backdoor, lo que indica víctimas reales, aunque no hay cifras de servidores infectados. Ese mismo archivo contenía Ebury, una puerta trasera para OpenSSH que roba credenciales y está activa desde 2009. No se sabe si ambas amenazas están relacionadas.
Para revisar un servidor, XLab propone tres comprobaciones:
- Socket: ejecutar
ss -axp | grep integrity. Si aparecengx_http_integrity_helper, el socket Unix que usa el backdoor, hay infección. En el ejemplo de los investigadores, esta prueba lo detectó aunque los puertos abiertos parecían normales. - Procesos: ejecutar
ps aux | grep cwpsrvy buscar procesos auxiliares inesperados lanzados por cwpsrv. - Archivo: ejecutar
strings /usr/local/cwpsrv/bin/cwpsrv | grep X-Ngx-Integrityy buscar los nombres de las cabeceras.
Los indicadores de compromiso publicados son los hashes MD5 e505d4ffa21cf494a5dc2d7c8f4f1236 (instalador cwpsrv_update.sh), 965aea67fb40de1bab5169ada993349f (cwpsrv 1.15.10 alterado) y d3f4e95113d49ab3991b45e457bda75b (cwpsrv 1.24.0 alterado). También la IP de descarga 136.0.141[.]71 y sus rutas /static/cwpsrv_update.sh, /static/cwpsrv_1.15.10 y /static/cwpsrv_1.24.0. Conviene bloquear esa IP en el firewall y buscarla en los registros históricos.
Si el servidor está infectado, los pasos recomendados son: restaurar el cwpsrv original desde la copia que crea el instalador en /usr/local/cwpsrv/bin, con nombre que empieza por cwpsrv.prev- (puede no existir, porque el instalador la borra tras un reemplazo exitoso); actualizar CWP a la última versión y confirmar que ss -axp | grep integrity no devuelve nada; y cambiar todas las credenciales del panel. Como el backdoor ejecuta cualquier comando, todo el servidor debe tratarse como comprometido y revisarse en busca de otras amenazas, incluida Ebury. El análisis técnico de XLab amplía los detalles.
Qué significa para tu empresa: si tu sitio web, tu correo o tus aplicaciones corren sobre servidores Linux con CWP, propios o de un proveedor, pide esta semana que se ejecuten las tres comprobaciones y se busquen los indicadores. Este caso muestra que un servidor puede verse sano en archivos, puertos y registros mientras obedece a un atacante. Por eso, en Ingeniería Telemática recomendamos sumar un SOC con monitoreo 24/7 y protección EDR en servidores, que detecta comportamientos anómalos de procesos aunque el antivirus no reconozca el archivo.
Fuente original: The Hacker News — ver artículo →