Las extensiones para navegador nos facilitan la vida: ocultan anuncios molestos, traducen textos, ayudan en las compras en linea, etc. Tambien hay algunas que son indeseables: las que nos muestran publicidad o recopilan informacion sobre nuestras acciones. Pero hasta estas parecen inofensivas si se las compara con aquellas cuyo fin es robar dinero. En Kaspersky, para proteger a nuestros clientes, procesamos automaticamente muchos tipos de extensiones provenientes de diversas fuentes. Por ejemplo, descargamos extensiones sospechosas de la tienda Chrome Web y las sometemos a analisis. Hace poco descubrimos una que se conectaba a un dominio sospechoso, lo que nos puso en guardia.
La extension denominada “Desbloquear Conteudo” (del portugues “Desbloquear contenido”) para Google Chrome, estaba destinada a los usuarios brasilenos de banca en linea. Llegamos a esta conclusion porque todos los intentos de instalacion que registramos ocurrieron en Brasil. La tarea de este malware es recopilar los datos de autenticacion de las victimas (por ejemplo, nombres de usuario y contrasenas) para robarles dinero. Los productos de Kaspersky Lab detectan esta extension como HEUR:Trojan-Banker.Script.Generic.
Al momento de esta publicacion, la extension maliciosa ya se habia eliminado de Chrome Web Store.
Analisis de la extension maliciosa
Las extensiones maliciosas para navegadores suelen emplear diferentes tecnicas para burlar la deteccion antivirus (por ejemplo, tecnicas de enmaranamiento u ofuscacion). Los desarrolladores de la extension investigada decidieron no ofuscar su codigo fuente y eligieron otra via. Para recibir y transmitir datos el malware utiliza el protocolo WebSocket, que permite intercambiar mensajes con el servidor de administracion en tiempo real. De esta manera, el servidor administrador desempena el papel de servidor proxy; cuando la victima se encuentra en la pagina de algun banco brasileno, la extension redirige el trafico a este servidor proxy. Y de hecho, la extension lleva a cabo un ataque Man-in-The-Middle.
La extension “Desbloquear Conteudo” se compone de dos scripts JS, que a continuacion analizamos en detalle.
fundo.js
Lo primero que llama la atencion en el codigo del script es la funcion Websocket_init(). Dentro de la misma se crea un WebSocket, y desde el servidor (ws://exalpha2018[.]tk:2018) se descargan datos que se almacenan en chrome.storage, en la clave “manualRemovalStorage”.
Como respuesta a la peticion enviada a hxxp://exalpha2018[.]tk/contact-server/?modulo=get, la extension recibe una direccion IP, a la que se dirigira el trafico de usuarios.
En este punto hay que mencionar la tecnologia Proxy Auto Configuration (configuracion automatica de servidor proxy). Los navegadores modernos utilizan un archivo especial escrito en lenguaje JavaScript, en el que solo se define una funcion: FindProxyForURL. Mediante esta funcion, el navegador determina que servidor proxy utilizar para establecer conexiones con diferentes dominios.
El script fundo.js utiliza la tecnologia Proxy Auto Configuration cuando invoca la funcion implement_pac_script. Como resultado, la funcion FindProxyForURL se sustituye por otra, que remite el trafico al servidor del atacante, pero solo si este se encuentra en la pagina de un banco.
pages.js
En este script, el siguiente fragmento del codigo es el mas importante:
En la clave “manualRemovalStorage”, al igual que en el caso del script fundo.js, se almacenan los datos descargados del servidor: los dominios de algunos bancos brasilenos y el codigo que el navegador debe ejecutar si el usuario entra al sitio correspondiente.
El script pages.js descarga desde el dominio ganalytics[.]ga y ejecuta los siguientes scripts en los sitios web de los bancos:
- ganalytics[.]ga/bbf.js,
- ganalytics[.]ga/bbj.js,
- ganalytics[.]ga/cef.js,
- ganalytics[.]ga/itf.js,
- ganalytics[.]ga/itf_new.js.
Todas las secuencias de comandos enumeradas tienen funciones similares y estan disenadas para robar los datos de autentificacion del usuario. Procedamos al analisis de una de ellas.
cef.js
Una de las funciones de este script es anadir un codigo HTML a la pagina de inicio del sistema bancario en linea.
Al observar con mas detenimiento el codigo que el servidor envia como respuesta, queda claro que su funcion es capturar las contrasenas de un solo uso destinadas a la autenticacion en el sitio web del banco.
Si el usuario esta en la pagina donde se ingresa el inicio de sesion y contrasena, el script clona el boton “Iniciar sesion”. Tambien crea una funcion que controla las pulsaciones sobre el mismo. Asimismo, permite que la contrasena se almacene en archivos cookies para despues transmitirla al servidor de administracion a fin de pulsar el verdadero boton, que esta oculto a la victima.
Como resultado, no solo se envia la contrasena de la cuenta al sistema bancario en linea, sino tambien al servidor de los ciberpiratas.
El analisis adicional de los recursos utilizados en el ataque, realizado en KL Threat Intelligence Portal, permite obtener informacion relevante. Por ejemplo, el script ganalytics[.]ga, mencionado anteriormente, esta registrado en un area de dominio relacionada con Gabon, por lo cual los servicios Whois proporcionan relativamente poca informacion al respecto:
Sin embargo, la direccion IP en la que se hospeda esta asociada a varios otros dominios curiosos.
Se puede observar ver que en la misma direccion IP se encuentran (o se encontraban) otros dominios con nombres caracteristicos, que contienen las palabras advert, stat, analytic, que tambien estan registrados en la zona de dominio de Brasil, .br. Vale decir que muchos de ellos estuvieron vinculados con la distribucion de scripts de mineros web durante la pasada primavera, cuya descarga se realizaba al visitar sitios legitimos de bancos brasilenos.
La descarga de software malicioso al visitar un recurso legitimo suele indicar que la modificacion del trafico ocurre localmente, en los equipos de los usuarios. Y algunos otros datos, como el centrarse en los usuarios brasilenos y el uso de la misma direccion IP, sugieren que la extension descrita (u otras similares) tenia la posibilidad de agregar scripts de extraccion de criptomonedas en los sitios web visitados por los usuarios del banco en el momento de la descarga.
Conclusion
Las extensiones para navegador destinadas a robar nombres de usuario y contrasenas son bastante raras. Pero dado el posible dano que pueden infringir, hay que tomarlas en serio. Le recomendamos que elija extensiones verificadas, que tengan un gran numero de instalaciones y comentarios en Chrome Web Store u otro servicio oficial. Despues de todo, a pesar de las medidas de proteccion adoptadas por los propietarios de esos servicios, las extensiones maliciosas todavia pueden penetrarlas, como en uno de los casos que tuvimos la oportunidad de analizar. Tampoco esta demas contar con una solucion de seguridad que lance una advertencia cuando una extension instalada empiece a comportarse de forma sospechosa.
Una extensión “Man-in-the-middle” para Chrome