Wajam Internet Technologies es una start-up fundada en diciembre de 2008 por Martin-Luc Archambault (famoso emprendedor en Quebec) con base en la ciudad de Montreal, Canadá. El principal producto de la compañía es una aplicación de motor de búsqueda social (permite realizar búsquedas a través de contenido compartido por otros contactos en redes sociales). La Figura 1 ilustra un ejemplo de lo que Wajam despliega cuando se realiza una búsqueda en Google.

Figura 1. Resultados de búsqueda de Wajam a partir de una búsqueda en Google (ejemplo oficial de Wajam)

El software es de instalación gratuita; aunque genera ingresos a partir de desplegar publicidad contextualizada. Con respecto a su distribución, una extensión para el navegador estuvo disponible inicialmente en el sitio oficial de Wajam hasta 2014 (ver Figura 2), pero ahora se distribuye principalmente mediante el modelo de distribución Pay-Per-Install (PPI). Según la Oficina del Comisionado de Privacidad (OPC) de Canadá, Wajam ha utilizado más de 50 proveedores diferentes de PPI entre 2011 y 2016. Este modelo ha sido criticado varias veces por el uso de falsas versiones de Adobe Flash Player, de soluciones antivirus y de varios otros populares instaladores de software para engañar al usuario, así como también por la fuerte presencia de adware y malware en los instaladores proporcionados.

Figura 2. Sitio web wajam [.] com en abril de 2012 (con enlace de descarga)

Historia y quejas de los usuarios

La historia de Wajam como compañía es bastante curiosa, según el informe de 2017 del OPC y de algunas investigaciones de prensa (aquí y aquí en francés):

  • La compañía eliminó de manera progresiva y silenciosa la capacidad de vincular las cuentas de Facebook, LinkedIn y Google+ con su software entre 2012 y 2014, pese a que su principal función depende de ello.
  • Muchos usuarios empezaron a quejarse a partir de 2012 de la gran cantidad de anuncios en el navegador web y la dificultad para desinstalar Wajam (ver Figuras 3, 4 y 5). Según D&B Hoovers, la compañía generó alrededor de USD 4.2M de ganancias netas en 2013.

Figura 3. Queja del usuario # 1 sobre Wajam

Figura 4. Queja del usuario # 2 sobre Wajam

Figura 5. Queja del usuario # 3 sobre Wajam

  • Mientras la OPC investigaba a la compañía por violar la Ley de Protección de la Información Personal y Documentos Electrónicos (PIPEDA, por sus siglas en inglés) debido al uso de la información personal de los usuarios, la compañía se vendió a una compañía de reciente creación con sede en Hong Kong, llamada Iron Mountain Technology Limited (IMTL).

La línea de tiempo en la Figura 6 resume algunos eventos notables en la historia de la compañía.

Figura 6. Historia de Wajam Internet Technologies Incorporated

En paralelo a la historia de la compañía, la Figura 7 expone la línea de tiempo de las funciones para evitar su detección y análisis que se fueron agregando al software.

Figura 7. Cronología de las características de anti-detección y anti-análisis agregadas a Wajam

Observaciones comunes sobre las diferentes versiones de Wajam

Varias versiones de Wajam se han desarrollado a lo largo de los años. Dado que los desarrolladores utilizaron los nombres internos y la numeración de versiones para distinguir las diferentes variantes y creaciones, fue posible clasificar la colección de muestras recopiladas. La siguiente tabla resume las versiones identificadas; tenga en cuenta que las fechas se basan en el momento en que se observaron las muestras de forma activa y que es posible que estuvieran disponibles antes.

Internal name(s) Major version number Type Period of distribution
Priam 1 Browser extension Late-2011 to 2014
Wajam Internet Enhancer, Wajam Network Enhancer 2 Windows application 2013 to 2016
Wajam Web Enhancer, Social2Search 1 and 9 Windows application 2014 to 2017
Wajam Browser Enhancer, Social2Search, SearchAwesome 3, 11 and 13 Windows application 2016 to present
SearchPage N/A macOS application 2017 to present

Inyección de tráfico

Cada versión de Wajam inyecta el mismo payload en el tráfico web del usuario, por lo que la diferencia reside en la técnica utilizada para hacer la intercepción y la inyección. Sin embargo, las técnicas que utilizaron se volvieron más y más similares a las técnicas que normalmente utilizan los desarrolladores de malware. Una vez que Wajam se instala en una máquina y el tráfico web está listo para ser interceptado, el software actúa de la siguiente manera:

  1. Descarga una lista de sitios web compatibles (ver Figura 8) desde un servidor remoto; esta lista asigna un nombre de dominio a la ruta del archivo JavaScript correspondiente que será inyectado. También hay algunas configuraciones específicas del sitio.

Figura 8. Fragmento de la lista de sitios web compatibles

  1. Si una URL solicitada por el usuario coincide con uno de los patrones (103 en la última versión en el momento de la escritura), se inyecta el archivo JavaScript correspondiente (ver la Figura 9). Este script realiza la inyección de publicidad contextual y, si la página web es un motor de búsqueda, también muestra los tweets correspondientes a las palabras clave de búsqueda introducidas por el usuario.

Figura 9. Fragmento del script inyectado

  1. Finalmente, intenta actualizar la lista desde el servidor remoto de Wajam.

Filtración de información personal

Wajam recopiló de manera progresiva cada vez más información sobre sus usuarios, ya sea durante la instalación o cuando se ejecuta el software:

  • Algunas ID son utilizadas para identificar a un usuario en particular (consulte la Figura 9);
  • Una gran cantidad de registros son enviados a los servidores Wajam durante el proceso de instalación para garantizar que se realice correctamente (consulte la captura de red en la Figura 10);
  • También se envía a los servidores de Wajam cierta información específica de la configuración del usuario, como la lista de software instalado y el modelo de la máquina.

Figura 10. Consultas HTTP realizadas por Wajam durante el proceso de instalación

Mecanismo de distribución

A excepción de la extensión del navegador, el resto de las versiones fueron distribuidas como instaladores de NSIS por proveedores de pago por instalación. Además, las rutas de PDB muestran cómo los desarrolladores ofuscaron gradualmente su software a lo largo de los años. Se puede ver que las versiones posteriores en su mayoría tienen rutas PDB mucho más largas que contienen solo caracteres aleatorios.

Version Year PDB Path
1.24 2012 C:\Users\guillaume\Desktop\branches\Wajam\guillaume-installer-ie11-fix\Clients\Extensions\IE_BHO\source\wajam\Release\priam_bho.pdb
1.0 2014 D:\jenkins\workspace\dll_injection\src\Release\wajam.pdb
2.12 #rowspan# d:\jenkins\workspace\wajam-proxy-2.12-special-build-for-avs\WJProxy\obj\x86\Release\WajamInternetEnhancer.pdb
1.71 2016 D:\jenkins\workspace\stable-1.71-updates\src\Release\wajam.pdb
2.40 #rowspan# D:\jenkins\workspace\stable-2.40-update\build-tools\brh\Release\brh.pdb
3.5 #rowspan# D:\jenkins\workspace\stable-ndi-3.5\service\Win32\Release\service.pdb
1.75 2017 JTBEFHYO.pdb
9.68 #rowspan# 213.pdb
13.14 2018 K:\ga3ENOmcbYZO\5KSW\LXp8N\8PAW5Gq\jilgGJGN\wpoaCyFg\PC\ryX9i9P5jRrW\yaG9wzTA\vev\v8Co9rukntHI\FkVb9h7W\LCJhFhGGbCeC\m1swYV.pdb
13.14 2019 C:\D6IMFxtAM\IrsnBhaB8\LpY2EgA6h6GILy\xnyDw\tB\6hQ5AYqFBonqUM\f6rO3gJCEu6c\AFDkjWdw\iWFUHutqE\ywARjkk\tLo4m0i4r6psP3EHIIy.pdb

Evolución de las características

Priam: la extension del navegador

Desde 2011 hasta finales de 2013, Wajam se distribuyó como una extensión para el navegador. En una extensión de navegador web, el archivo mencionado describe las páginas web que serán  inyectadas y cómo el código JavaScript se inyecta en esas páginas si el usuario las visita. Como se puede apreciar en la Figura 11, todas las páginas web coinciden aquí, por lo que los scripts pueden ser potencialmente inyectados en todas las páginas web visitadas por el usuario.

Figura 11. Fragmento de la configuración del archivo manifest.json

Las anteriores versiones de la extensión del navegador contienen rastros de un plugin para realizar capturas de pantalla (ver Figura 12) en una DLL que acompaña a la extensión. Este último utiliza el plugin de la API de Netscape (para Chrome y Firefox) o un Browser Helper Object (para Internet Explorer).

Figura 12. Fragmento de código de ensamblaje en un plugin de la extensión para el navegador de Wajam

En las mismas versiones, el código JavaScript es utilizado para enviar los marcadores del navegador a los servidores Wajam. Tanto si se trata de capturas de pantalla como de marcadores, ambos pueden contener información personal sensible sobre un usuario y uno puede preguntarse qué hace Wajam con este tipo de información. Ninguna de las funciones está presente en la versión actual de la extensión.

Debido a que su software fue detectado como adware por varios productos de seguridad, Wajam primero intentó eliminar las detecciones preguntando directamente a los proveedores de seguridad (ver Figuras 13 y 14).

Figura 13. Intento de Wajam para eliminar una detección de McAfee de la extensión del navegador

Figura 14. Otro intento de Wajam para eliminar la detección de su extensión para el navegador

WJProxy

En 2014, observamos un cambio en la estrategia de Wajam. Su software ya no estaba disponible como una extensión de navegador; sus enlaces de descarga se eliminaron de su sitio web oficial (wajam [.] com) y se distribuyó una nueva versión de Windows, que utiliza el proxy web Fiddler, a través de los proveedores de PPI.

Las características más destacadas de esta nueva versión son:

  • Utiliza el SeDebugPrivilege para iniciar el ejecutable principal con permisos de acceso de administrador.
  • Genera un certificado y lo agrega a la lista de certificados raíz para interceptar el tráfico SSL / TLS y, de esta manera, evitar las advertencias de seguridad al inyectar el código JavaScript en las páginas web.
  • Establece un proxy para interceptar todo el tráfico web y las preferencias de los navegadores web instalados, y el registro de Windows se ha manipulado para usar el proxy.

Wajam en la fantasía del juego Warhammer

Al mismo tiempo que se observó WJProxy, se encontró otra versión activa con la capacidad de inyectar DLLs. En lugar de utilizar un proxy de terceros, inyecta una DLL en los navegadores web que se hookea de las funciones que manipulan el tráfico no cifrado. La Figura 15 muestra la arquitectura funcional de esta versión.

Figura 15. Arquitectura de Warhammer Wajam

Curiosamente, esta versión utiliza algunas técnicas de ofuscación, como el cifrado de strings (ver Figuras 16 y 17).

Figura 16. Descifrado del string NtLoadDriver (salida de Hex-Rays)

Figura 17. Rutina de descifrado de string (salida de Hex-Rays)

Además, los archivos que contienen la lista de sitios web compatibles y las direcciones de las funciones para hookear (ver Figura 18) están ambos cifrados (AES-256 CFB). Uno podría notar que los nombres de estos archivos (waaaghs y snotlings respectivamente) podrían ser una referencia al universo fantasía de Warhammer . También hay otras (sub) strings, como en el nombre de la DLL inyectada, wajam_goblin.dll , y otras dentro de los binarios, que sugieren que los autores de Wajam estaban interesados ​​por los juegos de fantasía o ficción.

Figura 18. Archivo que contiene los hooks de las funciones de los navegadores web.

Independientemente del proceso de inyección de DLL en sí, el mismo puede lograrse de diferentes maneras dependiendo del parámetro dado al inyector. La siguiente tabla resume las diferentes opciones.

Option flag Technique used to inject the DLL
--set-windows-hook SetWindowsHookEx technique
--inject CreateRemoteThread technique
--manual_mapping_inject Blackbone memory hacking library

Una vez que se inyecta la DLL, los inyectores revisan si el proceso apuntado se trata de un navegador web y si es así utiliza MinHook y el archivo de descifrado Snotlings para conectar las funciones y manipular el tráfico web no cifrado como el de Firefox PR_Write, PR_Read API, Win32 send, recv , y así.

Como las técnicas descritas anteriormente generalmente son empleadas por software malintencionado, Wajam utiliza varias técnicas para protegerse de la detección de productos de seguridad:

  • Revisa el registro de Windows en busca de claves de antivirus (ver ejemplo en la lista de la Figura 19) y envía las que encuentre a los servidores de Wajam.

Figura 19. Claves de registro de antivirus de Windows verificadas por Wajam

  • Dependiendo de la muestra, el nombre del ejecutable es ligeramente modificado, como WajWEnhance.exe, WaWEn.exe, WebEnhancer.exe, etc.
  • Desde finales de 2015, un driver de minifilter es incluido para ocultar los archivos de software en el disco de los procesos, a excepción de los que forman parte de una lista blanca. (ver Figura 20).

Figura 20. Lista de procesos incluidos en la lista blanca para el driver del minifiltro Wajam

  • Se modifica regularmente a si mismo con parches descargados de los servidores de Wajam (estos son variados y cifrados en RC4 o XOR).

Chrome and Firefox han bloqueado recientemente las inyecciones de código de terceros en sus respectivos navegadores web, por lo que esta versión de Wajam ya no funcionará si una víctima utiliza la versión actual de cualquiera de estos navegadores.

Wajam se introduce de forma profunda en el kernel

Para enfrentar los nuevos mecanismos de seguridad, a mediados de 2016 se lanzó otra versión de Wajam que agregó características nuevas importantes, incluido un driver NetFilter para interceptar e inyectar tráfico directamente en el espacio del kernel.

Figura 21. Arquitectura de la versión de Wajam NetFilter.

Uno de los muchos otros cambios que vienen con esta versión es la protección contra la detección:

  • Utiliza gran cantidad de código y ofuscación de datos (ver Figuras 22 y 23); algunas técnicas se parecen al ofuscador Stunnix C/C++.

Figura 22. Decodificación del nombre de una API de Windows (salida de Hex-Rays)

Figura 23. Rutina de decodificación de string (salida Hex-Rays)

  • Agrega exclusiones a Windows Defender ( -comando Add-MpPreference -ExclusionPath en la línea de comando);
  • Establece las entradas de registro DontReportInfectionInformation y DontOfferThroughWUAU en 1, lo cual inhabilita el reporte de infección a Microsoft así como las actualizaciones de MSRT (Malicious Software Removal Tool).
  • Los ejecutables están firmados por certificados cuyos nombres son nombres de dominio que pertenecen a Wajam y a su vez cambian de manera frecuente (ver Figuras 24 y 25).

Figura 24. Certificado digital de un ejecutable de Wajam descubierto en VirusTotal

Figura 25. Certificado digital de otro ejecutable de Wajam descubierto en VirusTotal

Esos nombres de dominio son marcas registradas de Wajam, de acuerdo con el Registro Empresarial de Quebec (ver Figura 26). Además, algunos de los nombres de dominio (más ejemplos en la sección IoC) están relacionados con los nombres de las calles de Montreal (como "Adrien Provencher", "Bernard", "Mont-Royal", etc.).

Figura 26. Registro de empresas de Quebec con algunos nombres de dominio Wajam

SearchPage: Wajam dirigido a usuarios de macOS

A partir de 2017 se detectó un nuevo adware creado por Wajam llamado SearchPage y dirigido a los sistemas macOS. El análisis muestra que utilizó algunos nombres de dominio también utilizados en las últimas versiones de Windows (consulte la Figura 24).

Figura 27. Fragmento del Info.plist que muestra el nombre de dominio registrado de Wajam

Es distribuido como un paquete de aplicaciones para macOS llamado spiinstall.app, que instala un plugin de Safari y un certificado en el keychain (el indicador de posición del certificado raíz en macOS). Este plugin inyecta el tráfico de manera similar a las versiones de Windows.

Otra versión descubierta a mediados de 2018 usa mitmproxy (un proxy web escrito en Python) en lugar de la extensión Safari para interceptar el tráfico web. La Figura 28 muestra cómo es utilizado el proxy, así como la presencia de la URL registrada en Wajam hardcodeada en el script.

Figura 28. Uso de mitmproxy para inyectar JavaScript

Como este malware ya ha sido documentado por MalwareBytes, se pueden encontrar más detalles en su análisis.

Implicaciones y conclusiones

Esta investigación revela que, a pesar de la transferencia de propiedad a una empresa de Hong Kong, Wajam sigue siendo muy activo y bajo múltiples nombres, como SearchAwesome, Social2Search, SearchPage, etc. Suponemos que esto último se debe a la intención de esconder sus huellas y de expandir su presencia con la ayuda de la distribución de PPI.

Nuestro análisis muestra que las técnicas utilizadas por Wajam para inyectar tráfico se volvieron cada vez más maliciosas y persistentes a medida que se lanzaban nuevas versiones. Comenzaron con una simple extensión de navegador (2011), cambiaron a un método proxy a fines de 2013, luego, a partir de 2014, directamente inyectaron código en los navegadores web para hookearse de las funciones de comunicación de la red, y ahora están usando un driver para interceptar el tráfico directamente en el Kernel. Estos cambios múltiples a lo largo de los años han respondido en gran medida a las mejoras en las protecciones de seguridad integradas en los navegadores o en el sistema operativo.

El uso de este tipo de técnicas implica que hay posibilidades de que los productos de seguridad lo detecten, y esto le ha sucedido a Wajam. A pesar de que la historia de la compañía muestra que primero intentaron solicitar la eliminación de los sistemas de detección (2012-2013), rápidamente cambiaron su estrategia (2014) y decidieron hacer uso de ofuscación, protección de código y técnicas que eviten la detección y así lograr ocultar el verdadero comportamiento de su software.

El caso Wajam nos recuerda que todavía hay una zona gris cuando se habla de Adware y de aplicaciones no deseadas, también conocidas por siglas en inglés como PUAs. De hecho, por más que utilicen técnicas para ocultar su comportamiento a los usuarios y productos de seguridad, mostrar anuncios es aún más molesto que perjudicial para el usuario. Sin embargo, uno debe ser consciente del nivel de persistencia utilizado por algunos de este software.

Indicadores de Compromiso (IoCs)

Hashes

SHA-1 Detection name
6a393ecb2861a27240d322dd407f6adb7218b0a5 Win32/Adware.Wajam.A
4793f3bdab6df0ac6481b3780a10bec0ac10dce1 Win32/Adware.Wajam.BH
7a45f4c7a7eeaa6ef97c036a7bfc992d405cd270 Win32/Adware.Wajam.G
89d03d810345f491e7999af04873932ce77f7cd1 MSIL/Wajam.F
f0c78bece6e447333bcb21972dc440aee723f12d Win32/Adware.Wajam.AC
b6733a21f5fbf34286374ed5cd02e86b6c369db1 Win32/Adware.Wajam.BH
3d29d74b68d749d45596eb04063c4640a523c0ba Win32/Adware.Wajam.BH
f216d986f3fdc838aaca05fafb8e5b728e36513b Win32/Adware.Wajam.AN
34ce5529ad0f9d0101f2ca635876082830b48b83 Win32/Adware.Wajam.AL
f5f71c6f6924fa94eb1f5a8c4a4b1775d64e9e87 Win32/NetFilter.A
336efd61ab265977144ca308e635cfbee29b86a8 Win32/NetFilter.N
a61a9262bc13c023750af89a483cb571663c8a0e Win32/Adware.Zdengo.CA
83e05c610d0fe6488183b7db812c69962180aabb Win32/Adware.Zdengo.CPZ
ae97c477f803121185f3c9f44c22934941df7e94 Win64/Riskware.NetFilter.AA
6da090ad4a324e12b03a492b62cb47d274b3cd6e Win32/Adware.Zdengo.DED
35530aa44220ae7e96de05fd90dd1e64bb6cd199 Win32/Adware.Zdengo.COT
6b626695d5d1c64376af81cef441e17cdc92f006 Win32/Adware.Zdengo.CXG
6725a7c721bea20494e2e6036b11bb6d0531f829 Win32/Adware.Zdengo.CRR
fb26f538384cd50988a2a5f27b6443f16a92cee1 Win32/RiskWare.NetFilter.AY
ecd1e57c1fdc32052f0be1241691e91f869ef026 OSX/Adware.SearchPage.B
ff6c756fc3cfa06c53fe9458d7608c7c350c83bb OSX/Adware.SearchPage.B
fea551bcfbdbaba20b0b6556649029928888faf2 OSX/Adware.SearchPage.A

Rangos de direcciones IP

217.182.14.0/24
131.153.5.192/29
198.24.161.72/29

Nombres de dominio (lista parcial)

adrienprovenchertechnology[.]com
armandlamoureuxtechnology[.]com
bernardtechnology[.]com
carmenbienvenuetechnology[.]com
cartiertechnology[.]com
chabaneltechnology[.]com
chaumonttechnology[.]com
colonialetechnology[.]com
cormacktechnology[.]com
customsearches[.]net
despinstechnology[.]com
hutchisontechnology[.]com
imt-dashboard[.]tech
jeanlesagetechnology[.]com
kingwintechnology[.]com
laubeyrietechnology[.]com
lauriertechnology[.]com
mansactechnology[.]com
mounactechnology[.]com
notification-results[.]com
notifications-page[.]com
notifications-service[.]info
notifications-service[.]io
papineautechnology[.]com
premiumsearchhub[.]com
premiumsearchresults[.]com
premiumsearchtech[.]com
preverttechnology[.]com
search-awesome[.]net
search-ology[.]com
search-technology[.]net
searchawesome-apps[.]com
searchawesome[.]net
searchawesome2[.]com
searchawesome3[.]com
searchesandfind[.]com
searchfeedtech[.]com
searchforall[.]net
searchforfree[.]net
searchnewsroom[.]com
searchnotifications[.]com
searchpage-results[.]com
searchpage-results[.]net
searchpage[.]com
searchpageresults[.]com
searchsymphony[.]com
searchtech[.]net
securesearch[.]xyz
seekoutresultz[.]com
sirwilfridlauriertechnology[.]com
social2search[.]com
tazotechnology[.]com
technologieadrienprovencher[.]com
technologieairflow[.]com
technologiearmandlamoureux[.]com
technologiebeaumont[.]com
technologiebernard[.]com
technologiecarmenbienvenue[.]com
technologiecartier[.]com
technologiechabanel[.]com
technologiechaumont[.]com
technologiecoloniale[.]com
technologiecormack[.]com
technologiedollard[.]com
technologieduluth[.]com
technologiehutchison[.]com
technologiejeanlesage[.]com
technologiekingwin[.]com
technologielaubeyrie[.]com
technologielaurier[.]com
technologiemansac[.]com
technologiemontroyal[.]com
technologiemounac[.]com
technologieoutremont[.]com
technologieprevert[.]com
technologierachel[.]com
technologieruso[.]com
technologiesaintdenis[.]com
technologiesaintdominique[.]com
technologiesaintjoseph[.]com
technologiesaintlaurent[.]com
technologiesainturbain[.]com
technologiesearchawesome[.]com
technologiesirwilfridlaurier[.]com
technologiestdenis[.]com
technologiestlaurent[.]com
technologiestuart[.]com
technologietazo[.]com
technologietravassac[.]com
technologietrudeau[.]com
technologievanhorne[.]com
technologiewiseman[.]com
technologieyvonlheureux[.]com
travassactechnology[.]com
trudeautechnology[.]com
wajam-download[.]com
yvonlheureuxtechnology[.]com

MITRE ATT&CK techniques

Tactic ID Name Description
Persistence T1179 Hooking Use MinHook to hook web browser functions and intercept web traffic.
Privilege Escalation T1134 Access Token Manipulation Obtain user token to execute itself with API call CreateProcessAsUserA under user’s context.
Defense Evasion T1014 Rootkit Use minifilter and NetFilter drivers to respectively hide its files and intercept web traffic.
T1116 Code Signing Some samples are signed with different digital certificates.
T1089 Disabling Security Tools Add exclusions in Windows Defender and disable MRT updates.
T1130 Install Root Certificate Install a root certificate to aid in man-in-the-middle actions.
T1027 Obfuscated Files or Information Most of the strings are encrypted with an XOR-based algorithm and some payloads are encrypted with AES-256 or RC4.
T1055 Process Injection Inject a DLL in web browsers (CreateRemoteThread, SetWindowsHookEx or BlackBone library) to intercept web traffic.
Discovery T1063 Security Software Discovery Attempt to detect several antivirus products.