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. Ofrecemos a todos nuestros lectores
la continuación del completo análisis que el Laboratorio de HispaSec ha
realizado sobre advert.dll.
Las comunicaciones
Otras de las acusaciones a las que ha sido sometido Aureate tienen que
ver con su supuesta capacidad para mantener comunicaciones en secreto
y enviar información sensible del usuario a través de Internet. En
primer lugar, las comunicaciones con los servidores de publicidad, a
través de TCP, pueden ser detectadas con un simple NETSTAT -A. En
cuanto al segundo punto, en las pruebas de monitorización de las
comunicaciones a nivel de paquete no he encontrado información
adicional fuera de la que se contempla en el propio acuerdo de
licencia con el usuario: ID del usuario, información del perfil
recogido por los formularios, versión del software, o los banners. El
único punto negro en este apartado pueden ser las cookies de los
servidores de publicidad, que en principio no se contemplan
explícitamente en la documentación.
En el texto que Aureate pide a los desarrolladores que integren en sus
propias licencias, y que como hemos visto anteriormente en la mayoría
de las ocasiones hacen caso omiso, se indica que los anuncios se
entregan vía Internet y serán descargados de los servidores de Aureate
Media o de sus subcontratistas, socios, u otras partes autorizadas.
Por último, informa que el software conectará con Internet para la
transferencia de actualizaciones del propio software y deja bajo la
responsabilidad del usuario cualquier coste del uso de la red u otro
derivado del programa.
Una vez se lanza cualquier programa que haga uso de la tecnología
Aureate se produce un intento de comunicación con los servidores según
la información que tiene almacenada en el registro de Windows. En
algún foro se ha barajado la posibilidad de modificar los parámetros
de los servidores en el registro para que apunten a otra dirección,
como puede ser la local, y así evitar las acciones de Aureate. Esta
acción no tiene ninguna repercusión en realidad, ya que la librería
advert.dll lleva consigo direcciones predeterminadas para modificar el
registro en caso de problemas.
Cada vez que una aplicación que lleve el sistema de Aureate intenta la
comunicación se provoca una media de 150 paquetes TCP y
aproximadamente 21.600 bytes -según condiciones-, a través de la cual
el cliente envía su ID al servidor lo que le permite identificar el
perfil del usuario, enviado la primera vez que se instala Aureate, y
cruzarlo con todos sus datos estadísticos. Aquí podemos ver uno de
esos paquetes capturados en las pruebas:
0000: C4 55 FB 00 01 01 00 01 B0 56 9A 80 08 00 45 00 .U…….V….E.
0010: 00 36 6F 08 40 00 80 06 F9 85 D4 3B D8 46 D8 25 .6o.@……;.F.%
0020: 0D 8C 04 86 07 B7 00 38 87 80 4B 49 D9 B7 50 18 …….8..KI..P.
0030: 22 19 A0 B9 00 00 00 00 00 00 06 77 6F 14 31 00 «……….wo.1.
0040: 00 00 FB 35 …5
Del que podemos ver que se trata de un paquete TCP, donde la dirección
de destino es la 216.37.13.140, que equivale a «ad2-1.aureate.com»,
dirigido al puerto 1975 (07B7) y entre los datos podemos encontrar la
cadena «00 00 00 00 06 77 6F 14» que concuerda con el ID que en la
prueba tenía almacenado en la clave
HKEY_CURRENT_USER\Software\Aureate\Advertising\Demographics
valor «User ID», dato «14 6f 77 06 00 00 00 00».
Entre la información que intercambian el servidor de Aureate y el
cliente se envía un paquete en el que se indica donde tiene que
recoger el próximo banner.
0000: 00 01 B0 56 9A 80 C4 55 FB 00 01 01 08 00 45 00 …V…U……E.
0010: 00 C4 9C D4 40 00 75 06 D6 2B D8 25 0D 8C D4 3B ….@.u..+.%…;
0020: D8 46 07 B7 04 86 4B 49 D9 DE 00 38 87 DF 50 18 .F….KI…8..P.
0030: 21 CC 0F 42 00 00 80 00 00 00 44 68 74 74 70 3A !..B……Dhttp:
0040: 2F 2F 6B 61 6E 73 61 73 2E 76 61 6C 75 65 63 6C file://kansas.valuecl
0050: 69 63 6B 2E 63 6F 6D 2F 72 65 64 69 72 65 63 74 ick.com/redirect
0060: 3F 68 6F 73 74 3D 68 30 30 32 34 34 36 39 26 62 ?host=h0024469&b
0070: 3D 69 6E 64 65 78 70 61 67 65 26 76 3D 30 00 81 =indexpage&v=0..
0080: 00 00 00 3C 9F 00 00 00 48 68 74 74 70 3A 2F 2F …<….Hhttp://
0090: 6B 61 6E 73 61 73 2E 76 61 6C 75 65 63 6C 69 63 kansas.valueclic
00A0: 6B 2E 63 6F 6D 2F 63 79 63 6C 65 3F 68 6F 73 74 k.com/cycle?host
00B0: 3D 68 30 30 32 34 34 36 39 26 62 3D 69 6E 64 65 =h0024469&b=inde
00C0: 78 70 61 67 65 26 6E 6F 73 63 72 69 70 74 3D 31 xpage&noscript=1
00D0: 00 02 ..
Entonces el cliente Aureate hace una petición HTTP a la dirección para
recibir el banner, donde además el nuevo servidor que entra en juego
aprovecha para enviar sus cookies que Aureate se encarga de manejar y
almacenar en el registro de Windows. Por lo tanto, además del
seguimiento que realiza Aureate a través de sus servidores, se produce
un segundo control por los servidores de publicidad de donde se
recogen los banners, aspecto éste que tampoco he podido encontrar
reflejado en el acuerdo de licencia con el usuario. En las pruebas
realizadas este segundo servidor ha redirigido una vez mas a nuestro
cliente a un tercer servidor que ha sido el encargado de suministrar
el banner en formato GIF. En la prueba de comunicación realizada, con
una duración de 10 minutos, el cliente de Aureate ha realizado 4
peticiones de nuevos banners siempre obteniendo resultados similares a
los comentados.
La librería amcis.dll, el «lado oscuro»
Todo el protagonismo de las informaciones arrojadas sobre el caso
Aureate ha recaido sobre la librería advert.dll, una de las fijas en
las primeras versiones de este software. De manera incomprensible se
ha olvidado a amcis.dll, otra de las librerías que tampoco podían
faltar en esas distribuciones, cuyo estudio despeja algunas incógnitas
y nos muestra un lado que hasta la fecha había permanecido oculto en
toda esta trama.
Durante el proceso de instalación la librería amcis.dll se identifica
como clase con un valor específico, de 128 bits, el denominado Class
ID en el registro de Windows bajo la clave CLSID. A través de la
aplicación regedit podemos realizar una busqueda de la cadena
«BDF0-11D2-BBE5-00609419F467» para encontrar todas las referencias de
las creaciones de objetos relacionados con esta librería. En algunas
podemos observar como en el valor InprocServer32 se apunta a la
librería en cuestión, por ejemplo «c:\windows\system\amcis.dll» junto
con el valor ThreadingModel con el dato «Apartment» que indica que el
objeto solo puede ejecutarse en un apartamento de un único hilo.
Además se crean otras entradas con los valores Stub.NetscapeStop.1,
Netscape Starting, Automation Shutdown, Automation Startup,
Stub.NetscapeStop, Stub.CIEStub.1, Stub.CIEStub y como Browser Helper
Objects.
El resultado de todo este entramado de registros es que cada vez que
se lanza una instancia de Internet Explorer o Netscape la librería
amcis.dll es cargada en memoria en el mismo proceso que el navegador.
En ese momento la librería se encuentra conectada con IExplorer, de
forma que puede tener el control del navegador así como «escuchar» los
eventos que en él sucedan mediante una interfaz. Además, amcis.dll
realiza una llamada a advert.dll, por lo que el resultado final es que
ambas librerías son lanzadas al abrir el navegador, sin necesidad de
que se encuentre en memoria la aplicación que hacía uso de la
tecnología Aureate, incluso habiéndola desinstalado. A continuación un
ejemplo de las librerías que se encuentran en memoria y enlazadas con
Internet Explorer en el sistema objeto de las pruebas de este
análisis, se pueden observar, entre otras, amcis.dll y advert.dll.
Base Size Version Path
0x00400000 0x13000 5.00.2314.1000 C:\Program Files\Plus!\Microsoft Internet\IEXPLORE.EXE
0x77f60000 0x5e000 4.00.1381.0174 C:\WINNT\System32\ntdll.dll
0x77dc0000 0x3f000 4.00.1381.0203 C:\WINNT\system32\ADVAPI32.dll
0x77f00000 0x5e000 4.00.1381.0178 C:\WINNT\system32\KERNEL32.dll
0x77e70000 0x54000 4.00.1381.0133 C:\WINNT\system32\USER32.dll
0x77ed0000 0x2c000 4.00.1381.0115 C:\WINNT\system32\GDI32.dll
0x77e10000 0x57000 4.00.1381.0193 C:\WINNT\system32\RPCRT4.dll
0x70bd0000 0x44000 5.00.2314.1000 C:\WINNT\system32\SHLWAPI.dll
0x70f20000 0xe6000 5.00.2314.1000 C:\WINNT\System32\shdocvw.dll
0x71590000 0x87000 5.80.2314.1000 C:\WINNT\system32\COMCTL32.dll
0x77c40000 0x13c000 4.00.1381.0171 C:\WINNT\system32\SHELL32.dll
0x71730000 0x57000 5.00.2314.1000 C:\WINNT\System32\shdoclc.dll
0x70400000 0x77000 5.00.2314.1000 C:\WINNT\System32\MLANG.DLL
0x77b20000 0xb6000 4.00.1381.0190 C:\WINNT\system32\ole32.dll
0x71020000 0xc4000 5.00.2314.1000 C:\WINNT\System32\BROWSEUI.dll
0x717a0000 0xb000 5.00.2314.1000 C:\WINNT\System32\browselc.dll
0x779b0000 0x9000 4.00.1371.0001 C:\WINNT\System32\LinkInfo.dll
0x77720000 0x11000 4.00.1381.0027 C:\WINNT\system32\MPR.dll
0x77a40000 0xd000 4.00.1381.0027 C:\WINNT\System32\ntshrui.dll
0x78000000 0x47000 6.01.8455.0000 C:\WINNT\system32\MSVCRT.dll
0x77800000 0x3a000 4.00.1381.0093 C:\WINNT\system32\NETAPI32.dll
0x77840000 0x9000 4.00.1371.0001 C:\WINNT\system32\NETRAP.dll
0x777e0000 0xd000 4.00.1381.0135 C:\WINNT\system32\SAMLIB.dll
0x10000000 0xc000 1.00.0000.0001 C:\WINNT\System32\amcis.dll
0x65340000 0x92000 2.40.4275.0001 C:\WINNT\system32\OLEAUT32.dll
0x01200000 0x8d000 1.05.0001.0018 C:\WINNT\System32\advert.dll
0x776d0000 0x8000 4.00.1381.0201 C:\WINNT\system32\WSOCK32.dll
0x776b0000 0x14000 4.00.1381.0172 C:\WINNT\system32\WS2_32.dll
0x776a0000 0x7000 4.00.1381.0031 C:\WINNT\system32\WS2HELP.dll
0x77d80000 0x32000 4.00.1381.0133 C:\WINNT\system32\COMDLG32.dll
0x70280000 0x6e000 5.00.2314.1003 C:\WINNT\System32\urlmon.dll
0x77a90000 0xb000 4.00.1371.0001 C:\WINNT\system32\VERSION.dll
0x779c0000 0x8000 4.00.1371.0001 C:\WINNT\system32\LZ32.dll
0x71190000 0x7000 5.00.2314.1000 C:\WINNT\system32\MSIDLE.DLL
0x77bf0000 0x7000 4.00.1381.0160 C:\WINNT\System32\rpcltc1.dll
0x70200000 0x70000 5.00.2314.1003 C:\WINNT\System32\WININET.DLL
0x717e0000 0x9000 5.00.2314.1000 C:\WINNT\System32\shfolder.dll
0x777f0000 0xc000 4.00.1381.0027 C:\WINNT\System32\ntlanman.dll
0x77890000 0x15000 4.00.1381.0046 C:\WINNT\System32\NETUI0.dll
0x77850000 0x3a000 4.00.1381.0046 C:\WINNT\System32\NETUI1.dll
0x017b0000 0x36000 4.01.0000.0000 C:\PROGRA~1\GetRight\XX2GR.DLL
0x77c00000 0x18000 4.00.1381.0027 C:\WINNT\System32\WINSPOOL.DRV
0x77660000 0xf000 4.00.1381.0037 C:\WINNT\system32\msafd.dll
0x77690000 0x9000 4.00.1381.0037 C:\WINNT\System32\wshtcpip.dll
0x75320000 0x22000 4.00.1381.0194 C:\WINNT\System32\RASAPI32.DLL
0x74a10000 0x1f000 4.00.1381.0135 C:\WINNT\System32\TAPI32.dll
0x750f0000 0x10000 4.00.1381.0194 C:\WINNT\System32\RASSCRPT.dll
0x75210000 0x7000 4.00.1371.0001 C:\WINNT\System32\RASFIL32.dll
0x752f0000 0xb000 4.00.1381.0194 C:\WINNT\System32\rascauth.dll
0x751a0000 0x12000 4.00.1381.0194 C:\WINNT\System32\rasman.dll
0x74ff0000 0xe000 4.00.1381.0201 C:\WINNT\System32\rnr20.dll
0x75360000 0x7000 4.00.1371.0001 C:\WINNT\System32\rasadhlp.dll
0x70c30000 0x240000 5.00.2314.1002 C:\WINNT\System32\mshtml.dll
0x4a000000 0x2c000 6.00.0000.8169 C:\WINNT\System32\PDM.DLL
0x4aa00000 0x15000 6.00.0000.8146 C:\WINNT\System32\MSDBG.DLL
0x76ab0000 0x5000 4.00.1381.0001 C:\WINNT\System32\IMM32.DLL
0x711b0000 0x76000 5.00.0000.3715 C:\WINNT\System32\jscript.dll
0x48080000 0x28000 3.10.0337.0000 C:\WINNT\System32\MSLS31.DLL
Esta particularidad daría argumentos a aquellos que quieren ver en
Aureate un troyano: el sistema enlaza con los navegadores para
asegurarse su ejecución sin necesidad de los programas anfitriones,
además con la posibilidad de espiar los eventos que suceden mientras
navegamos.
En las pruebas realizadas no se ha podido detectar en ningún caso que
las librerías cargadas en memoria por Internet Explorer, sin la
mediación de los progamas anfitriones, mantuvieran algún tipo de
comunicación con los servidores de publicidad. Por lo que respecta a
este análisis la única evidencia, demostrada, es que las librerías de
Aureate se cargan en memoria cuando se lanzan los navegadores de
Microsoft o Explorer, incluso tras la desinstalación de los programas
anfitriones con las que se distribuyeron dichas DLLs.
Las pruebas en este apartado han consistido en el análisis a nivel de
paquetes derivado de la navegación al azar durante 10 minutos. En el
debe queda realizar el análisis por un periodo de tiempo más
prolongado, así como comprobar si estas librerías utilizan su posición
en memoria para seguir actualizando las cookies registradas por los
servidores de publicidad.
Desinstalar Aureate
Por Internet ya circulan algunas utilidades que tienen como fin el
desinstalar el sistema de Aureate, en los casos probados ninguna de
ellas realiza la desinstalación total de las DLLs de las diferentes
versiones, y mucho menos de las entradas del registro. Además,
provocan que los programas que utilizan esta tecnología dejen de
funcionar. Con la información proporcionada en este análisis se puede
llevar a cabo la limpieza total o parcial, a base de borrar todas las
librerías y registros del sistema mencionados. En el caso de que se
quieran conservar los programas con tecnología Aureate en
funcionamiento, pero se desee eliminar la activación automática con
los navegadores, bastará con borrar la librería amcis.dll, así como
sería adecuado eliminar las entradas en el registro que le hacen
referencia.
bernardo@hispasec.com
Deja una respuesta