was successfully added to your cart.

Como actuar ante un ataque web a tu tienda Prestashop

Si hemos sido atacados y detectamos que un intruso ha hecho modificaciones en nuestra tienda, el primer paso es restaurar la web tal y como estaba antes.
No todo se reduce a restaurar copias de seguridad, es mucho mas complicado que restaurar una copia de la BBDD del día anterior, o de hace unas horas.
El primer paso es saber que modificaciones ha hecho exactamente el intruso. Necesitaremos saber por donde ha venido el ataque (Via administrador, bbdd, ftp…) y cuales han sido todos y cada uno de sus movimientos.

Teniendo estos datos y sabiendo exactamente el alcance total, es cuando toca tomar la decisión de como actuar.

Como saber exactamente cual es el alcance de un ataque en Prestashop

Un administrador de Prestashop sabrá a simple vista cual ha sido el origen, que principalmente pueden ser tres:

  • Por acceso FTP (Un acceso al ftp le abre la puerta a todo nuestro sistema.)
  • Por acceso remoto a la BBDD (Este acceso le abre la puerta a todo nuestro sistema, usuarios administradores…)
  • Por acceso al panel de administración (Este acceso le abre la puerta a todo el sistema)

Sabiendo cual es exactamente el origen sabremos si mirar en un sitio u otro a la hora de buscar el alcance total.

 

¡LO PRIMERO! Evitar un nuevo ataque antes de ponernos a ver nada

Lo primero que tenemos que hacer es cerrar la puerta que teníamos abierta y por la que sabemos que ha entrado, cambiar contraseñas de BBDD, FTP, administración y muy importante, mails vinculados a las cuentas de administración.

 

Nota: Todos los comandos, rutas, ficheros, etc que citaré son para un sistema CentOS 7, con Plesk instalado.

Como donde, cuando y porqué si un intruso accede a nuestra web

Los accesos por FTP, dependiendo de la configuración de nuestro servidor los podremos mirar en:

/var/log/plesk

Aquí podremos ver:

  • El fichero «xferlog»
    • Indica el usuario ftp con el que ha conectado.
    • Las transferencias que ha hecho. Si ha eliminado ficheros, si los ha actualizado, si ha creado nuevos.
    • Cual es el nombre de los ficheros que ha tocado.
  • El fichero «httpsd_access_log»
    • Aparecen todas las conexiones a nuestro servidor vía https. Es decir, cualquier página solicitada por el navegador aparecerá aquí. Es un log bastante completo salvo que no aparecen los datos que se pasan por POST, dado que necesitaríamos entonces un buen disco para guardar tal cantidad de datos.
    • Aparece la IP de las conexiones que hacen las solicitudes y la hora y fecha de las mismas.

Otra ruta donde hay logs muy útiles es un directorio por debajo:

/var/log/

Aquí podremos encontrar:

  • Fichero «maillog»
    • Aunque parezca mentira, es un log importantísimo, si cazamos al intruso por IP, aquí podremos filtrar por IP para saber si en algún momento nos ha enviado un mail antes de ponerse manos a la obra.
    • Aparecen todos los envios y recepciones de correo que hace el servidor.
    • Aparece fecha, hora y IP del envío.
  • Fichero «messages»
    • Aquí aparecen las sesiones abiertas, cerradas, tipo de sesión, ip que inicia la sesión.

 

Cómo buscar al intruso por comandos y usando los Logs

Se hace uso principalmente de dos comandos básicos en Linux:

cat FICHEROQUESEA
find DIRECTORIOQUESEA

Supongamos que nuestro intruso hemos detectado que entró por FTP, y tenemos su IP.

La ip del intruso figuro como la 95.13.13.15

El siguiente comando, sacará por pantalla los ficheros que han sido modificados en una ruta concreta durante el último día:

find ./* -type f -mtime -1

Si queremos buscar en un log o carpeta de logs la IP, podemos poner:

grep -rnw ./* -e '95.13.13.15'

 

Filtrando logs

Podemos filtrar búsquedas y guardarla en ficheros específicos, luego, volver a buscar sobre ese fichero resultado y volver a guardar, así continuamente hasta tener un fichero resultado con lo que queremos, es decir, tenemos un log que ocupa 10 dias. Pues hagamos un filtro de solo el día del ataque:

cat ./* | grep "11/Jul/2017" > fichero_con_logs_dia_11_jul.log

Nuestro fichero resultado tendrá solo los logs del día que queremos buscar.

Ahora sobre ese, filtraremos solo las lineas que contengan la IP de nuestro intruso.

cat fichero_con_logs_dia_11_jul.log | grep '95.13.13.15' > log_dia_11_con_ip.log

El resultado será un log donde podremos buscar todo lo que hizo nuestro intruso.

 

Como actuar cuando ya sabemos el alcance y restablecer el servicio

Esta decisión se toma en caliente, dependiendo de las perdidas ocasionadas podremos optar por reparar aquello que el atacante ha perjudicado o bien directamente haciendo un volcado de copias controlado.

Estos son los puntos a tener en cuenta antes de tomar una decisión:

  • Las imágenes de los productos y categorias. Tenemos que pensar en esto antes de tomar decisiones,
    • ¿Las ha borrado? Si ha borrado imágenes podremos restaurar la carpeta de las mismas.
    • ¿Ha borrado la BBDD? Si ha borrado la tabla de ps_image tendremos que hacer un volcado de la tabla.
  • Clases, controladores, override. Últimos cambios realizados en desarrollo. Ver que afectación ha tenido en el negocio y si se puede restaurar.
  • Ultimos pedidos. ¿Han sido borrados los pedidos? Tendremos un verdadero problema con esto si no tenemos una versión muy reciente, dado que los pedidos estarán pagados, no tendremos manera de contactar con nadie si los clientes no aparecen…es una de las peores pifias que pueden hacerte. Aunque aparecerá información de los pedidos en las transacciones de Paypal, Redsys o la forma de pago realizada.

 

Si has sufrido esto, y estas en el punto de relajación toca volver hacia atrás y preguntarte porque te atacó, buscar el origen del ataque y cerrar todas las puertas que puedas llegar a tener abiertas.

Toda esta información la podrás sacar de los logs del servidor, echando un ojo a semanas anteriores, seguro que el intruso no era la primera vez que entraba:

  • Busca su IP o IP’s del rango relacionadas.
  • Mira algún intento de inicio de sesión al panel, o de acceso con la palabra admin en la URL…
  • Mira en los logs del correo a ver si aparece algún mail con su IP. Detecta por fecha y hora de envío y recepción de que correo se trataba.
  • Mira accesos al webmail desde /var/log/plesk-roundcube/ o la aplicación que tengas habilitada.
  • Busca intentos fallidos por FTP o SSH.

 

Podemos ampliar este post entre todos si se os ocurren formas de detectar un intruso, estoy abierto a cualquier sugerencia.