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.
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.
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.
- 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.
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.
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:
- 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.
- 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.
- 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.
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.
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).
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).
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.
Curiosamente, esta versión utiliza algunas técnicas de ofuscación, como el cifrado de strings (ver Figuras 16 y 17).
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.
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.
- 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).
- 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.
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++.
- 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).
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.).
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).
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.
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. |