Miscellaneous

domingo, 15 de mayo de 2016

Comprometiendo la privacidad de un usuario con una sencilla extensión para chrome

Antes que nada quiero dejar en claro que todo lo expuesto a continuación es para fines educativos y no para uso indebido o para fines lucrativos. No me hago responsable del mal uso o de las consecuencias que puedan llegar a suceder si el método aquí descrito es aplicado de manera errónea o incorrecta. 

Ahora sí, empecemos :)..

Primero que nada, ¿Qué es una extensión para chrome?, simple, y tal como lo define google, son "pequeños programas que incorporan nuevas funciones al navegador para personalizar tu experiencia de navegación.", es decir, son esos pequeños programas que pueden cumplir funciones tales como:
  • bloqueo de publicidad (Adblock Plus)
  • protección contra sitios web fraudulentos o con mala reputación (Avast Online Security)
  • etc.
Pues sí, son esas cositas que muchas veces agregamos a nuestro navegador chrome desde este sitio web sin ser conscientes de lo que ello implica.

Pero tranqui sigue leyendo, y te aseguro, que la próxima vez que  veas una extensión que te dice te hará ver como todo un 5up3r h4x0r N30, te sacara de la soltería y te hará billonario, te la pensaras dos veces y no la instalaras ;).

Como dije que esto se expone solo con fines educativos, no publicare una extensión en la store de google, esto para evitar que la aplicación sea instalada por alguien que no leyo este post antes, y por lo tanto desconoce lo que puede llegar a suceder si la tiene instalada (Naaa la verdad solo quiero ahorrarme 5$), pero la dejare disponible para descargar  desde este link.

bueno el primer paso para lograr el cometido es obvio, tienes que descargar la extensión, una vez descargada sigue estos pasos para instalarla:
  1. Escribe en tu barra de direcciones chrome://extensions/ y da enter
  2. Veras un listado con todas las extensiones que tu navegador tiene instaladas, ahora tienes que arrastrar a esta pantalla la extensión que descargaste y listo, ya haz instalado la extensión que te hará ver como un 5up3r h4x0r N30, te conseguirá novia y te hará billonario.
No te creas jeje :P, La verdad la aplicación a simple vista no hace nada del otro mundo, solo te cambia el fondo de todos los sitios web que visitas, cambia el color de letra y remueve todas las imágenes, es decir hace que las paginas web que visitas se vean así:

pero, ¿Qué te asegura que eso es todo lo que hace? nada, solo un análisis exhaustivo de dicha extensión te lo puede decir, así que a ello, vayamos nuevamente al listado de extensiones que tenemos instaladas en nuestro navegador (chrome://extensions) copiemos el ID (fnogiidjfnmmjllpiifaifkbcgagcdim) de la extensión llamada "5up3r h4x0r N30", busquemos la carpeta con ese nombre dentro de nuestro sistema (Un locate 'fnogiidjfnmmjllpiifaifkbcgagcdim' en sistemas basados en linux bastara), una vez encontrado analicemos primeramente el archivo manifest.json:
Este archivo es el único que debe estar presente en toda WebExtension. contiene los metadatos básicos acerca de la extensión, como su nombre, versión, y los permisos que esta requiere. También provee los enlaces a otros archivos de la extensión que analizaremos más adelante.

Las partes más interesantes en un manifest.json son los permisos y los enlaces a otros archivos .js, como podemos ver, nuestra aplicación llamada

"5up3r h4x0r N30" tiene permisos para:
  1. Alterar todos los sitios web que visitamos (http://*/*/ y https://*/*/)
  2. mostrar notificaciones
  3. e interactuar con el sistema de pestañas del navegador.
Otra de las secciones interesantes del manifest.json es la que se encarga de la lógica de ejecución de nuestra extensión, es decir, background, la cual enlaza a un archivo llamado background.js (No puedo explicar a detalle como es la anatomía de un manifest.json aquí, pero si quieres puedes profundizar leyendo la doc oficial de google).

Bueno, ahora que sabemos que nuestra extensión puede alterar todos los sitios web que visitamos y que el manifest.json apunta solo al archivo background.js, pues analicemos dicho archivo:


Ok, es muy claro, este archivo hace uso de la chrome.tabs API que nos permite crear, modificar y reordenar las pestañas del navegador, ahora ya  sabemos porque la extensión solicitaba el permiso tabs en la sección permisos del manifest.json. Para ser más especifico el código de la imagen se activa cuando alguna pestaña del navegador se actualiza, una vez activada ejecuta la función callback que se le pasa como parámetro a addListener, dicha función callback nuevamente usa la chrome.tabs API pero esta vez usa el método executeScript que lo que hace es básicamente inyectar código javascript en una página, y aunque existe la posibilidad de inyectar código directamente con este método, nuestra extensión no lo hace de esa forma, sino que hace uso de otro archivo llamado evil.js que es el que contiene el código javascript que se inyecta a la pagina cuando se abre una nueva pestaña o se actualiza una ya abierta, ahora que sabemos eso, miremos este otro archivo y veamos que es lo que hace:


Bueno, para empezar observamos que de la linea 1-5 se encuentra el código de la biblioteca jquery, que esta vez por ser una extensión que yo mismo les proporciono les aseguro no contiene ninguna linea de código malicioso (Esto no siempre es así, y lo correcto seria comprobar la integridad de dicha librería y de cualquier otra, siempre), sabiendo esto, prosigamos con las siguientes lineas, de la linea 7-10 vemos un setInterval que lo que hace es repetir cada 500 milisegundos la función callback que se le pasa como parámetro, dicha función no hace otra cosa que alterar nuestro color de fondo, color de letra, y remover las imágenes de la web que visitamos,es decir, es básicamente lo que sabemos según la descripción (Te hará ver un "5up3r h4x0r N30") hace nuestra extensión una vez la instalamos, pero ¡epa! y ¿esa ultima linea?, parece que tampoco tiene nada malicioso escondido, pero, analizando bien que es lo que hace con ese eval te darás cuenta que permite que cualquiera que sepa que usas esa extensión y haga que visites un enlace que tenga algo parecido a http://example.com#[payloadJS] podría ejecutar sin tu consentimiento código javascript y sí, es aquí en donde esta pequeña extensión pasa a poner en riesgo tu privacidad (credenciales) y la podríamos considerar como una extensión de "chrome maliciosa", sin embargo, eso lo sabemos porque hemos echo un análisis que aunque no del todo profundo, si suficiente para entender las implicaciones que puede traernos el tenerla instalada, en fin, ya para ir concluyendo queda recomendarte que o bien, cada que te dispongas a instalar una extensión para chrome de una fuente no confiable, la analices meticulosamente o no la instales, porque sí, esta extensión fácilmente evade los controles de seguridad de google al no tener en su propio código ninguna linea maliciosa, lo que significa que fácilmente puede estar disponible en la store de google, es decir, puede ser usada por el creador (Usuario mal intencionado) para ejecutar ataques dirigidos a determinados grupos o personas. Y sí, nuestra extensión puede no este tan bien decorada como para que alguien se trague la historia y se la instale, pero eso solo lo limita la creatividad del atacante, porque basta con mirar el numero de visualizaciones de este vídeo para darse cuenta que no es nada difícil llegar a un gran numero de potenciales víctimas.


Ya para finalizar les comparto el link de los payloads que son usados en este vídeo:

Como pueden ver, dichos payloads hacen que un usuario que tiene instalada nuestra extensión pueda terminar enviando sus credenciales, cookies, etc, a un servidor remoto. Y bueno eso ha sido todo por hoy, ¡happy hacking! y hasta la próxima :).

No hay comentarios.:

Publicar un comentario