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 defenderese 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).

Spam Log
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.

Los objetivos del spammer

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.

Las técnicas del spammer

Encontré swoftware 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. Construír 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.

a) Filtrado por referente

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 www.estadisticasweb.com .

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.

Conclusión

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 .