2 puntos por GN⁺ 2025-01-28 | 1 comentarios | Compartir por WhatsApp
  • OpenHaystack es un framework que usa la red Find My de Apple para rastrear dispositivos Bluetooth personales, y permite crear tus propias etiquetas de rastreo con una Mac y una BBC micro:bit u otro dispositivo compatible con Bluetooth
  • Cuando un iPhone cercano detecta el anuncio BLE de un accesorio OpenHaystack, cifra la ubicación y la sube a los servidores de Apple; OpenHaystack descarga ese reporte de ubicación, lo descifra y lo muestra en un mapa
  • Este proyecto es resultado del análisis de seguridad e ingeniería inversa de la red Find My realizado por el Secure Mobile Networking Lab de TU Darmstadt; Apple corrigió la vulnerabilidad de acceso a datos de ubicación CVE-2020-9986
  • La app para macOS usa un plugin de Apple Mail para recibir reportes de ubicación; durante la instalación hay que desactivar Gatekeeper temporalmente y, mientras se usa, mantener Mail abierto
  • Al ser software experimental, el código no está probado y está incompleto; los accesorios basados en el firmware proporcionado emiten una clave pública fija, por lo que también podrían ser rastreables por otros dispositivos cercanos

Qué hace OpenHaystack

  • OpenHaystack es un framework para rastrear dispositivos Bluetooth personales a través de la red Find My de Apple
  • Los usuarios pueden crear sus propias etiquetas de rastreo y pegarlas a objetos como llaveros o mochilas, o integrarlas en dispositivos compatibles con Bluetooth como laptops
  • Lo necesario es una Mac y una BBC micro:bit u otro dispositivo compatible con Bluetooth
  • Incluso sin conexión celular, un iPhone cercano detecta el accesorio y, cuando tiene conexión de red, sube la ubicación a los servidores de Apple

Base de investigación y análisis de seguridad

  • OpenHaystack surge de los resultados de ingeniería inversa y análisis de seguridad de la red Find My de Apple, también llamada offline finding
  • El Secure Mobile Networking Lab de TU Darmstadt empezó el análisis después del anuncio de offline finding de Apple en junio de 2019
  • Este sistema combina los siguientes elementos
    • Anuncios Bluetooth

      • Criptografía de clave pública
      • Base de datos central de reportes de ubicación cifrados
      • Durante el análisis se descubrieron dos vulnerabilidades
      • La vulnerabilidad más grave permitía que una aplicación maliciosa accediera a datos de ubicación
      • Apple corrigió esa vulnerabilidad, identificada como CVE-2020-9986
      • El análisis de seguridad y privacidad relacionado se aborda en el artículo de PoPETs 2021 Who Can Find My Devices? Security and Privacy of Apple's Crowd-Sourced Bluetooth Location Tracking System

Limitaciones por ser software experimental

  • OpenHaystack es software experimental, y su código no está probado y está incompleto
  • Los accesorios OpenHaystack que usan el firmware proporcionado emiten una clave pública fija
    • Por eso, también podrían ser rastreables por otros dispositivos cercanos
    • Este comportamiento podría cambiar en futuras versiones
  • OpenHaystack no es un proyecto afiliado a Apple Inc. ni respaldado por Apple

Componentes y flujo de uso

  • OpenHaystack se compone de dos elementos
    • Aplicación para macOS: muestra la última ubicación reportada de los dispositivos Bluetooth personales
    • Imagen de firmware: hace que el dispositivo Bluetooth emita una baliza que pueda ser detectada por iPhones
  • El requisito del sistema es macOS 11 Big Sur
  • Al crear un accesorio nuevo, el usuario ingresa un nombre y, opcionalmente, elige un ícono y un color
    • La app genera un nuevo par de claves para cifrar y descifrar los reportes de ubicación
    • La clave privada se almacena en el llavero de la Mac
  • El despliegue en el dispositivo se hace conectando por USB el dispositivo compatible a la Mac y usando el botón Deploy de la app
    • En vez del despliegue integrado, también se puede copiar la clave pública usada en los anuncios y desplegarla manualmente
  • Puede tardar hasta 30 minutos en aparecer el primer reporte de ubicación en el mapa
    • El mapa muestra la ubicación más reciente de todos los elementos
    • Al hacer clic en cada elemento, se puede ver cuándo se recibió la última actualización
    • Con el botón reload se pueden actualizar los reportes de ubicación

Plugin de Mail y método de instalación

  • La app OpenHaystack requiere un plugin personalizado para Apple Mail para descargar reportes de ubicación desde los servidores de Apple
  • Este plugin funciona heredando los permisos de Apple Mail necesarios para usar APIs privadas
  • Durante el proceso de instalación hay que desactivar Gatekeeper temporalmente
    • Desactivar Gatekeeper con sudo spctl --master-disable
    • Activar OpenHaystackMail.mailbundle en Preferences → General → Manage Plug-Ins de Mail
    • Luego volver a activar Gatekeeper con sudo spctl --master-enable
  • Se indica que el plugin no accede a otros datos personales, como correos electrónicos
  • Mientras se descargan reportes de ubicación, la app OpenHaystack se comunica con el plugin, por lo que Mail debe permanecer abierto

Cómo funciona la red Find My

  • OpenHaystack explica el sistema offline finding de Apple en cuatro etapas
  • Emparejamiento

    • Para usar la red Find My se genera un par de claves pública y privada basado en la curva elíptica P-224
    • La clave privada se almacena de forma segura en el llavero de la Mac
    • La clave pública se despliega en un accesorio como una micro:bit
  • Estado perdido

    • El accesorio emite la clave pública como anuncio Bluetooth Low Energy
    • Los iPhones cercanos no pueden distinguir un accesorio OpenHaystack de un dispositivo Apple real o de un accesorio certificado
  • Descubrimiento

    • Cuando un iPhone cercano recibe el anuncio BLE, obtiene su ubicación actual mediante GPS
    • El iPhone cifra la ubicación con la clave pública incluida en el anuncio y sube el reporte cifrado a los servidores de Apple
    • Los iPhones con iOS 13 o posterior realizan este comportamiento por defecto
    • OpenHaystack no participa en esta etapa
  • Recuperación

    • Apple no sabe qué ubicación cifrada pertenece a qué cuenta o dispositivo Apple
    • Si conoce la clave pública correspondiente, un usuario de Apple puede descargar cualquier reporte de ubicación
    • Los reportes están cifrados de extremo a extremo, por lo que no pueden descifrarse sin la clave privada
    • OpenHaystack descarga desde Apple los reportes de los accesorios OpenHaystack, los descifra con la clave privada almacenada en el llavero de la Mac y muestra la ubicación más reciente en el mapa
    • Apple limita el acceso arbitrario a la base de datos permitiendo que solo usuarios autenticados de Apple descarguen reportes de ubicación

Dispositivos compatibles y expansión

  • En principio, cualquier dispositivo Bluetooth puede convertirse en un accesorio OpenHaystack rastreable mediante la red Find My de Apple
  • Actualmente, el método cómodo de despliegue de firmware solo admite algunos dispositivos embebidos
  • Los dispositivos Linux se admiten mediante scripts HCI comunes
  • Algunos ejemplos de compatibilidad son los siguientes
    • Nordic nRF51: probado en BBC micro:bit v1, compatible con despliegue desde la app; actualmente solo admite nRF51822
    • Espressif ESP32: probado en ESP32-WROOM y ESP32-WROVER, compatible con despliegue desde la app; el despliegue puede tardar hasta 3 minutos y requiere Python 3
    • Linux HCI: probado en Raspberry Pi 4 y Raspbian; debería admitir cualquier máquina Linux
  • Se puede portar a otros dispositivos compatibles con Bluetooth Low Energy, trabajando a partir del código fuente del firmware y la especificación del artículo

OpenHaystack Mobile

  • OpenHaystack Mobile es una app que reimplementa por completo la aplicación OpenHaystack para macOS en smartphones
  • Ofrece funciones de creación y rastreo de accesorios, con el objetivo especial de mejorar la usabilidad para usuarios nuevos
  • A diferencia de la app para macOS, en smartphones no se pueden obtener directamente los reportes de ubicación
    • Para acceder a la red Find My se necesita un servidor proxy alojado en hardware Mac
    • Varios usuarios pueden acceder simultáneamente al servidor proxy a través de la red
  • Para conectarse al servidor proxy, hay que configurar la URL correcta en openhaystack-mobile/lib/findMy/reports_fetcher.dart
  • OpenHaystack Mobile está construido con el Flutter framework y se ejecuta en Android e iOS

Licencia y referencias

1 comentarios

 
GN⁺ 2025-01-28
Opiniones de Hacker News
  • Ojalá hubiera una buena opción también para quienes no usan Apple. Por lo que escuché, la versión de Google es bastante mala, como era de esperarse.
    Tiene límites sobre la frecuencia con la que puedes buscar tu propia etiqueta, no muestra la ubicación hasta que la detectan varios teléfonos, y la cobertura también es mala.
    En una prueba salió que la red de Samsung era mejor, lo cual no tiene sentido, porque los teléfonos Samsung deberían ser un subconjunto de todos los teléfonos Android dentro de la red de Google. Aunque en teoría se ve bien, parece el típico producto de Google con una ejecución pésima incluso años después de que Apple mostrara cómo hacerlo.
    https://security.googleblog.com/2024/04/find-my-device-netwo...
    https://9to5google.com/2024/08/01/find-my-device-stress-test...
    https://9to5google.com/2024/08/03/google-android-find-my-dev...
    https://www.androidcentral.com/accessories/testing-new-googl...

    • Es casi absurdo que la persona a cargo de la red Find de Google haya arruinado la única función del producto por priorizar la privacidad.
      Con esta decisión, Google consiguió algunos artículos sobre mejoras “innovadoras” de privacidad antes de que se verificara lo malo que era su desempeño real, pero perdió la oportunidad de competir con Apple en este campo y también perjudicó al ecosistema Android/Pixel y su cuota de mercado. Es difícil inventar un nivel de incompetencia así.
    • Cuesta creer que Google haya arruinado tanto la red. En condiciones normales, por la cuota de Android, debería aplastar a la red de Apple.
      Para alguien que viaja de forma nómada, la red de Apple no es especialmente útil. No voy por ciudades ricas con muchos teléfonos Apple, sino por “el resto del mundo”, donde la cuota de Android se acerca al 90%. Y aun así, incluso allí parece que Apple lo hace mejor que Google.
    • Le puse uno a mis llaves y, cuando intenté usarlo una vez, incluso tras actualizar varias veces solo me mostraba un círculo con un radio de 0.25 millas.
      En realidad estaba en una bolsa justo a mi lado.
    • La solución de Samsung no es un subconjunto, sino un enfoque separado y mejor.
      Me da tranquilidad poder encontrar bien dos etiquetas incluso en aeropuertos o pueblos de países muy remotos. Este video también concluye que, incluso para usuarios de iPhone, Samsung SmartTag es lo mejor.
      https://m.youtube.com/watch?v=9wefUV_bR0Y
    • Creo que Google simplemente debería subirse a Find My.
  • Al ver el código, parece que usa permisos personales de Apple Mail para obtener las ubicaciones recopiladas por los dispositivos de la red FindMy.
    https://github.com/seemoo-lab/openhaystack/blob/8d214aa5eb68...
    Me pregunto si esto también será posible creando una cuenta de desarrollador de Apple.

    • Hay versiones que no requieren interactuar con Apple Mail.
      Lo único necesario es una cuenta de Apple, y ni siquiera hace falta ejecutar el código en hardware de Apple.
      https://github.com/biemster/FindMy
  • Quisiera encontrar un material que vi antes. Apple avisa a los usuarios sobre “etiquetas que podrían seguirte”, y recuerdo que alguien había hecho una implementación que rotaba cosas como la dirección MAC o la clave privada usando una función de derivación de claves (KDF), pero esos valores derivados eran lo bastante predecibles como para poder rastrearlos.
    Donde vivo hay un problema muy fuerte de robos menores, y el tiempo que se pierde reparando ventanas rotas o limpiando rastros de entradas forzadas es considerable. No tengo ninguna intención de confrontar a nadie directamente, pero quisiera crear algún día un historial de movimientos que pueda entregarle a un investigador privado o a las fuerzas del orden.

    • Compra un rastreador GPS celular y usa una SIM IoT muy barata, incluso gratuita.
      O también podrías llevar una caja de agua embotellada al punto de reunión de personas con adicciones más cercano y pedirles que dejen de robar tus cosas.
    • Que yo sepa, los AirTag de todos modos rotan la clave privada, así que no sé si eso ayudaría a resolver el problema.
      Aunque quizá el ciclo de rotación sea lento; no conozco bien el algoritmo exacto.
    • En mi lista de envíos hay un enlace a un artículo que escribí sobre OpenHaystack y esas alertas. En resumen, iOS nunca advirtió sobre un rastreador basado en OpenHaystack que dejé dentro de un auto durante un tiempo.
      Pero eso fue hace algunos años, así que puede haber cambiado.
  • Sería bueno que hubiera una forma de integrarlo con la app Find My en lugar de obtener la ubicación mediante un procedimiento propio e inestable.
    Como las copias chinas pueden llevar su propia marca, de algún modo claramente debe ser posible.

    • Aquí eso parece el jardín amurallado de Apple. Hace tiempo leí la especificación de Apple para socios oficiales y, durante el proceso de emparejamiento, el dispositivo firma algo con un certificado/clave emitido por Apple a ese desarrollador. Lo importante es que es una clave que pasa por un contrato, es decir, por dinero, y es distinta del par de claves que se usa en la transmisión real.
      Apple verifica esa firma, y por eso puede agregarse a esa cuenta de Apple ID y a la app. En cambio, las claves que transmiten los dispositivos en modo perdido son arbitrarias y completamente opacas, así que ni Apple tiene forma de vincularlas con un ID, un dispositivo o un desarrollador. Este proyecto funciona precisamente porque esas claves terminan llegando a los servidores de Apple.
      Las copias parecen haber robado una clave válida para el proceso de emparejamiento. Si Apple se lo propusiera y encontrara esa clave, probablemente podría eliminar todos los dispositivos de todas las cuentas, pero los dispositivos en sí seguirían transmitiendo y se podría acceder a su ubicación con un método rudimentario como el anterior. También me pregunto si el dueño original de la clave acabará recibiendo una factura enorme por regalías por dispositivo si más adelante Apple cuenta en su base de datos “cuántos dispositivos firmados con esta clave se agregaron a Apple ID”.
    • Las “copias chinas” son productos con soporte oficial, y el método está aquí: https://developer.apple.com/find-my/
    • Las copias chinas usan el programa Apple Find My, así que son etiquetas oficiales que pueden mostrarse en la app.
      OpenHaystack es un hack que usa otras claves, así que por razones criptográficas no puede mostrarse en la app.
    • ¿Las copias no tienen también limitaciones? Por ejemplo, recuerdo que no tienen funciones como búsqueda de precisión, aunque quizá estoy recordando mal algo que leí en otro lado.
  • Es realmente genial. Me gustan los Apple AirTag, pero son demasiado gruesos y su forma también es medio incómoda.
    Me gustaría que existiera un AirTag en formato de tarjeta de crédito para meterlo en la cartera, y también un AirTag más pequeño para ponerlo en el collar de un gato.

    • En Temu o Aliexpress se pueden comprar etiquetas de terceros compatibles con Find My por unos 5 dólares. Son de tamaño similar a un AirTag normal, pero son más fáciles de desarmar si quieres tirar la carcasa, y más baratas.
      Saqué de su carcasa una que tenía para ver qué se podía hacer más delgado, y la mayor parte del grosor venía del soporte de la batería CR2032, el altavoz y el botón. El altavoz y el botón probablemente podrían eliminarse después de la configuración inicial, y si quitas también el soporte de la batería y quieres un factor de forma delgado tipo tarjeta, podrías alimentarlo desde el costado en lugar de desde arriba.
    • Ya existen tarjetas ultradelgadas compatibles con AirTag que caben en una cartera.
    • Esta es una foto del AirTag que mi gata calicó de 8.5 libras lleva en el collar desde que tenía 3 meses.
      https://imgur.com/a/r9EGSOc
      La foto la acabo de tomar con unos lentes Meta Stories.
    • Uso esto con mi perro y es muy minimalista.
      https://www.amazon.com/gp/product/B09DCVFNFF/
      Eso sí, tuve que envolverlo con cinta transparente para que el AirTag no se saliera girando del soporte.
  • No lo he investigado a fondo, pero me pregunto si se podría usar esto para enviar un pequeño payload de datos arbitrarios.

    • Sí se puede. Hace poco hubo un proyecto que transmitía datos de un keylogger de hardware usando la red de AirTag.
      Incluso si la computadora está completamente aislada, los datos pueden regresar a través del iPhone de la persona que está escribiendo.
    • Vi un caso en el que usaron esto para rastrear el estado de un buzón. Un sensor de contacto dentro del buzón rotaba la clave de transmisión según la cantidad de activaciones.
      Si la clave cambiaba y aparecía un dispositivo nuevo distinto, significaba que había llegado correo; bastante ingenioso.
  • Me pregunto cuál es el límite superior de transferencia que un solo dispositivo puede subir a los servidores de Apple. Si un dispositivo Apple no tiene celular ni Wi-Fi, ¿cuánto tiempo se conserva en el dispositivo ese historial de pings de ubicación?
    También me pregunto si hay posibilidad de un ataque de denegación de servicio aquí. Por ejemplo, que un atacante imite más de un millón de dispositivos Bluetooth y, cuando la víctima pase por casualidad, haya una cantidad enorme de dispositivos en un solo lugar, el teléfono se congele y siga subiendo datos a los servidores de Apple.

  • Pero ¿con esto se podría hacer la configuración real de un AirTag incluso sin otro dispositivo Apple como un iPhone o una Mac?

  • Publicación anterior: https://news.ycombinator.com/item?id=26342504

  • ¿Se pueden emparejar estos con la app Apple Find My real para encontrarlos dentro de la app?