Si en la 1º parte explicamos cuales son los métodos de ataque de un CMS tipo Joomla o Wordpress, ahora comentaremos de que forma es modificado el Joomla y como podemos limpiar lo.
Normalmente los ficheros que se modifican primero son el index.php pero en Jooma también son modificados:
* Donde xxxx es el nombre de la plantilla que estamos usando.
Los primero que tenemos que hacer es buscar en dichos ficheros tanto al principio como al final, las siguientes sintaxis:
eval(gzinflate(base64_decode('HJ3HbuvIFkU/5zXAAXMaMkcxi2nywJxz5te33IML+BqwJFbV2XstWZKLM+n/qd5mLPtkL/5Jk60gsP/nRT.......akxUhgBILEQ1AACIJo8Z9///79938=')));
eval(@gzinflate(base64_decode('HJ3HbuvIFkU/5zXAAXMaMkcxi2nywJxz5te33IML+BqwJFbV2XstWZKLM+n/qd5mLPtkL/5Jk60gsP/nRT.......akxUhgBILEQ1AACIJo8Z9///79938=')));
preg_replace("/.+/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28......hPLidw/nyu/lEf6Xcg24Mhg8Bqov4C'\x29\x29\x29\x3B",".");
Estas lineas han sido cortadas por los puntos suspensivos, normalmente tienen más de 1200 caracteres, pudiendo llegar a 24.000, lo que nos hace sospechar de que algo raro pasa. En una primera limpieza borraríamos las lineas o sustituiríamos los ficheros modificados por los originales o la ultima copia no alterada. Luego buscaríamos estos patrones en el resto de ficheros y también podemos buscar por fecha de modificación.
Hay que esta atento a los ficheros modificados, porque también pueden incluir una puerta trasera y aunque limpiemos los ficheros o activemos sistemas de seguridad *suhosin o mod_security, hay que buscar este código y eliminarlo. (* suhosin permite limitar el uso de eval pero se necesitan conocimientos porque se podría dejar de funcionar ciertas partes de nuestra web.)
Que con un simple POST permite al atacante volver a infectarnos y es difícil de detectar en los registros del apache.
Como ejemplo he creado un pequeño script en bash para buscar ficheros infectados y aunque nos aparecen algunos falsos positivos, siempre es recomendable revisarlos manualmente.
#!/bin/bash
malware() {
find -type f -iname *.$1| while read file
do
a=`awk 'length(\$0) > 1020' "$file"|grep -e "base64_decode\|preg_replace"`
if [ "$a" ]
then
echo $file
fi
b=`grep "\$_POST" "$file" |grep -i base64_decode | grep -i eval`
if [ "$b" ]
then
echo $file
fi
done
}
malware phtml
malware php
malware phps
malware php5
Puedes descargar desde aquí.
busca_malware.sh (392 Bytes 2012-06-18 18:31:13)