Detectar, corregir y prevenir virus y malware en mi sitio web

malwareTP-680x400

Introducción

El problema con los virus y malware en general en tu sitio web va más allá de la clara afectación a tus usuarios, la detección de un sitio web infectado(intencionalmente o no) con algún tipo de publicidad engañosa, sitios de phishing, virus, spyware, etc. es uno de los principales factores por las que fuentes de tráfico como Google o Facebook pueden llegar a penalizarte y empezar a desaparecerte gradual o inmediatamente de sus resultados de búsqueda o enlaces. Una vez tachado como un sitio “no seguro” es muy difícil recuperarse.

Por ello la importancia de estar informado sobre este tema y así prevenir y/o detectar oportunamente este tipo de afectaciones.

¿Cómo saber si mi sitio se contagió?

Olvidándonos de esas veces en que es muy evidente que te hackearon el sitio, por ejemplo, tienes un mensaje de un grupo de hackers de color negro y letras rojas con una canción de rock pesado de fondo, a veces no es tan fácil estar seguro si tienes un virus (o cualquier otro código malicioso).

A continuación los síntomas principales:

Síntomas

  • Publicidad que no reconoces: Esta es una de las señales más evidentes de que tienes algún tipo de virus, sin embargo se me han presentado varias ocasiones en que la publicidad no tiene que ver con el sitio sino con un virus en la computadora del usuario que se encarga de “inyectar” publicidad en cualquier sitio, lo mejor será hacer la prueba en distintas computadoras, si solo te pasa a ti el del problema probablemente sea tu computadora y no tu página.
  • Redirecciones: Es decir, que entras al sitio web y te reenvía a otro sitio distinto del tuyo.
  • Alertas del navegador, antivirus o la fuente de tráfico(ej: Facebook o Google): Algunos navegadores y antivirus tienen integrados filtros antispam y antivirus que alertan a los usuarios de sitios que se han marcado en una lista negra como no seguros o detectan ciertas partes en el código de la página que se consideran maliciosas, fuentes de trafico como Google y Facebook manejan también este tipo de listas negras para proteger a sus usuarios. Si eres víctima de estas alertas es probable que lleves con virus bastante tiempo.
  • Cambios importantes en el comportamiento de tus visitas: Por ejemplo que hay una disminución notoria en tus visitas o en el tiempo en que dedican al sitio, esto porque no pueden ingresar o sufren algún síntoma de los que mencionamos arriba, cabe mencionar que este síntoma no es un indicativo seguro ya que puede haber otras razones para que esto pase como que el servidor de la página se caiga, lo cual es más común que el virus.

Otras formas de monitorear virus

También existen otras formas para detectar oportunamente cualquier incidencia de este tipo:

  • Google Webmaster Tools: Esta herramienta es muy útil ya que además de tener otras tantas ventajas te alertará oportunamente si se detectan problemas de seguridad en tu sitio, además es una herramienta necesaria para avisar a Google que esto se ha corregido si es el caso.
  • Bing Webmaster Tools: Lo equivalente de Google Webmaster Tools pero de parte de Yahoo/Bing, vale la pena también implementarla para tener una segunda opinión.
  • Herramientas en línea para monitorear tu sitio: Existen gran cantidad de herramientas para monitorear tu sitio, basta con googlear un poco, existe tanto herramientas gratuitas como de paga, algunas de las gratuitas son:
  • Herramientas para verificar la reputación de un sitio web: Este tipo de herramientas guardan un registro de sitios detectados como inseguros, algunos ejemplos son:

¿Cómo se contagió mi sitio y qué hacer al respecto?

Es difícil dar una respuesta exacta ya que existen cientos de formas para quedar infectado pero trataré de listar las más comunes:

1. Contraseñas comprometidas o inseguras

Tal vez parecerá cliché pero una contraseña comprometida o insegura sigue siendo el punto más débil de cualquier sitio web ya que una vez que el atacante tiene tus contraseñas puede facilmente subir cualquier tipo de código malicioso. Las 4 formas más comunes(de más a menos) en que la contraseña queda comprometida son las siguientes:

  • Una contraseña débil: Es decir utilizar contraseñas fáciles de adivinar como tu fecha de nacimiento, nombre de tu mascota o contraseñas comunes como: “password”, “abc123”, “123456”.
    Solución: Utiliza contraseñas seguras, con números, signos de puntuación, etc. existen algunos programas para almacenar y generar contraseñas aleatoriamente de forma segura, personalmente a mi me gusta 1Password.
  • No cuidar tu contraseña: En muchas ocasiones la gente envía su contraseña por mensaje, por correo, la anota en un post-it, etc., por otro lado acostumbran a utilizar la misma contraseña para literalmente todo lo que por simple estadística la vuelve más débil, por ejemplo, será difícil que un hacker entre al servidor de Gmail y obtenga tu contraseña pero quizá no sea tan difícil hackear el sistema de tu oficina y así poder ingresar a todo lo demás, incluyendo, por ejemplo, tu cuenta de correo, tu facebook y por supuesto: tu sitio web.
    Solución: evita las malas prácticas listadas arriba(enviar contraseñas por mensaje, escribirlas en un papel, utilizar la misma contraseña para todo, etc.) pero sobretodo actualiza constantemente tu contraseña.
  • Monitorear el tráfico de tu red: Por medio de una serie de herramientas(muchas de ellas gratuitas), una persona conectada en la misma red de internet que tú, es decir, la red de tu casa, de la oficina, del Starbucks, etc., puede monitorear todo lo que haces, incluyendo los datos de usuario/contraseña de gran parte de los sitios web.
    Solución: Si estás en una red pública evita ingresar a sitios que no certifiquen el cifrado de datos, es decir que la información viaja segura y por lo mismo no puede ser monitoreada. Para saber si un sitio es seguro fíjate en la barra de direcciones en parte superior del navegador, este debe de tener un candado o alguna referencia a que usa https, es decir, es un servidor seguro. En los navegadores principales se ve de esta manera:
    Safari:

    Firefox:

    Google Chrome:

    Internet Explorer:

    El ejemplo que ponemos es Facebook que es un sitio importante, sin embargo generalmente los sitios web personales y de empresas no tiene este tipo de protección por lo que si no tienen la posibilidad inmediata de obtener un certificado de seguridad para utilizar https traten de ingresar a estos sitios solo desde zonas seguras o si nadie tiene acceso a su computadora guardar su sesión para evitar utilizar la contraseña menos seguido.

2. Plataformas para crear sitios web y/o plugins desactualizados

Esta es, en mi experiencia personal, la segunda causa principal. Con la cantidad de herramientas abiertas para desarrollar tiendas en línea, blogs, sitios web administrables, etc. cualquiera con pocos o escasos conocimientos de programación y mucho menos de seguridad puede tener un sitio web en minutos sin saber realmente lo que esta haciendo y al ser estas herramientas utilizadas en ocasiones por millones de personas(como WordPress que es la más común) es más probable que se vuelvan el objetivo de los hackers.

Las herramientas más conocidas como WordPress, Joomla, etc. tienen empresas y/o organizaciones detrás que mantienen sus aplicaciones con realmente pocos problemas de seguridad sin embargo estas aplicaciones utilizan plugins de terceros para resolver problemas específicos (vender en línea, cargar archivos, conectar con otras aplicaciones, etc. etc.) el problema de estos plugins es que no cuentan con un respaldo tan grande y aunque se actualizan en mayor o menor medida los adminsitradores del sitio tienden a ignorarlo por lo que se vuelven un importante problema de seguridad.

¿Cómo evitar ser víctima de este tipo de ataques?

  • Si vas a utilizar una plataforma para crear tu sitio web utiliza una reconocida, estas son más seguras, se actualizan con regularidad y al tener una comunidad más fuerte resuelven los problemas más rapidamente.
  • Mantén siempre actualizada la plataforma que usas para montar tu sitio web y en especial los plugins/extensiones que utilices que son la principal debilidad de estas aplicaciones.
  • No instales plugins a menos que los necesites realmente y en ese caso, como si compraras algo en línea, revisa las descargas, reviews de los usuarios, etc., un plugin con muchas descargas y una calificación positiva es más tendiente de estar mejor realizado, sin embargo esto no es garantía de ninguna forma, será cosa de analizar el riesgo/beneficio.
  • Si ya no estás utilizando una de estas extensiones/plugins borralas por completo, solo desactivarlas a veces no es suficiente.

3. Desarrollos inseguros

Muchos sitios web desarrollados desde cero no integran buenas prácticas de seguridad, ya sea por omisión o por ignorancia, hablar de estos temas puede dar pie a escribir libros enteros por lo que no listaremos todos ni profundamente pero si me gustaría mencionar los 2 principales:

SQL Injection: Por medio de una serie de técnicas que consisten en alterar la obtención de información, el hacker aprovecha las debilidades de los sistemas para obtener, modificar o eliminar información de un sitio con contenido dinámico que se obtiene de una base de datos. Esto se resuelve básicamente filtrando y validando los datos en las consultas a la base de datos del sitio web, si no eres el programador del sitio verifica que el mismo haya tomado estas medidas.

XSS (Cross Site Scripting): Es en cierta medida es parecido al SQL Injection solo que en vez de alterar el contenido de una base de datos altera directamente contenido del sitio obtenido dinámicamente, sobretodo por medio de “inyectar” código JavaScript, esta afectación generalmente no es permanente sino que se produce al ingresar a un enlace específico. La solución, al igual que el SQL Injection consiste en filtrar y validar toda la información obtenida dinámicamente.

Protegerse de ambos métodos es evidentemente trabajo del programador del sitio, sin embargo aunque se tomen las medidas de seguridad se pueden escapar algunos agujeros de seguridad, la forma más común de detectar si somos víctimas de una vulnerabilidad de este tipo es activando los logs del servidor en el sitio web y verificando “las peticiones” para tratar de detectar una que no se reconozca.

4. Trabajo interno

Casi ninguno de los artículos que hablan sobre el tema lo mencionan pero debido a que me he dado cuenta que es bastante común me pareció importante mencionarlo:

Más de la mitad de los sitios con contenido maliciosos tienen por objetivo dar algún beneficio al usuario que realiza el ataque, generar tráfico a su sitio, poner spam con publicidad, etc. muchas veces esto puede ser realizado por alguna persona interna que tiene algún tipo de acceso al sitio por lo que siempre vale la pena evaluar ¿Habrá alguien con acceso a mi sitio web que podría beneficiarse al poner cualquier contenido malicioso en mi sitio?, si la respuesta es positiva y has tomado todas las medidas de seguridad listadas en este artículo, quizá haya que investigar por ahi. (Como dato: las principales razones para atacar un sitio que no tienen que ver con un beneficio directo son: protestas, golpear a la competencia, el reto intelectual y aunque parezca difícil de creer: las simples ganas de molestar).

Una forma de prevenir este tipo de “trabajos internos” es utilizando cuentas de usuario separadas con permisos limitados y en la medida de lo posible utilizar logs para revisar los movimientos que haga cada usuario.

Parece ser que ya estoy infectado ¿Ahora qué hago?

Al haber gran cantidad de virus y de casos es imposible darles una solución exacta que aplique para todos los casos, sin embargo haré lo posible por orientarlos un poco en la solución(lo más probable es que se requieran conocimientos técnicos):

Paso 1: Ataca las principales causas

Más arriba listamos las principales causas del problema por lo que antes de cualquier cosa lo mejor será solucionarlas, no querrás volver a ser víctima. Borra los plugins que no uses, herramientas que hayas instalado que no sean tan confiables y actualiza todo lo demás. Por otro lado cambia TODAS las contraseñas, borra los usuarios que sobren, etc.

Paso 2: Encuentra y elimina el código malicioso

Si el problema tienen que ver con publicidad indeseada o redirecciones a otros sitios, una forma común de lograrlo es conocida como “iframe attack”, el “iframe” llama a otras páginas “dentro de la tuya” generalmente de forma invisible, lo más común es integrarlo en la página de inicio (index.html, index.php. etc.), para encontrarlo hay que revisar el código fuente y buscar un código entre las etiqueta “<iframe”  y “</iframe>”, cabe mencionar que si estas integrando contenido como videos de youtube o tu lista de fans en Facebook estos se integran por el mismo método(para que no vayas a confundirlos con el virus). Si el ataque esta más elaborado, el hacker, para dificultar la detección, no escribirá directo el código dentro del sitio, sino que lo insertará “dinámicamente” por medio de JavaScript. Para detectar esto será necesario conocimientos del lenguaje en cuestión, en un artículo futuro trataremos de listar los métodos más comunes.

Algunos otros virus esconden una aplicación en la carpeta más escondida que encuentran y utilizan nombres que dan la apariencia de ser seguros como “images.php” o “app.php” algunos virus se pueden esconder en archivos que podrían bien ser imágenes(o cualquier otro tipo de archivo), ejemplo: “image.jpg”, este tipo de virus son difíciles de reconocer, la mejor forma de detectarlos es ingresar al servidor por medio de un programa FTP y ver la fecha de modificación de los archivos y carpetas, generalmente las páginas no se modifican tanto por lo que un archivo modificado(o creado) recientemente (o cercano a la fecha en que te hackearon) puede ayudarte a disminuir los archivos que habrá que revisar para tratar de detectar contenido malicioso.

Para ambos casos si se detecta un archivo que no reconoces es necesario eliminarlo inmediatamente(de preferencia respalda antes y ve que lo haga alguien cono conocimientos de programación), la fecha en que se creó/modificó el virus dará pistas de cuando te hackearon.

Conclusión

El tema de seguridad en los sitios web es muy extenso, trataré con el tiempo extender más cada tema pero me parece que esta es una buena guía para empezar. Si tienes alguna duda u opinión utilizá la sección de comentarios, con gusto responderé personalmente todas las que salgan :).

         

Sobre el autor Ver todos los artículos Sitio web del autor

Alfonso Bribiesca

Alfonso Bribiesca

Ingeniero, soñador, emprendedor, geek, prolife y eterno estudiante. Creo que todo en la vida sigue un patrón. Fundador de @vexilo, @wizache y @rubiqom

Leave a Reply

Tu correo no será publicado. Los campos requeridos estan marcados con *