OpenHaystack: tecnologia para criar ‘AirTags’ de rastreamento de dispositivos Bluetooth pela rede da Apple
(github.com/seemoo-lab)- 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
- desative o Gatekeeper com
- 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
- O OpenHaystack é distribuído sob a GNU Affero General Public License v3.0
- Principais materiais de referência
1 comentários
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...
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
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
Na verdade, estava dentro da bolsa bem ao lado
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
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
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
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
Mas talvez o período de rotação seja lento, e não conheço bem o algoritmo exato
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
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”
O OpenHaystack é um hack que usa outras chaves, então, por motivos criptográficos, não pode aparecer no app
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
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
https://imgur.com/a/r9EGSOc
Acabei de tirar a foto com os óculos Meta Stories
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
Mesmo que o computador esteja completamente isolado, os dados podem voltar por meio do iPhone da pessoa que está digitando
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?