Determinar cómo fue hackeado tu sitio

Generalidades

Si no te sientes cómodo arreglando tu sitio de WordPress por tu cuenta, puedes solicitar una Reparación de Sitio Hackeado (el servicio profesional de eliminación de malware de DreamHost). Por una tarifa única de $199 USD, los expertos de DreamHost accederán a tu cuenta y realizarán las reparaciones necesarias para que vuelvas a estar en línea rápidamente. Por favor Contacta Soporte si deseas explorar esta opción.

El primer paso para que todo vuelva a la normalidad es determinar cómo se hackeo la cuenta. En general, casi todos los ataques ocurren a través de tres métodos clasificados en orden de probabilidad:

  1. Una vulnerabilidad CGI en el software que has subido a tu sitio web ha sido aprovechada y utilizada para escribir/ejecutar código arbitrario en el servidor.
  2. Tu contraseña FTP/SSH ha sido comprometido.
  3. Tienes permisos de directorio de escritura mundial en carpetas accesibles desde la web.

Quizás de manera contraria a la intuición, los hackeos CGI son más comunes que los hackeos de contraseñas FTP/SSH principalmente debido a la gran proliferación de software preempaquetado que las personas configuran y luego olvidan actualizar con frecuencia. Sin embargo, los hackeos de FTP/SSH son los más fáciles de verificar. Los ataques a carpetas de escritura mundial son posibles cuando el atacante se encuentra en la misma máquina que tu cuenta. Con permisos de escritura mundial (o=w), cualquier persona con una cuenta en la máquina de alojamiento puede colocar archivos allí.

Buscar hackeos FTP/SSH

Dado que los ataques recientes de FTP/SSH son más fáciles de detectar, comienza por eliminar esta opción. Inicia sesión en tu usuario a través de SSH y ejecuta los siguientes comandos.

Te muestra tu historial de inicio de sesión del mes actual:

[server]$ last -i | grep youruser

Muestra tu historial de inicio de sesión del mes anterior:

[server]$ last -if /var/log/wtmp.1 | grep youruser

Los nombres de usuario impresos por last se truncan después de 8 caracteres, por lo que si tienes un nombre de usuario más largo, también querrás truncar el tuyo en la cadena grep.

La salida se ve como esto:

youruser pts/4        99.139.XXX.XXX   Wed May 28 06:10 - 07:11  (01:00)    
youruser pts/5        66.33.XXX.XXX    Sun May 25 09:31 - 12:14  (02:42)    
youruser ftpd30715    66.33.XXX.XXX    Wed May 21 14:16 - 14:16  (00:00)    
youruser pts/2        66.33.XXX.XXX    Tue May 20 13:22 - 14:18  (00:56)    
youruser pts/2        66.33.XXX.XXX    Tue May 20 13:06 - 13:22  (00:15)    

Puedes simplificar estos datos para imprimir solo direcciones IP y recuentos agregando pipes a unos pocos comandos simples:

[server]$ last -if /var/log/wtmp.1 | grep youruser | awk '{print $3}' | sort | uniq -c

La salida se ve más como esto:

4 66.33.XXX.XXX
1 99.139.XXX.XXX

Puedes encontrar cualquier método útil para determinar quién ha iniciado sesión en tu usuario de FTP/SSH.

Los registros de wtmp solo se remontan como máximo de 1 a 2 meses, por lo que si el hackeo es más antiguo que eso, DreamHost no tendrá ningún registro de él.

Si has determinado que FTP/SSH es la fuente del hackeo, deberías:

  1. Cambia tu contraseña. Visita el artículo Cambiar contraseña para obtener más detalles.
  2. Deja de usar FTP, la cual envía tu contraseña a través de Internet en texto sin formato, y luego cambia a SFTP o SSH. Puedes desactivar FTP para la cuenta en el panel de control en la misma página en la que cambiaste tu contraseña.
  3. Asegúrate de que haya un escaneo de virus/malware actualizado en cualquier computadora en la que hayas utilizado la contraseña/usuario en cuestión.

Buscar por hackeos de CGI

Revisa tus registros en una fecha específica

Si es posible, comienza por tratar de determinar cuándo ocurrió el ataque. Esto a menudo se puede determinar anotando la fecha de modificación de cualquier archivo que haya sido modificado por el hacker informático. Por lo general, todos compartirán una hora de modificación común. Si se puede determinar ese tiempo, verifica los registros de ese día y hora para ver lo que se solicitó o publicó en tu sitio.

Un examen cuidadoso de tus archivos de registro a menudo revela exactamente cómo fue hackeado tu sitio. Cada solicitud y publicación en tu sitio se registra y el usuario no puede cambiar los archivos de registro, por lo que el registro del ataque se conserva siempre que el hackeo se descubra dentro de los 30 días aproximadamente que se registran en los registros.

Revisar todos tus registros

Si no se puede determinar la hora original, los archivos de registro se pueden escanear en masa, aunque es más difícil descubrir la evidencia de la intrusión. Puedes ejecutar el siguiente comando en tu servidor web después de iniciar sesión a través de SSH:

[server]$ gunzip -c ~/logs/example.com/http/access.log.* | gawk '{a[$7]++}END{for (i in a) {print a[i]"\t"i}}' | sort -n | more

Esto devuelve un informe de todas las solicitudes a su sitio de todos los registros disponibles ordenados en orden ascendente. Dado que la mayoría de las solicitudes deberían (con suerte) ser legítimas, es más fácil comenzar mirando en la parte superior del informe — las solicitudes menos frecuentes — en busca de evidencia del hackeo:

No es raro ver muchas solicitudes que no deberían estar allí, ya que esta es la naturaleza de un sitio web, ya que es de acceso público. Estas solicitudes no indican, en sí mismas, una infracción, pero deben investigarse para ver si la solicitud reveló con éxito una vulnerabilidad.

Ver directorios de escritura mundial

Los directorios de escritura mundial permiten la escritura de archivos por cualquier usuario en la máquina, y estos directorios pueden escanearse en masa. Se recomienda que realices este paso siempre que sospeches de una infracción.

Incluso si estás seguro de que no cometiste ningún error de permiso, algunos proveedores de software o desarrolladores de plugins menos conscientes de la seguridad a menudo usan comandos del sistema o funciones de administración de permisos nativas del idioma para crear algunos directorios (generalmente los que se usan para el almacenamiento en caché y archivos temporales, archivos de sesión, etc.) para facilitar la instalación y administración.

Para buscar directorios con permisos de escritura mundial, usa la herramienta de búsqueda de UNIX. Ejecuta este comando a través de SSH en el directorio web de tu dominio.

Este comando busca en todas las carpetas debajo de la carpeta en la que lo ejecutas:

[server]$ find . -type d -perm -o=w

Si no se muestran resultados, entonces ninguna carpeta es de escritura mundial.

Arreglar directorios de escritura mundial

Puedes realizar cambios masivos en todos los permisos de directorios de escritura mundial con la herramienta de búsqueda de UNIX. Ejecuta este comando a través de SSH:

[server]$ find . -type d -perm -o=w -print -exec chmod 770 {} \;

Cuando ejecutas este comando en tu directorio web, sucede lo siguiente:

  • Se encuentran todos los directorios que tienen permisos 777.
  • Aquellos directorios con permisos 777 son cambiados a 770.
  • Otros directorios no se tocan.

Siempre es mejor enumerar todos los directorios de escritura mundial y luego decidir los permisos adecuados. Algunas carpetas requieren una atención especial.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?