Recientemente saltó a todos los medios el caso de Advert.dll, una dll
que se instalaba con un gran número de aplicaciones shareware de
renombre, y que según todas las informaciones estaba destinada a espiar
las transmisiones de los usuarios.
El sistema AdSoftware de Aurete Media Corporation se basa en ofrecer a
desarrolladores la posibilidad de incluir en sus aplicaciones
publicidad, a modo de banners, con la consiguiente retribución
monetaria según el volumen de publicidad que son capaces de
soportar -usuarios/tiempo que utilicen la aplicación-. En estos
momentos se cuentan por cientos las aplicaciones que utilizan esta
tecnología (listado en:
http://www.aureate.com/advertisers/network_members.html), con títulos
tan conocidos y extendidos como GetRight o CuteFTP, y que tienen en
común la utilización de Internet para llevar a cabo sus funciones, ya
que de lo contrario el sistema no podría actualizar los banners y
realizar el seguimiento.
El rumor parte, como suele ser habitual, en los foros de Internet
(primeras informaciones en:
http://news.cnet.com/news/0-1005-200-1558696.html) y provoca enseguida
un efecto bola de nieve entre informadores y usuarios que terminan por
sembrar, como mínimo, la duda en la comunidad de usuarios. Una de las
fuentes más activas en este caso en la que se han basado muchas de las
informaciones arrojadas son los comentarios de Steve Gibson en su
sitio web (http://grc.com/optout.htm).
Avisos y Acuerdo de Licencia
Entre los requerimentos, para que terceros puedan aplicar la
tecnología AdSoftware en sus programas, Aureate pide que se incluya un
texto en sus propios acuerdos de licencia. En dicho texto se hace
referencia a que la aplicación es «advertiser supported software», que
significa que algunos o todos los costes asociados al desarrollo y a
la distribución del producto intentan ser recuperados con el uso de
los anuncios visualizados a través del sistema Aureate incluido en la
aplicación. En las pruebas realizadas con diversas aplicaciones éste
apartado no se cumple en su totalidad y encontramos múltiples
irregularidades. En la mayoría de los casos, como por ejemplo CuteFTP
o GetRight, si bien se incluye alguna referencia a la tecnología de
Aureate al final del acuerdo de licencia del usuario, no se puede
encontrar el texto completo recomendado por la propia Aureate, que
explica con mayor detalle su funcionamiento.
En otras ocasiones, existen aplicaciones shareware que se ofrecen
durante un periodo de tiempo en modo completamente funcional, con las
mismas características que el usuario puede disfrutar al comprarlo.
Algunas distribuciones de este tipo incluyen el sistema Aureate, el
usuario no es informado durante la instalación, y la sorpresa llega
cuando Aureate se activa una vez pasado el periodo de prueba. La
responsabilidad en este caso particular recae sobre las casas
desarrolladoras que incluyen e instalan dicha tecnología sin informar
convenientemente al usuario.
A todas estas singularidades se suma la confusión que puede suponer el
hecho de que existan diferentes versiones y modalidades de incluir el
sistema Aureate en una aplicación. La más extendida es la que utiliza
la librería advert.dll, entre otras, -ya avanzo que hay versiones que
no incluyen dicha librería- basada en la construcción de un perfil del
usuario mediante la solicitud de información a través de formularios y
su identificación mediante un número personalizado. En este caso la
aplicación que pide la información al usuario es propiedad de Aureate,
y en todo momento se presenta con cumplida información sobre el uso
que se le va a dar a la misma.
Una vez hayamos instalado una aplicación que haga uso de Aureate el
resto de software que utilice el mismo sistema no tendrá que repetir
la solicitud de datos por formulario, ya que comparte el perfil
existente, por lo que puede dar la sensación de que estas aplicaciones
no advierten de modo adecuado al usuario. En otras versiones y
modalidades no existe solicitud de información adicional para la
creación del perfil, en esta ocasión el sistema de Aureate funciona de
forma similar a una cookie, si bien compartida entre todas las
aplicaciones que hagan uso de esta tecnología.
Es la propia Aureate la que solicita a los desarrolladores de software
que no incluyan sus librerías en los procesos de desinstalación a no
ser que estén totalmente seguros de que ningún otro software
instalado en el sistema hace uso de ellas. De lo contrario, si se
incluye en la desinstalación, puede suponer que al desinstalar un
programa dejen de funcionar el resto de aplicaciones que utilizaban y
compartían las librerías de Aureate (advert.dll, por ejemplo). La
práctica totalidad del software al que he tenido acceso sigue el
consejo de Aureate, lo que explica la existencia de las librerías aun
habiendo desinstalado la aplicación que hacía uso de ellas.
Este hecho no dejaría de ser una anécdota, sino fuera porque Aureate,
como se demostrará más tarde, utiliza a los navegadores para cargar
sus librerías en memoria, por lo que podemos encontrarnos en la
situación de haber desinstalado todo el software que hacía uso de las
aplicaciones y seguir con Aureate activado en memoria sin que el
usuario tenga ningún tipo de notificación al respecto ni hecho visible
para que pudiera percatarse de ello.
De esta forma queda empañada esta característica que en un principio
podría haberse interpretado como algo lógico, el pedir a los
desarrolladores no desinstalen el sistema de Aureate para facilitar la
compartición de librerías y perfil del usuario. Al mismo tiempo que
cobraría fuerza la idea de que pudiera actuar en un determinado
momento como si de un troyano se tratara al actuar al margen de lo que
se le presupone, ya que en ningún caso, y según la documentación a la
que he tenido acceso, se contempla esta característica.
Librerías y proceso de instalación
Las librerías de Aureate, entre otras advert.dll y la menos conocida
pero no menos importante amcis.dll, se instalan en el directorio de
sistema de Windows (system en Win9x y system32 en WinNT). El programa
de instalación verifica que no sobreescribe librerías ya existentes si
éstas son versiones superiores, para evitar así que la actualización
pueda afectar a software preinstalado que contemple características de
versiones más avanzadas. Las versiones superiores son compatibles con
las anteriores y, por tanto, las aplicaciones que fueron diseñadas
para trabajar con versiones antiguas del sistema Aureate funcionarán
de igual forma con las nuevas DLLs que ya se encuentran instaladas.
Otras consideraciones tienen que ver con los desarrolladores que
utilicen el componente AdvertX.ocx además de las DLLs. He podido
comprobar que la mayoría de las ocasiones suele incluirse en los
programas, que utilizan el sistema de Aureate y han sido desarrollados
con Visual Basic, aunque en realidad pueden ser utilizados con otros
lenguajes. El programador debe comprobar en esta ocasión que la
librería oleaut32.dll sea, como mínimo, la versión 2.20, ya que las
anteriores, distribuidas en las primeras versiones de Windows 95 y NT,
no contemplan el trabajo con componentes ActiveX. Aureate facilita una
versión actualizada de la librería oleaut32.dll para que pueda ser
distribuida en estos casos, teniendo especial cuidado, de nuevo, en no
sobreescribir versiones superiores.
Además de los mencionados podemos encontrar otros ficheros como parte
de la instalación de Aureate, y su inclusión o no depende de la
versión instalada: htmdeng.exe, ipcclient.dll, tfde.dll, raimage.dll,
adimage.dll, msipcsv.exe, Advert3.ocx, anadsc.ocx, advert203.ocx y
amcis2.dll.
Aureate en el Registro de Windows
A continuación hacemos un recorrido por las claves que Aureate
almacena en el registro de Windows y que nos proporciona información
imprescindible para poder entender su funcionamiento. En esta primer
apartado se pueden ver las que aparecen claramente vinculadas con
Aureate, al llevar su nombre en la clave. Más adelante veremos también
como se inserta en el registro información adicional que, sin llevar
una nomenclatura tan explícita, permitirá a Aureate ser cargado en
memoria cada vez que se lance el navegador de Microsoft o Netscape.
-HKEY_CLASSES_ROOT\Software\Aureate\Advertising
Bajo esta clave podemos encontrar las diferentes subclaves y valores
que Aureate almacena según configuración personalizada para nuestra
máquina.
-HKEY_CLASSES_ROOT\Software\Aureate\Advertising\Default Server
El valor «Address» contiene la dirección del servidor principal con el
que conectará, ejemplo «aim1.adsoftware.com». «Port» recoge el número
del puerto TCP para realizar la conexión, en las pruebas realizadas
siempre el 1975.
-HKEY_CLASSES_ROOT\Software\Aureate\Advertising\Servers
Nos podemos encontrar con una sucesión de subclaves que contienen los
mismos valores que la anterior (dirección y puerto) -obviamente con
diferentes datos-. Son usados Como servidores secundarios en caso de
que haya algún problema en la comunicación con el servidor por
defecto.
-HKEY_CLASSES_ROOT\Software\Aureate\Advertising\Distributors
En esta clave se almacena el valor «Distribuidor ID», numero de
identificación del distribuidor que se envía a los servidores de
Aureate y permite a los programadores hacer un seguimiento
personalizado de las estadísticas de publicidad que arrojan sus
aplicaciones según un ID específico.
-HKEY_CLASSES_ROOT\Software\Aureate\Advertising\Path
Contiene la ubicación de la librería ADVERT.DLL, que en un Windows 9x
puede ser «C:\WINDOWS\SYSTEM\ADVERT.DLL», por ejemplo.
-HKEY_CLASSES_ROOT\Software\Aureate\Advertising\Cookies
Espacio reservado para almacenar las cookies que provienen de los
servidores HTTP de los anunciantes. En las pruebas no se ha almacenado
ningún valor, y si en la clave del mismo nombre que se mantiene en
HKEY_CURRENT_USER que veremos a continuación.
-HKEY_CURRENT_USER\Software\Aureate\Advertising
Bajo esta clave se encuentran las subclaves que almacenan la
configuración para los usuarios específicos que utilizan la máquina.
En este apartado podemos encontrarnos con el valor «Proxy», y la
correspondiente URL que apunta al servidor y puerto, en los sistemas
que lo requieran para conectar a Internet, como por ejemplo en una red
local.
-HKEY_CURRENT_USER\Software\Aureate\Advertising\Cookies
Almacena las cookies según usuario, podemos encontrar subclaves con
los nombres de dominio de las cookies y en su interior valores que
almacenan el nombre de la cookie y su expiración.
-HKEY_CURRENT_USER\Software\Aureate\Advertising\Demographics
Aquí encontramos los valores de la «ficha» del usuario, según los
datos que hayamos suministrados en el formulario que Aureate nos
presenta cuando se instala por primera vez. ID del usuario, año de
nacimiento, sexo, trabajo, estado civil, nivel de estudios, país, etc.
Los datos que contienen estos valores corresponden siempre a los
suministrados en el formulario, Aureate no recopila y almecena
información por si sólo, aun en el caso de que lo hallamos dejado sin
rellenar, en blanco.
-HKEY_CURRENT_USER\Software\Aureate\Advertising\Demographics\Interests
Almacena los valores del formulario donde durante la instalación se
nos solicita que indiquemos nuestras áreas de interes, como por
ejemplo Automóviles, Educación, Libros/Revistas, Ordenadores, etc.
Toda esta información personalizada la utiliza para crear el perfil
que tiene como fin elegir que publicidad es la más adecuada para el
usuario.
-HKEY_LOCAL_MACHINE\Aureate\Advertesing
Durante las pruebas esta clave se creó pero nunca ha almacenado
información.
-HKEY_LOCAL_MACHINE\Aureate\Advertesing\Classes\Software\Aureate
Subclaves y valores equivalentes a los encontrados en HKEY_CLASSES_ROOT
-HKEY_USERS\Aureate\Advertesing
Subclaves y valores equivalentes a los encontrados en HKEY_CURRENT_USER
Funciones públicas de las librerías para los desarrolladores
Entre las acusaciones que se han barajado se encuentra la posibilidad
de que las aplicaciones que hicieran uso del sistema de Aureate
contaran con herramientas adicionales para actuar como troyano o
espiar a los usuarios. De entrada, esta afirmación carece de lógica,
ya que los desarrolladores pueden incluir, si quisieran, estas
características en su propio software sin tener que recurrir a
sistemas de terceros.
Para despejar cualquier duda al respecto se incluye a continuación las
principales funciones que las librerías de Aureate facilitan a los
desarrolladores que incorporan su sistema:
*debugTriggerEvent: sirve de ayuda para debuggear.
*GetStatus: devuelve diferentes estados para controlar los procesos.
*IsConnectOkay: permite conocer si la DLL ha sido capaz de comunicarse
con el servidor de publicidad.
*OnClick: se utiliza para detectar si el usuario hace click en el
banner y comprueba si se ha abierto la URL correspondiente en el
navegador por defecto.
*Paint: utilizado para llamar a la librería y visualice un banner en
la aplicación.
*RetryConnect: sirve para reiniciar el proceso de conexión, Aureate se
reinicia automaticamente cada vez que detecta algún problema en la
comunicación.
*SetAdRecordedCallback: avisa cuando el servidor de publicidad ha
registrado/contabilizado la visualización de un banner.
*SetBandwidthThrottle: permite configurar el máximo ancho de banda que
puede manejar la aplicación durante sus comunicaciones (por defecto
2Gb/sec.)
*SetCallback: comprueba si la llamada a visualizar un banner se ha
resuelto satisfactoriamente.
*SetMinimumAdDisplayTime: tiempo mínimo que se visualiza un banner
antes de llamar a otro.
*SetNetworkCallback: llamada después de que se intente hacer alguna
conexión con los servidores de publicidad.
*SetNetworkState: permite conocer si se está conectado a Internet.
*SetProxy: para poder configurar los valores de proxy HTTP en el
registro.
*Shutdown: destruye los procesos para cerrar la aplicación.
*Startup: para inicializar la librería.
*UseDefaultAd: llama, y permite configurar, el banner por defecto que
se visualizará en primer lugar y cuando existan problemas de
comunicación con el servidor para descargar nuevos banners.
Aureate facilita a los desarrolladores, que incorporan su sistema,
información adicional a través de un web en Internet, previa
identificación mediante usuario/contraseña, pero se limita a
proporcionar datos estadísticos sobre los banners visualizados a
través de su aplicación y la correspondiente compensación económica de
la que se benefician. En ningún caso el desarrollador tiene acceso a
información sensible de los usuarios.
bernardo@hispasec.com
Deja una respuesta