- a)
Filtrado por referente - b) Bloqueo
del acceso público a las
estadísticas - c) Uso de
Page-Tagging en lugar de análisis de
logs
Este año nos sorprende con la popularización
de una modalidad de spam (publicidad no solicitada) que usa
como vehículo de propagación a los programas de estadísticas web de los
servidores a los que ataca.
Este artículo provee un minucioso análisis de las técnicas usadas por los
spammers, cuáles son los
beneficios que obtiene el spammer al corromper nuestros logs, y
brinda consejos para defenderse de este tipo de spam.
Todo webmaster que analiza la actividad de sus sitios
web no puede dejar de estudiar
detalladamente la sección que resume los referidos o enlaces
de origen de las visitas. Esta tabla contiene un listado ordenado
con todos los sitios web que teniendo un link hacia nuestras
páginas nos han enviado visitas.
Esta es la sección de las estadísticas más
útil cuando deseamos evaluar los resultados de la promoción de nuestra web
(banners en páginas de terceros, intercambio de links,
visitas desde buscadores, etc.).
En los referidos podemos hallar sitios web predecibles
(aquellos donde sabemos que hay un link hacia nuestras
páginas) y también sitios nuevos (aquí es donde
nos enteramos de quién ha puesto links a nuestro sitio y
dónde).
Fig. 1 Reporte
(webalizer) de www.estadisticasweb.com
Las entradas en esta tabla son a su vez links hacia la
página referente. De modo que cuando veo la URL de un sitio
que no conocía (y que me está mandando visitas) hago
click sobre su nombre y este sitio se abre. Entonces busco el
botón, la imagen o el link desde el cual se
accedió a mi sitio. En algunos casos es sencillo: el link
está completamente a la vista. En otros casos puede ser un
poco más complejo, si la página del referente se genera
dinámicamente (desde una base de datos, o como
resultado de una búsqueda, por ejemplo).
Pero existe una tercera situación, en donde
directamente el link no existe ni existió nunca. Y ahí
se encuentra el webmaster: revisando y reviendo un sitio web del
que no sabía su existencia. Viendo detenidamente todo… y
buscando dónde se halla el link a su web.
Muy claro: tener una enorme cantidad de visitas que
abran muchas páginas en su web. Todos los webmasters que
encontraron un link en su listado de referrers y que buscan el
link desde donde les "mandan las visitas".
Un segundo objetivo lo alcanzan en los
casos en que las estadísticas de nuestro sitio sean
públicas: hacer que en cientos o miles de páginas de
terceros (en sus estadísticas públicas) aparezcan links
hacia su sitio. Y todos sabemos el beneficio que esto implica
para el posicionamiento en buscadores, y
en particular en Google, donde esta situación
se reflejará tarde o temprano en el pagerank del
spammer.
Encontré software para realizar esta fechoría.
Pero como mi objetivo no es promocionar esta técnica (ni
este software, por supuesto), no lo mencionaré en este
artículo. Pero sí voy a describir cómo es que
funcionan estos programas.
En principio, el trabajo del spammer se
divide en dos partes:
1) construir una lista de direcciones de sitios
web, y
2) generar la falsa actividad sobre cada uno de
los sitios, mediante peticiones HTTP especialmente
manipuladas
El punto 1 parece ser obvio: se puede usar la
información de buscadores o
directorios en la web para obtener una lista de víctimas.
También es posible poner a funcionar un crawler (un software
de indexación que navega en la web siguiendo los links hacia
otros sitios, y de ahí a otros, y otros más… de esta
forma construyen sus bases de datos los
buscadores).
En la mayoría de los casos, estos sistemas buscan sus víctimas
en el DMOZ (Open Directory). Se ha comprobado una relación
directa entre la figuración de una web en DMOZ y la
recepción de spam de esta naturaleza.
El punto 2 es el verdadero "secuestro": un
software especialmente diseñado "visita" cada una de las
páginas de la lista, enviándoles una petición HTTP
manipulada:
GET / HTTP/1.1
Host: www.estadisticasweb.com
Referer: http://www.soy-un-sucio-spammer.com/
User-Agent: Mozilla/5.0 Galeon/1.2.0 (X11; Linux i686;)
Gecko/20020
Accept: image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, */*
Accept-Language: en-us, en
Accept-Encoding: gzip, deflate,
compress;q=0.9
Accept-Charset: ISO-8859-1, utf-8;q=0.66,
*;q=0.66
Keep-Alive: 300
Connection: keep-alive
Este es el tipo de petición que envía nuestro
browser cuando seguimos el link desde el sitio
soy-un-sucio-spammer.com Y eso es lo que registra nuestro
servidor: la URL
www.soy-un-sucio-spammer.com nos acaba de enviar una
visita.
Otra variente de esta técnica consiste en un
crawler que realiza los pasos 1 y 2 en uno solo: cuando "abre"
nuestra página para seguir los links hacia páginas de
otras víctimas, ya nos está mandando el campo "Referer:
http://www.soy-un-sucio-spammer.com/" modificado. De esta forma
es mucho más rápido, y el spammer se puede dar el gusto
de secuestrar varias decenas de sitios web por segundo (10 a 40
sitios web por segundo típicamente: la carga se limita
sólo al texto excluyendo las imágenes de modo que el
spammer gana tiempo y ahorra ancho de
banda).
Qué podemos hacer para
evitarlo
Existen múltiples aproximaciones, ya que estamos en
una etapa muy temprana del problema. Analizaremos algunas de
ellas, con sus correspondientes ventajas y
desventajas.
Esta técnica se basa en un .htaccess que implementa
una lista negra de sitios desde los cuales no se aceptan
referidos. Hoy la lista negra puede imprimirse en una carilla de
papel carta, pero estoy seguro que en unos meses
superará ampliamente el volúmen de la guía
telefónica, y este método de filtrado será
inviable. Otra desventaja de este sistema es que supone que ya
contamos con la lista negra, y por tanto conocemos cuáles
son los sitios spammers.
Archivo .htaccess
RewriteEngine On
#
RewriteCond %{REMOTE_ADDR} ^64.38.236.*$
[OR]
#
RewriteCond %{HTTP_REFERER}
^http://(www.)?sitiospammer-1.com.*$ [NC,OR]
RewriteCond %{HTTP_REFERER}
^http://(www.)?sitiospammer-2.com.*$ [NC,OR]
….
….
RewriteCond %{HTTP_REFERER}
^http://(www.)?sitiospammer-N.com.*$ [NC,OR]
RewriteRule .* – [F,L]
Nota 1: se debe escribir una línea por cada sitio
en la lista negra
Nota 2: las líneas con los puntitos no van!
Significan que ahí deben insertarse más líneas de
bloqueo
He evitado escribir en este ejemplo las URLs de los
spammers: no es mi intención presentar en este artículo
una lista negra. Sin embargo, para quien esté interesado,
hay listas de sitios de spammers en los foros de .
b) Bloqueo del acceso
público a las estadísticas
Una buena forma de reducir el beneficio obtenido por los
spammers consiste en hacer que nuestros reportes de
estadísticas tengan acceso protegido por password. De esta
forma los buscadores no entrarán, y el spammer no se
beneficiará de los links gratis hacia su sitio web. No es
una verdadera solución al problema (seguiremos viendo spam
entre nuestros referidos), pero al menos estaremos tomando
acciones que reduzcan el
beneficio que el spammer desea obtener de nosotros.
c) Uso de Page-Tagging en
lugar de análisis de logs
He notado que (por ahora) en todos los casos de
secuestro de log de referidos, el spammer ataca al servidor web
con una petición HTTP sólo al documento html, y esta petición se
guarda en los logs y por tanto la vemos en los resultados de las
estadísticas que obtienen sus datos de los logs.
Si usamos "Page-Tagging" (la técnica de monitorizar
las visitas a un sitio mediante la inclusión de un
botón especial o un código en cada
página a ser monitorizada) no veremos en nuestras
estadísticas los referidos de los spammers.
Si el spammer quisiera que su técnica de ataque
abarcara también a los sitios que usan Page-Tagging,
deberían modificar sus programas de forma tal que abriesen
-además del documento base de la página web- todos y cada uno
de los elementos contenidos en la página (el tag podría
llegar a ser cualquiera de los elementos: una imagen, por
ejemplo). De esa forma el spammer (si contase con una
versión modificada del software que utilizan actualmente) no
podría realizar tantos ataques por segundo, y la eficacia de la dispersión
bajaría notablemente.
Esto es otra muestra de lo que las mentes
inescrupulosas son capaces de inventar, corrompiendo nuestras
estadísticas y robando nuestro ancho de banda y recursos de servidor para
beneficio propio.
Hasta la fecha no existe ninguna técnica
completamente eficaz para evitarlo (al menos durante mucho
tiempo). Personalmente pienso que combinando las técnicas b
y c del apartado anterior (mas algunas otras que el con el tiempo
se puedan inventar) podremos desplazar la barrera de la
conveniencia del spammer, de forma que el negocio no le sea tan
conveniente, y así desestimular este tipo de prácticas:
si es más trabajoso aplicarlo y da menos beneficio, tal vez
logremos que el spammer se dedique a otras fechorías y deje
nuestros servidores web y nuestros programas de estadísticas
en paz.
Estoy muy interesado en seguir investigando y encontrar
soluciones para este tipo de
abusos. De forma que quien desee aportar ideas, experiencias o
comentarios será muy bienvenido al foro que hemos creado sobre el "Secuestro de logs"
(Log Hijacking) en los foros de www.estadisticasweb.com.
Ing. Eduardo González González
(*)
(*) Consultor en Sistemas de Seguridad