Cómo detectar malware en nuestro sitio web

Cómo detectar malware en nuestro sitio web

Actualmente la mayoría de los sitios webs que hay en la red se basan en algún CMS. El más popular de ellos es WordPress (con aproximadamente un 35% del total). Estos CMS normalmente permiten una gran variedad de plugins, módulos o extensiones que agregan nuevas funcionalidades. Se calcula que aproximadamente un 2% de las vulnerabilidades afectan al core del CMS. El 98% restante corresponde a estos agregados que amplían su funcionalidad y que habitualmente son desarrollados por terceros.

En época de pandemia, se están incrementando los ciberataques. Nuestros sitios web son atacados aprovechando vulnerabilidades conocidas de estos CMS. Existen muchas herramientas para escanear sitios web. No hay más que hacer una búsqueda en Google: Muchas de ellas son online, otras cuentan con versiones de escaneo gratuitas, y otras muchas son de pago.

Ante tal variedad, es muy difícil decidirse por una en concreto. Si bien ninguna de ellas es 100% segura, yo vengo a proponer una solución más manual y artesanal para PHP (aunque se podría adaptar para otros lenguajes de programación), la cual tampoco es infalible. Se basa en localizar los ficheros recientemente modificados y posteriormente buscar en ellos ciertos patrones que suelen usar los hackers en los ficheros que inyectan en nuestros sitios web. Si esto lo realizamos con periodicidad y notificamos a los encargados de gestionar el sitio web nuestros hallazgos, es fácil discernir si hemos sido infectados.

Pautas

Por ejemplo, algunas de las cosas que nos pueden hacer sospechar que hay algo extraño en nuestros ficheros, son las siguientes:

  • Ficheros index.php anormalmente grandes, normalmente suelen contener unas pocas líneas.
  • Uso de ciertas funciones que suelen usar los hackers para conseguir sus objetivos: shell_exec, system, stream_socket_client, str_rot13, gzinflate, system, passthru, eval, base64_decode, preg_replace…
  • Cadenas hacked, hacker o hack, suelen dejar mensajes atribuyéndose el mérito de la intrusión.
  • Otras cadenas sospechosas: paypal, @mail, @copy, @set_time_limit, shell, move_uploaded_file, chr…

Con todo esto, podemos crear un script que nos localice todos los ficheros con extensión .php modificados en los últimos dos días. En ellos, buscaremos lo que hemos indicado anteriormente y volcaremos el resultado en un fichero individualizado:

El resultado de la búsqueda aparecerá en el directorio /tmp/escaneo_diario/, donde se crearán los ficheros con cada uno de los resultados encontrados:

En el fichero 20201228_php_modificados.txt, encontraremos todos los ficheros .php modificados en los últimos dos días. Luego, tenemos un fichero por cada una de las cadenas que buscamos, donde aparecerá la ruta del fichero que contiene la cadena y la línea donde aparece. Un ejemplo del contenido de esto archivos sería:

Podemos automatizar una tarea que se ejecute diariamente, y que además nos notifique por mail si se han modificado ficheros y se han encontrado cadenas sospechosas, adjuntando los ficheros con los detalles:

Debemos tener la funcionalidad mailx, para poder enviar correos (aunque podemos usar cualquier otra). Para ello, configuramos en /etc/mail.rc, la cuenta de correo desde la que enviar, agregando al final de dicho fichero las siguientes líneas:


Tan solo nos queda agregar línea en cron, para que se ejecute diariamente el script y recibamos notificaciones de las posibles infecciones.

El script se puede adaptar y/o modificar según nuestras necesidades o para otros lenguajes de programación. Lo que está claro es que si el encargado de la web recibe uno de estos mails y no ha sido él el que ha modificado los ficheros, ¡¡hay bichito encerrado!!

Otra aspecto muy importante es tener copias de seguridad recientes, para en caso de duda consultarlas, y si es necesario, restaurarlas si efectivamente se detecta infección. Aunque lo más importante es tenerlo todo actualizado. De esta forma, las vulnerabilidades conocidas estarán parcheadas y no seremos una víctima fácil para los ciberdelincuentes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *