1 puntos por GN⁺ 2023-08-09 | 1 comentarios | Compartir por WhatsApp
  • La utilidad para alternar automáticamente entre modo claro/oscuro en macOS se convirtió, tras su adquisición a fines de 2022, en una herramienta que incorpora dispositivos a una botnet sin consentimiento del usuario
  • TPE.FYI LLC, la entidad adquirente, usa los dispositivos de los usuarios como gateways para tráfico de Internet con base en sus términos de uso, y no es posible desactivar esta función aunque se cierre la app
  • Durante la instalación se registra un launch agent que se ejecuta con privilegios root y arranca automáticamente al iniciar el sistema; no puede desactivarse desde la aplicación
  • Un daemon disfrazado de “actualización automática” levanta un proxy HTTP local y abre un túnel SSH hacia un servidor externo para desviar tráfico a través de la conexión de Internet del usuario
  • Se usa el SDK Pawns de IPRoyal, una empresa que vende proxies residenciales, en una estructura donde el ancho de banda de Internet del usuario se revende para estudios de mercado

Qué es NightOwl y cómo cambió

  • NightOwl es una app existente desde 2018 que ofrece la función de alternar automáticamente entre los modos claro y oscuro del sistema operativo
    • Una alternativa que suplía la limitación del modo automático integrado de macOS, que solo cambia cuando el usuario está ausente
  • Tras ser adquirida por TPE.FYI LLC a fines de 2022, incorporó por la fuerza los dispositivos a una botnet para estudios de mercado sin conocimiento ni consentimiento explícito de los usuarios
    • No hay aviso separado más allá de la letra chica de los términos en la página de descarga
    • Esta función no puede desactivarse ni siquiera cuando la app está cerrada
  • El comportamiento está especificado en los términos de uso (TOS)
    • Modifica la configuración de red del dispositivo para compartir tráfico de Internet y usa el dispositivo del usuario como gateway
    • Los clientes destinatarios del gateway incluyen empresas de áreas como investigación web y de mercado, SEO, protección de marca, distribución de contenido y ciberseguridad
  • Se consultó a NightOwl, pero no hubo respuesta

Cómo eliminarla

  • Aunque la app no esté en ejecución, si solo está instalada, es necesario ejecutar comandos de eliminación en la terminal
    • sudo killall NightOwl
    • launchctl unload ~/Library/LaunchAgents/NightOwlUpdater.plist
    • sudo killall AutoUpdate
    • sudo rm -rf /Applications/NightOwl.app/ ~/Library/LaunchAgents/NightOwlUpdater.plist
    • sudo zsh -c "rm /Users/*/Library/LaunchAgents/NightOwlUpdater.plist"

Análisis técnico del funcionamiento

  • Al instalarse registra un launch agent llamado org.nightowl.autoupdater.com
    • Convierte en daemon el proceso /Applications/NightOwl.app/Contents/Helpers/AutoUpdate y lo ejecuta al iniciar el sistema con privilegios root
    • No puede desactivarse a través de la aplicación y ocurre silenciosamente, sin conocimiento ni consentimiento del usuario
  • El aviso que muestra la app se limita a la recopilación de estadísticas de Google Analytics
    • Indica que rastrea datos para analizar cómo se usa la función y errores
    • Afirma que, con la opción "anonymizeIp", oculta la última parte de la IP para garantizar la recopilación de datos anonimizados
    • Indica que se puede optar por no participar del rastreo desmarcando “Send Statistics” en la configuración
    • Sin embargo, aunque se desactive el envío de estadísticas, el launch agent no se desactiva
  • El daemon de “actualización automática” realiza tres tareas
    • Verificar actualizaciones de la app mediante Sparkle
    • Reportar crashes mediante Sentry
    • Ejecutar un proxy HTTP local en el puerto 40701 (modificable mediante un archivo json de configuración dentro del bundle de la app)
    • El último punto es un comportamiento inesperado en una app que se presenta como autoactualizador
  • Estructura del proxy y túnel SSH

    • El daemon usa sudo para cambiar de root a la cuenta principal del usuario y luego ejecuta nightowl_t.dylib
      • Es una copia de tinyproxy, bajo licencia GPLv2, pero podría estar infringiendo la GPL al no incluir aviso de licencia GPL
      • Funciona como proxy HTTP(S)
    • Abre una conexión SSH mediante un archivo renombrado de autossh como nightowl_a.dylib (sin licencia)
      • El destino es testconnectuser2023@proxy-gw1-europe.squidyproxy.com, puerto 2043
      • Usa una clave pública soltada en /tmp con extensión .uu y tuneliza un puerto remoto hacia local con la opción -R
      • La clave se obtiene mediante una solicitud HTTPS a proxy-api1.squidyproxy.com
      • Ese dominio fue registrado en GoDaddy en abril de 2022, y la IP está alojada por Microsoft
    • Este servidor SSH tiene habilitado el acceso a shell
    • Tras una conexión exitosa, el tráfico HTTP se entrega hacia el lado del usuario y sale al exterior a través de su conexión de Internet
  • Intento de port forwarding con UPnP

    • Intenta abrir port forwarding UPnP en el router, pero falla porque los nombres de las claves están mezclados
      • La solicitud SOAP enviada incluye la acción AddPortMapping y el valor ip royal paws

Estructura de reventa de ancho de banda (Pawns / IPRoyal)

  • La app parece usar el SDK de Pawns
    • Pawns es una app que paga USD 0.20 por GB por el ancho de banda de Internet compartido por el usuario
  • La entidad que opera Pawns es IPRoyal
    • Una empresa de proxies que vende conexiones proxy residenciales a USD 1.75 por GB
    • Se promociona como “IP obtenidas de forma 100% ética”

Qué es “TPE.FYI LLC”

  • TPE (o Keeping Tempo, Tempo AI) está desarrollando un modelo de precios para que los recintos fijen el precio de las entradas según la demanda real de los artistas, con base en análisis como vistas de videos en YouTube y datos de popularidad por región
    • No tiene relación con Tempo AI Calendar ni Tempo AI Gym
  • La información relacionada es escasa, y casi no hay material posterior a 2018
  • Al momento de la redacción, las instalaciones verificadas intentaban conectarse repetidamente a https://stubbs.frontgatetickets.com/
    • Ese sitio vende entradas para presentaciones de música en vivo de un restaurante en Austin, Texas
  • La empresa fue fundada en Austin, Texas, en septiembre de 2018 y disuelta en marzo de 2023 por “Jarod Stirling”
    • La dirección es The Muse at SoCo, 1007 South Congress Avenue, Apartment 443, Austin, Texas, 78704

1 comentarios

 
GN⁺ 2023-08-09
Opiniones de Hacker News
  • Sé que este tipo de cosas pasa bastante seguido, pero me pregunto con qué frecuencia las empresas actualizan sus términos de servicio con este tipo de texto.
    La idea misma de unos términos de renovación automática que rijan todo uso de forma permanente me parece algo que debería haberse bloqueado legalmente hace mucho tiempo.
    El texto actual de NightOwl dice que pueden cambiar los términos y la información de precios en cualquier momento, que entran en vigor apenas se publiquen en el sitio web, y que NightOwl decide a su exclusivo criterio si un cambio es “sustancial”.
    Avisar cambios en los términos de una app instalada localmente mediante una actualización del sitio web me hace pensar: ¿también se supone que hay que suscribirse a sus feeds sociales para enterarse?

    • Un amigo que firmó hace unos años un contrato de internet/teléfono empresarial con Comcast vio un texto parecido, y ni siquiera había una URL real.
      Por intuición, parecía una cláusula inaplicable y abusiva, aunque uno pensaría que el equipo legal de Comcast la revisó.
      Me pregunto si hay algún abogado que sepa si este tipo de texto es válido cuando los cambios de contrato se publican en un sitio web, sobre todo si no hay una notificación aparte.
    • Me pregunto si maps.me no estará en una situación parecida.
      Antes era un buen frontend para OpenStreetMap, pero tengo entendido que fue adquirida por una firma de inversión para monetizarla.
      Me intriga cuál es el estado actual de la app, si su modelo de ingresos se parece al que se describe aquí, y qué convendría usar como alternativa.
    • Este tipo de cláusulas ya fueron anuladas antes, y si alguien tiene ganas de demandar, es muy probable que vuelva a pasar: https://arstechnica.com/tech-policy/2007/07/court-says-no-to..., https://scholar.google.com/scholar_case?case=592583419165850...
      En el caso de Safeway, el tribunal determinó que un consumidor no puede aceptar términos futuros que aún no existen, y que, si no recibió aviso del cambio de términos, no puede considerarse que aceptó los términos modificados solo por seguir usando el servicio.
    • Me pregunto si recientemente hubo un cambio similar de política o funcionalidad en la extensión de Chrome The Great Suspender.
      Creo que los navegadores la marcaron como insegura.
  • Que la app haga muchas conexiones a sitios de venta de boletos para música en vivo es un uso común de los proxies residenciales.
    Los revendedores de boletos usan los dispositivos de usuarios infectados para evadir bloqueos a hosts de centros de datos o límites de acceso masivo, y así aumentar sus probabilidades de conseguir boletos que después puedan revender con ganancia.
    A veces, extensiones gratuitas de navegador, apps de VPN, etc., con una puerta trasera instalada por el creador, por alguien que comprometió el repositorio, o por un comprador como en este caso, convierten los dispositivos de los usuarios en este tipo de proxies.

    • NordVPN también usa este método.
      Google y Amazon poseen grandes rangos de IP para sus servicios en la nube, así que los bots basados en AWS o Google Cloud son relativamente fáciles de detectar.
      En cambio, Verizon también tiene grandes rangos de IP que asigna a sus clientes residenciales, y NordVPN aprovecha que servicios como Netflix o Amazon no quieren bloquear todo el rango de IP de Verizon para hacer que el tráfico parezca residencial.
  • Detesto las adquisiciones silenciosas.
    También es terrible que sea muy común que actores maliciosos compren extensiones de Chrome para desarrolladores y luego las conviertan en malware.

    • Como administrador de una extensión de Chrome moderadamente popular, recibí tantas ofertas de adquisición que empecé a recopilarlas públicamente para que todos pudieran verlas.
      https://chrome.google.com/webstore/detail/hover-zoom%20/pccc...
      https://github.com/extesy/hoverzoom/discussions/670
    • Me parece buena la idea de una app que vigile a los dueños de las apps.
      Bastaría con que envíe una alerta grande si el dueño cambia de la noche a la mañana.
    • Ahí está el problema de las apps gratuitas.
      Casi nadie quiere donar, y las empresas decentes tampoco compran apps para monetizarlas, así que al final solo las peores empresas, las que quieren explotar a los usuarios, terminan comprando extensiones y apps.
      Estas apps gratuitas tienen valor, pero no se traducen en ingresos para el desarrollador, así que se termina buscando otro camino.
    • Me recuerda a cuando ActionDash fue adquirida por Sensor Tower.
      Era una app muy invasiva que, para ofrecer funciones a nivel del sistema, inevitablemente necesitaba permisos enormes; que pasara sin fricción a manos de una empresa de publicidad y venta de datos no tiene sentido.
    • No entiendo qué tiene de silencioso.
      Está escrito tal cual en los términos de servicio que el usuario aceptó al usar el software, así que al final esto se reduce a algo como el principio de caveat emptor.
  • Me resulta rara la explicación de que el modo automático integrado de macOS solo cambia cuando el usuario se aleja de la computadora.
    Si configuras el horario/ubicación de Night Shift y dejas el modo oscuro en automático, cambia de inmediato; y si usas un lanzador o Spotlight, también puedes alternarlo con una línea de AppleScript como tell application "System Events" to tell appearance preferences to set dark mode to not dark mode.

    • En mi caso no es así.
      Diría que la probabilidad de que el modo oscuro se active al atardecer es de alrededor del 25%.
      Me pasó durante años, incluso hasta Ventura, y me pregunto si a los demás siempre les funcionó perfectamente.
    • En 2018, cuando se lanzó NightOwl, algunas o todas estas funciones de comodidad todavía no existían.
  • Parece que Apple revocó el certificado de desarrollador
    Me pregunto si hay algún registro público que muestre cuándo fue revocado
    La carga de la app quedó bloqueada, pero las dos dylib seguían ejecutándose, así que pensé que quizá ocurrió después de que la revocación del certificado ya había empezado
    Como seguían ejecutándose incluso después de cerrar sesión y volver a iniciarla, también podría ser que persistan más allá del cierre de sesión
    También apareció un aviso del firewall de macOS preguntando si se debía permitir que el binario AutoUpdate mencionado recibiera conexiones, así que todo esto parece haberse distribuido en los últimos días
    Al reiniciar apareció el cuadro de diálogo “NightOwl” will damage your computer. You should move it to the Trash., y aunque lo permití, /Users/*/Library/LaunchAgents/NightOwlUpdater.plist y el archivo de preferencias normal quedaron ahí, así que no se limpió por completo
    Para usuarios no técnicos que no se sienten cómodos con la terminal, probablemente convenga indicarles que reinicien

  • En mi entorno, macOS bajó la app y se negó a abrirla
    En su lugar cambié a NightFall: https://github.com/r-thomson/Nightfall

    • También se puede poner Configuración de pantalla directamente en la barra de menús con esta opción
      Settings > Control Center > Display > Always Show in Menu Bar
      Aunque se necesita un clic extra para activar y desactivar el modo oscuro, también permite usar Night Shift y es 100% nativo
    • También se puede hacer algo muy simple con la app integrada Automator
      Abre Automator, crea una nueva aplicación, selecciona “change system appearance” y luego elige alternar entre modo claro/oscuro
      Después de guardarla, puedes abrir el nombre de esa app desde Spotlight para cambiar de modo, y supongo que también se podría hacer con Shortcuts
    • Si solo necesitas cambiar de modo, se puede hacer directamente con BetterTouchTool
      Tengo configurado un atajo global con clic derecho+Option+Command y funciona muy bien
  • Creo que debería haber una ley que pueda aprobarse para este tipo de cosas
    Debería existir un contrato implícito de que el software haga lo que dice y no haga algo completamente distinto, con sanciones fuertes si se viola

    • Tendríamos que crear cada uno nuestro propio EULA y dar por hecho que la otra parte lo aceptó implícitamente
      Si enviamos un archivo EULA de 10 MB cada vez que hacemos una solicitud a un sitio web grande y seguimos enviándolo hasta que lo acepten, eso podría convertirse en un “DDoS por EULA”
    • Las licencias comunes están redactadas explícitamente para evitar que se infiera ese tipo de contrato
      La cláusula en mayúsculas de la MIT License empieza diciendo que el software se proporciona “tal cual”, sin garantías expresas ni implícitas de comerciabilidad o idoneidad para un fin particular, y la sección 15 de la GPL contiene una redacción casi igual
      https://opensource.org/license/mit/
      https://www.gnu.org/licenses/gpl-3.0.html#section15
    • Las condiciones contractuales implícitas por ley sí existen en la práctica
      La ley británica de contratos de consumo, influida por la Directiva de Derechos del Consumidor de la UE, se amplió desde 2015 para incluir también el contenido digital, e incorpora condiciones implícitas de que los productos deben ser de calidad satisfactoria y que los servicios continuos como Netflix, Spotify o software con actualizaciones no deben cambiar drásticamente respecto de lo que se proporcionó originalmente
      https://www.legislation.gov.uk/ukpga/2015/15/part/1/chapter/...
      La mayoría de las jurisdicciones tienen normas similares, y cada país de la UE debería tener leyes que implementen la Directiva de Derechos del Consumidor
      Pero esto se aplica cuando se pagó dinero, y como NightOwl es gratis, las expectativas legales que regulan la venta de bienes y servicios no se aplican tal cual
      Que una empresa sea adquirida y se meta spyware en el producto está mal, pero tampoco sería deseable un escenario en el que un adolescente o un desarrollador aficionado que subió software libre gratuito o freeware para aprender a programar sea demandado por una gran empresa por algo tipo left-pad
      El peso de la regulación tecnológica debería recaer mucho más sobre empresas como Google, Microsoft y Apple que sobre pequeños desarrolladores que hacen utilidades gratuitas para la barra de menús o extensiones de Chrome
      Evitar que pequeñas apps gratuitas y de código abierto se conviertan en vectores de ataque a la cadena de suministro sigue siendo difícil, y requiere mejoras lentas e imperfectas como mejor sandboxing y permisos a nivel de app, monitoreo de red por aplicación y detección de anomalías, y construcción de confianza en los procesos de empaquetado/distribución; probablemente las demandas no sean la respuesta
  • La parte que dice que intenta abrir el reenvío de puertos UPnP, pero falla porque en el router los nombres de las claves están mezclados, en realidad debería fallar en cualquier router
    porque UPnP debería estar desactivado

    • Aunque UPnP es una especificación pésima, es una solución temporal para recuperar una capacidad básica que deberían tener los dispositivos conectados a Internet en entornos residenciales
      Todas las apps P2P como Tailscale tienen que actuar temporalmente como servidores y permitir tráfico entrante
      Sin esta función, por decirlo así, se convierten en ciudadanos de segunda clase, y es como tratar al usuario como a un niño
      Claro que puedes abrir puertos manualmente, pero por una UX difícil de encontrar, inconsistente y complicada, para la gran mayoría de los usuarios es algo inaccesible, y la mayoría ni siquiera sabe qué es un puerto
    • Basta pensar en familiares que usan Mac “porque no quieren lidiar con las molestias de una laptop con Windows”
      Ellos tampoco quieren la molestia de desactivar UPnP, y es muy probable que esa configuración esté activada, sepas tú más del tema o no
    • Desactivar UPnP te hace estar más seguro, pero si no desactivas también todos los NAT ALG del router, sigues expuesto
      La mayoría de los routers probablemente no tenga esa configuración, así que si un dispositivo infectado forma parte de tu modelo de seguridad, lo prudente es asumir que NAT queda prácticamente inutilizado por completo debido a los ataques NAT slipstream
      Un dispositivo infectado puede cambiar la tabla NAT del router y hacer que en la práctica funcione como UPnP, pero sin ofrecer una UI que el usuario pueda auditar
      Si usas solo IPv6 sin NAT, desactivar UPnP puede ser una buena medida de seguridad cuando estás dispuesto a administrar manualmente todas las excepciones del firewall, pero para la mayoría de la gente hoy en día, el firewall del host es la única protección confiable
    • No sé si la idea es negar por completo la necesidad misma de UPnP
      Es una afirmación bastante confusa
  • En los términos dice que “modifica la configuración de red del dispositivo del usuario para compartir tráfico de Internet usando el dispositivo como gateway de tráfico de Internet, y que entre los clientes de NightOwl hay empresas de investigación web/de mercado, SEO, protección de marca, entrega de contenido y ciberseguridad”
    Esto es de un nivel que de verdad habría que quemarlo todo

    • Normalmente pensaba que cuanto más sospechoso es algo, más se intenta ocultarlo
      Pero de verdad me pregunto por qué pusieron esto explícitamente en los términos de uso
      Si una organización mete una función tan sospechosa, parecería que también intentaría ocultar activamente que lo hace; me pregunto si escribirlo en los términos le da a NightOwl algún tipo de protección legal
      Por ejemplo, si antes podrían haberlos demandado con éxito pero al estar en los términos ya está bien, o si este tipo de conducta sospechosa es técnicamente legal con solo ponerla en los términos
    • Parece que el permiso para “modificar la configuración de red del dispositivo” ya estaba incluido en el permiso otorgado para su tarea original, cambiar al modo oscuro
      Si es así, es bastante decepcionante, y ojalá los permisos de las apps fueran más granulares
    • El uso de “enables” aquí se siente como si lo empaquetaran como una oportunidad, no como una invasión de la libertad y la privacidad
    • Hay que exponer con nombre y apellido al desarrollador y a la empresa para avergonzarlos
  • Usar Little Snitch ayuda a detectar a qué IP y direcciones se conecta una app y a bloquear esas conexiones

    • También está LuLu
    • He pagado por Little Snitch siempre que he podido
      Espero que nunca consideren venderla