3 pontos por GN⁺ 2023-12-06 | 1 comentários | Compartilhar no WhatsApp

Explicação da estrutura interna do iMessage

  • Fornece uma visão geral da estrutura interna do iMessage
  • Explica de forma simplificada os detalhes técnicos com base no que foi descoberto por meio do projeto pypush
  • pypush é um projeto open source que reimplementa o iMessage, e a implementação detalhada pode ser consultada nesse repositório

Camada fundamental (Foundational Layer)

  • O Apple Push Notification Service (APNs) é um componente central do iMessage, usado para receber notificações e atualizações em tempo real mesmo quando o app está fechado
  • O APNs é um serviço bidirecional, usado tanto para enviar quanto para receber notificações push
  • Quando um dispositivo se conecta ao APNs, ele recebe um "token push", usado para rotear notificações para aquele dispositivo específico
  • Ao enviar uma notificação, é preciso especificar o tópico da mensagem; no caso do iMessage, é com.apple.madrid
  • Além da transmissão de mensagens, o APNs também é usado para enviar consultas via IDS e receber respostas pelo APNs
  • Para se conectar ao APNs, é necessário um certificado de cliente emitido pelo servidor de ativação Albert

Servidor de chaves (Keyserver)

  • O IDS (presumivelmente IDentity Services) é usado como servidor de chaves para serviços como iMessage e FaceTime
  • O iMessage usa criptografia E2E, então é necessário trocar chaves públicas entre os participantes de forma segura
  • O primeiro passo para se registrar no IDS é obter um token de autenticação, o que exige nome de usuário e senha do Apple ID
  • Depois de obter o token de autenticação, ele deve ser imediatamente trocado por um certificado de duração maior, que permite registrar-se no IDS
  • No processo de registro no IDS, as chaves públicas de criptografia e assinatura, além de vários "dados do cliente", são enviadas ao servidor de chaves
  • Ao fazer a solicitação de registro no IDS, é necessário um blob binário chamado "dados de validação", que funciona como um mecanismo de verificação para impedir que dispositivos que não sejam da Apple usem o iMessage
  • Ao se registrar no IDS, você recebe um "par de chaves de identidade", que permite realizar consultas de chaves públicas
  • Ao consultar, você fornece a conta desejada e recebe uma lista de "identidades" correspondente a cada dispositivo, contendo detalhes importantes

Criptografia de mensagens

  • A configuração básica do iMessage é concluída, permitindo consultar as chaves públicas de outros usuários e publicar suas próprias chaves
  • Para receber mensagens, é preciso filtrar a conexão com o APNs por com.apple.madrid e enviar um pacote de keepalive
  • Dependendo dos recursos anunciados no registro do IDS e da versão do iOS do dispositivo remetente, a mensagem pode ser recebida no formato de criptografia pair ou no formato mais novo pair-ec
  • Ao enviar uma mensagem, é possível enviá-la individualmente para cada destinatário ou agrupar todos os destinatários e payloads criptografados em um único grande pacote que o APNs pode distribuir
  • As mensagens são entregues a todos os participantes da conversa, incluindo outros dispositivos da própria conta
  • Um detalhe que costuma passar despercebido no envio de mensagens é que a chave AES não é totalmente aleatória, mas marcada com HMAC

Materiais e fontes

  • Há muitas pessoas e trabalhos anteriores que ajudam a compreender o iMessage
  • Entre as referências estão IMFreedom Knowledge Base, pushproxy, apns-dissector, QuarkSlab, Garman et al., NowSecure, Elcomsoft, open-imcore, The Apple Wiki e pesquisas de Mihir Bellare e Igors Stepanovs

1 comentários

 
GN⁺ 2023-12-06
Comentários do Hacker News
  • Há previsões de que a Apple usará verificação (atestado) de dispositivo para bloquear o iMessage. Isso exigirá atualizações de software para aparelhos antigos.

    Ao solicitar o registro no IDS para usar o iMessage, é necessário um blob binário chamado 'dados de verificação'. Esse é o mecanismo de verificação da Apple para impedir que dispositivos que não sejam da Apple usem o iMessage.

  • Há curiosidade sobre se essa atitude da Apple pode violar as leis DSA e DMA da União Europeia.

  • Compartilhar experiências sobre como entrar na área de tecnologia seria útil para estudantes que querem aprender coisas técnicas.

  • Há curiosidade sobre se alguém pretende criar um plugin para o libpurple.

  • Demonstra entusiasmo por esse tema e recomenda entrar no Hack Club.

  • Esperava uma explicação sobre por que o iMessage permite mensagens e anexos invisíveis, mas ficou em dúvida ao ver esse recurso sendo usado para infectar dispositivos.

  • O pypush, projeto open source que impulsionou os avanços de hoje nas notícias sobre engenharia reversa do iMessage, segue a Server Side Public License do MongoDB e pertence à Beeper. A biblioteca é excelente, mas uma licença de copyright forte pode afetar o escopo em que ela pode ser usada.

  • Há uma pergunta séria sobre se a palavra 'opertunistic' é realmente usada ou se é um erro de digitação, como 'referer', que acabou se fixando ao longo das gerações.

  • Há palavras de incentivo dizendo que é impressionante um estudante do ensino médio conseguir realizar esse tipo de feito.