2 pontos por GN⁺ 2025-01-28 | 1 comentários | Compartilhar no WhatsApp
  • OpenHaystack é um framework para rastrear dispositivos Bluetooth pessoais usando a rede Find My da Apple, permitindo criar suas próprias tags de rastreamento com um Mac e um BBC micro:bit ou outro dispositivo com suporte a Bluetooth
  • Quando um iPhone próximo detecta o anúncio BLE de um acessório OpenHaystack, ele criptografa a localização e a envia aos servidores da Apple; o OpenHaystack então baixa esse relatório de localização, descriptografa e exibe no mapa
  • O projeto é resultado da engenharia reversa e análise de segurança da rede Find My feita pelo Secure Mobile Networking Lab da TU Darmstadt, e a vulnerabilidade de acesso a dados de localização CVE-2020-9986 foi corrigida pela Apple
  • O app para macOS usa um plug-in do Apple Mail para receber relatórios de localização, exigindo desativar temporariamente o Gatekeeper durante a instalação e manter o Mail aberto durante o uso
  • Como é um software experimental, o código não foi testado, está incompleto, e acessórios baseados no firmware fornecido transmitem uma chave pública fixa, o que pode permitir rastreamento por outros dispositivos próximos

O que o OpenHaystack faz

  • OpenHaystack é um framework para rastrear dispositivos Bluetooth pessoais por meio da rede Find My da Apple
  • O usuário pode criar sua própria tag de rastreamento e prendê-la a objetos como chaveiros e mochilas, ou integrá-la a dispositivos com suporte a Bluetooth, como notebooks
  • Tudo o que é necessário é um Mac e um BBC micro:bit ou outro dispositivo com suporte a Bluetooth
  • Mesmo sem conexão celular, um iPhone próximo pode detectar o acessório e, quando estiver conectado à rede, enviar a localização aos servidores da Apple

Base de pesquisa e análise de segurança

  • O OpenHaystack surgiu dos resultados de engenharia reversa e análise de segurança da rede Find My da Apple, ou offline finding
  • O Secure Mobile Networking Lab da TU Darmstadt começou a análise após o anúncio do offline finding pela Apple em junho de 2019
  • Esse sistema combina os seguintes elementos
    • Anúncios Bluetooth

      • criptografia de chave pública
      • banco de dados central de relatórios de localização criptografados
      • duas vulnerabilidades foram encontradas durante a análise
      • a mais grave permitia que aplicativos maliciosos acessassem dados de localização
      • essa vulnerabilidade foi corrigida pela Apple e identificada como CVE-2020-9986
      • a análise relacionada de segurança e privacidade é tratada no artigo da PoPETs 2021 Who Can Find My Devices? Security and Privacy of Apple's Crowd-Sourced Bluetooth Location Tracking System

Limitações por ser um software experimental

  • O OpenHaystack é um software experimental e o código não foi testado, além de estar incompleto
  • Acessórios OpenHaystack que usam o firmware fornecido transmitem uma chave pública fixa
    • por isso, também podem ser rastreados por outros dispositivos próximos
    • esse comportamento pode mudar em versões futuras
  • O OpenHaystack não é um projeto afiliado à Apple Inc. nem endossado pela Apple

Componentes e fluxo de uso

  • O OpenHaystack é composto por dois componentes
    • aplicativo macOS: mostra a última localização reportada de dispositivos Bluetooth pessoais
    • imagem de firmware: faz com que o dispositivo Bluetooth transmita um beacon que possa ser detectado por iPhones
  • O requisito de sistema é macOS 11 Big Sur
  • Ao criar um novo acessório, o usuário informa um nome e opcionalmente escolhe um ícone e uma cor
    • o app gera um novo par de chaves para criptografar e descriptografar os relatórios de localização
    • a chave privada é armazenada no chaveiro do Mac
  • A implantação do dispositivo é feita conectando um dispositivo compatível ao Mac via USB e usando o botão Deploy no app
    • em vez da implantação integrada, também é possível copiar a chave pública usada nos anúncios e fazer a implantação manualmente
  • Pode levar até 30 minutos para que o primeiro relatório de localização apareça no mapa
    • o mapa mostra a localização mais recente de todos os itens
    • ao clicar em cada item, é possível ver quando a última atualização foi recebida
    • o botão reload permite atualizar os relatórios de localização

Plug-in do Mail e forma de instalação

  • O app OpenHaystack exige um plug-in personalizado para o Apple Mail para baixar os relatórios de localização dos servidores da Apple
  • Esse plug-in funciona herdando os privilégios do Apple Mail necessários para usar APIs privadas
  • Durante a instalação, é preciso desativar temporariamente o Gatekeeper
    • desative o Gatekeeper com sudo spctl --master-disable
    • em Preferences → General → Manage Plug-Ins do Mail, ative OpenHaystackMail.mailbundle
    • depois reative o Gatekeeper com sudo spctl --master-enable
  • O plug-in afirma não acessar outros dados pessoais, como e-mails
  • Durante o download dos relatórios de localização, o app OpenHaystack se comunica com o plug-in, então é necessário manter o Mail aberto

Como a rede Find My funciona

  • O OpenHaystack explica o sistema offline finding da Apple em quatro etapas
  • Pareamento

    • para usar a rede Find My, é gerado um par de chaves pública/privada baseado na curva elíptica P-224
    • a chave privada é armazenada com segurança no chaveiro do Mac
    • a chave pública é implantada em acessórios como o micro:bit
  • Estado perdido

    • o acessório transmite a chave pública por meio de anúncios Bluetooth Low Energy
    • iPhones próximos não conseguem distinguir um acessório OpenHaystack de um dispositivo Apple real ou acessório autenticado
  • Descoberta

    • quando um iPhone próximo recebe o anúncio BLE, ele obtém a localização atual via GPS
    • o iPhone criptografa a localização com a chave pública incluída no anúncio e envia o relatório criptografado aos servidores da Apple
    • iPhones com iOS 13 ou superior executam esse comportamento por padrão
    • o OpenHaystack não participa desta etapa
  • Recuperação

    • a Apple não sabe qual localização criptografada pertence a qual conta Apple ou dispositivo
    • se souber a chave pública correspondente, um usuário Apple pode baixar qualquer relatório de localização
    • os relatórios têm criptografia de ponta a ponta, então não podem ser descriptografados sem a chave privada
    • o OpenHaystack baixa da Apple os relatórios referentes aos acessórios OpenHaystack, descriptografa com a chave privada armazenada no chaveiro do Mac e mostra a localização mais recente no mapa
    • a Apple restringe o acesso arbitrário ao banco de dados ao permitir que apenas usuários Apple autenticados baixem relatórios de localização

Dispositivos compatíveis e expansão

  • Em princípio, qualquer dispositivo Bluetooth pode ser transformado em um acessório OpenHaystack rastreável pela rede Find My da Apple
  • No momento, a forma prática de implantação de firmware só oferece suporte a alguns dispositivos embarcados
  • Dispositivos Linux são suportados por meio de um script HCI comum
  • Exemplos de suporte incluem
    • Nordic nRF51: testado no BBC micro:bit v1, com suporte à implantação pelo app, atualmente apenas o nRF51822 é compatível
    • Espressif ESP32: testado no ESP32-WROOM e ESP32-WROVER, com suporte à implantação pelo app; a implantação pode levar até 3 minutos e requer Python 3
    • Linux HCI: testado no Raspberry Pi 4 com Raspbian, e deve suportar qualquer máquina Linux
  • Também é possível portar para outros dispositivos com suporte a Bluetooth Low Energy, com base no código-fonte do firmware e na especificação do artigo

OpenHaystack Mobile

  • OpenHaystack Mobile é um app que reimplementa completamente o aplicativo macOS do OpenHaystack para smartphones
  • Ele oferece criação e rastreamento de acessórios, com foco especial em melhorar a usabilidade para novos usuários
  • Diferentemente do app para macOS, no smartphone não é possível obter diretamente os relatórios de localização
    • para acessar a rede Find My, é necessário um servidor proxy hospedado em hardware Mac
    • esse servidor proxy pode ser acessado simultaneamente por vários usuários pela rede
  • Para se conectar ao servidor proxy, é preciso definir a URL correta em openhaystack-mobile/lib/findMy/reports_fetcher.dart
  • O OpenHaystack Mobile foi feito com o Flutter framework e roda em Android e iOS

Licença e materiais de referência

1 comentários

 
GN⁺ 2025-01-28
Opiniões no Hacker News
  • Seria bom se houvesse uma boa opção também para quem não é usuário da Apple. Pelo que ouvi, a versão do Google é, como esperado, bem ruim
    Há um limite para a frequência com que você pode procurar sua própria tag, a localização não é mostrada até que ela seja detectada por vários celulares, e a cobertura também é ruim
    Em um teste, a rede da Samsung apareceu como melhor, o que não faz sentido, já que os celulares Samsung deveriam ser apenas um subconjunto de todos os Androids dentro da rede do Google. Parece o típico produto do Google que, mesmo parecendo bom em teoria, tem uma execução péssima anos depois de a Apple ter mostrado como se faz
    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...

    • É quase inacreditável que o pessoal responsável pela rede de localização do Google tenha estragado a única função do produto por priorizar a privacidade
      Com essa escolha, o Google ganhou alguns artigos sobre melhorias “inovadoras” de privacidade antes que o desempenho ruim na prática fosse verificado, mas perdeu a chance de competir com a Apple nessa área e ainda prejudicou o ecossistema Android/Pixel e sua participação de mercado. É difícil até inventar tamanha incompetência
    • É difícil acreditar que o Google tenha estragado tanto a rede. Em condições normais, por causa da participação do Android, ela deveria superar a rede da Apple
      Para quem viaja de forma nômade, a rede da Apple não é especialmente útil. Isso porque essas pessoas passam pelo “resto do mundo”, onde a participação do Android chega perto de 90%, e não por cidades ricas cheias de iPhones. Mesmo assim, até nesses lugares a Apple parece se sair melhor que o Google
    • Coloquei uma em minhas chaves e, quando tentei usá-la uma vez, mesmo atualizando várias vezes, ela só mostrava um círculo com raio de 0,25 milha
      Na verdade, estava dentro da bolsa bem ao lado
    • A solução da Samsung não é um subconjunto, mas sim uma abordagem separada e melhor
      Mesmo em aeroportos ou vilarejos de países bem remotos, consegui localizar bem duas tags, o que me deixou tranquilo. Este vídeo também conclui que, mesmo para usuários de iPhone, a Samsung SmartTag é a melhor opção
      https://m.youtube.com/watch?v=9wefUV_bR0Y
    • Acho que o Google também deveria simplesmente aderir ao Find My
  • Olhando o código, parece que ele usa permissões pessoais do Apple Mail para obter as localizações coletadas por dispositivos da rede FindMy
    https://github.com/seemoo-lab/openhaystack/blob/8d214aa5eb68...
    Fico curioso se isso também seria possível criando uma conta de desenvolvedor da Apple

    • Existem versões que não precisam interagir com o Apple Mail
      Tudo de que você precisa é uma conta Apple, e nem precisa executar código em hardware da Apple
      https://github.com/biemster/FindMy
  • Quero encontrar um material que vi antes. A Apple avisa o usuário sobre “tags que podem estar seguindo você”, e lembro que alguém criou uma implementação que fazia a rotação de algo como o endereço MAC ou uma chave privada usando uma função de derivação de chave (KDF), e que esses valores derivados eram previsíveis o suficiente para serem rastreados
    Onde moro há um problema realmente sério de pequenos furtos, então gasto bastante tempo consertando janelas quebradas ou limpando sinais de arrombamento. Não tenho a menor intenção de confrontar ninguém diretamente, mas gostaria de algum dia montar um histórico de deslocamento que pudesse entregar a um investigador particular ou às autoridades

    • Compre um rastreador GPS celular e use um SIM IoT bem barato, até gratuito
      Ou você também pode levar uma caixa de água mineral até um ponto de encontro de dependentes químicos próximo e pedir para pararem de roubar suas coisas
    • Pelo que sei, o AirTag também faz rotação da chave privada de qualquer forma, então não sei se isso ajudaria a resolver o problema
      Mas talvez o período de rotação seja lento, e não conheço bem o algoritmo exato
    • Na minha lista de submissões há um link para um texto que escrevi sobre o OpenHaystack e esses alertas. Em resumo, o iOS nunca me alertou sobre um rastreador baseado no OpenHaystack que deixei no carro por algum tempo
      Mas isso foi há alguns anos, então pode ter mudado desde então
  • Seria bom se houvesse uma forma de integrar com o app Buscar em vez de obter a localização por um procedimento próprio instável
    As réplicas chinesas podem até usar marca própria, então parece claro que, de algum jeito, isso é possível

    • Aqui é onde isso parece o jardim murado da Apple. Li há um tempo a especificação da Apple para parceiros oficiais e, durante o processo de pareamento, o dispositivo assina alguma coisa com um certificado/chave emitido pela Apple para aquele desenvolvedor. É uma chave obtida depois de contrato, ou seja, dinheiro, e o ponto importante é que ela é diferente do par de chaves usado na transmissão real
      Essa assinatura é verificada pela Apple e, por isso, o dispositivo pode ser adicionado àquela conta do Apple ID e ao app. Já as chaves que os dispositivos transmitem no Modo Perdido são aleatórias e totalmente opacas, de modo que nem a Apple tem como vinculá-las a um ID, dispositivo ou desenvolvedor. Este projeto funciona justamente porque essas chaves acabam chegando aos servidores da Apple
      As réplicas parecem ter roubado uma chave legítima para o processo de pareamento. Se a Apple quiser e conseguir identificar essa chave, acho que poderia remover todos os dispositivos de todas as contas, mas os próprios dispositivos continuariam transmitindo, e ainda seria possível acessar a localização por um método tosco como o descrito acima. Também fico curioso se o dono original da chave pode acabar recebendo depois uma conta enorme de royalties por dispositivo, caso a Apple conte no banco de dados “quantos dispositivos assinados com esta chave foram adicionados a Apple IDs”
    • “Réplicas chinesas” são produtos com suporte oficial, e o método está aqui: https://developer.apple.com/find-my/
    • As réplicas chinesas usam o programa Apple Find My, então são tags oficiais que podem aparecer no app
      O OpenHaystack é um hack que usa outras chaves, então, por motivos criptográficos, não pode aparecer no app
    • As réplicas também não têm limitações? Por exemplo, lembro que não têm recursos como Busca Precisa, mas talvez eu esteja lembrando errado de algo que li em outro lugar
  • Muito legal. Gosto do Apple AirTag, mas ele é grosso demais e o formato também é meio estranho
    Eu queria que existisse um AirTag em formato de cartão de crédito que coubesse na carteira, e também um AirTag menor que pudesse ser preso à coleira de um gato

    • Dá para comprar tags de terceiros compatíveis com o Buscar no Temu ou no AliExpress por cerca de US$ 5. Elas têm tamanho parecido com um AirTag comum, mas são mais fáceis de desmontar se você quiser descartar a carcaça, além de mais baratas
      Tirei uma que eu tinha da carcaça para ver o que poderia ser afinado, e a maior parte da espessura vinha do suporte da bateria CR2032, do alto-falante e do botão. O alto-falante e o botão provavelmente podem ser removidos depois da configuração inicial, e o suporte da bateria também pode ser removido; se você quiser um formato fino tipo cartão, dá para alimentar pela lateral em vez de por cima
    • Já existem cartões ultrafinos compatíveis com AirTag que cabem na carteira
    • Esta é uma foto do AirTag que minha gata tricolor de 8,5 libras usa na coleira desde que tinha 3 meses
      https://imgur.com/a/r9EGSOc
      Acabei de tirar a foto com os óculos Meta Stories
    • Uso isso no meu cachorro e é bem minimalista
      https://www.amazon.com/gp/product/B09DCVFNFF/
      Mas precisei enrolar fita transparente para impedir que o AirTag girasse e saísse do suporte
  • Não investiguei a fundo, mas fico curioso se seria possível usar isso para enviar um pequeno payload de dados arbitrários

    • É possível. Recentemente houve um projeto que usava a rede do AirTag para transmitir dados de um keylogger de hardware
      Mesmo que o computador esteja completamente isolado, os dados podem voltar por meio do iPhone da pessoa que está digitando
    • Vi um caso em que usaram isso para rastrear o estado de uma caixa de correio. Um sensor de contato dentro da caixa rotacionava a chave de transmissão conforme o número de acionamentos
      Se a chave mudasse e um novo dispositivo diferente aparecesse, significava que chegou correspondência; bem engenhoso
  • Fico curioso sobre o limite máximo de tráfego que um único dispositivo pode enviar aos servidores da Apple. Se um dispositivo Apple não tiver celular nem Wi‑Fi, por quanto tempo esse histórico de pings de localização fica armazenado no aparelho?
    Também fico curioso se há uma possibilidade de ataque de negação de serviço aqui. Um atacante poderia simular mais de 1 milhão de dispositivos Bluetooth e, quando a vítima passasse por acaso, haveria uma quantidade enorme de dispositivos em um local, fazendo o celular travar e continuar enviando uploads para os servidores da Apple

  • Mas seria possível fazer a configuração real de um AirTag com isso, sem outro dispositivo Apple como um iPhone ou Mac?

  • Post anterior: https://news.ycombinator.com/item?id=26342504

  • Dá para parear esses dispositivos com o app Buscar da Apple de verdade e encontrá-los dentro do app?