1 pontos por GN⁺ 2024-03-06 | 1 comentários | Compartilhar no WhatsApp

Quebrando o certificate pinning do Messenger da Meta (macOS)

  • O aplicativo Messenger da Meta para macOS é semelhante ao modelo do Texts.com, um aplicativo desktop independente.
  • Batuhan İçöz, que lidera o projeto da plataforma Meta no Texts.com, considerou que interceptar as requisições de rede era um primeiro passo importante.
  • A Meta reforça a segurança aplicando certificate pinning e evita a análise de requisições ao servidor por meio de ataques MITM (man-in-the-middle).

O que é certificate pinning?

  • Ao configurar um cliente proxy, é preciso configurá-lo para confiar em uma "autoridade certificadora".
  • Usando um certificado emitido por uma autoridade certificadora, é possível interceptar e descriptografar informações das requisições.
  • Se um serviço implementa certificate pinning, ele aceita apenas certificados emitidos por autoridades certificadoras específicas, impedindo o uso de certificados emitidos pela autoridade certificadora do usuário.

Comportamento padrão

  • Se o certificate pinning não for desativado, todas as requisições retornam "erro interno", e o software de proxy mostra "falha no handshake SSL".
  • Como a requisição não completa seu ciclo de vida, não é possível inferir informações sobre ela.

Comportamento desejado

  • Usando um ataque MITM, é possível ler com sucesso requisições, respostas e cabeçalhos em uma ferramenta de depuração de rede.

Abordagens possíveis

  • Um dos métodos que já funcionou antes foi alterar strings de URL no binário para um endpoint inseguro auto-hospedado que não implementa TLS.
  • É possível usar bibliotecas de instrumentação dinâmica como Frida, mas o Messenger tende a travar facilmente, especialmente durante hooks.
  • Usar Frida envolve um processo de implantação complexo.

Abordagem

  • Baixa-se o Messenger, move-se para a pasta Aplicativos e depois importa-se o binário ARM no Hopper.
  • Com o Hopper, é possível desmontar, descompilar, recompilar, depurar e visualizar o binário.
  • Busca-se por strings como "SSL pinning validation failed" para tentar minimizar as modificações.
  • Foi encontrada a string "Using custom sandbox -> turn off SSL verification", e a função relacionada foi localizada e modificada.
  • A função IsUsingSandbox foi configurada para sempre retornar true, desativando o certificate pinning.

Resultado

  • Depois de exportar o novo executável e remover a assinatura, o binário original do Messenger foi substituído pelo novo binário.
  • Ao reiniciar o Messenger, a ferramenta de proxy passou a mostrar os cabeçalhos, o corpo da resposta e todas as informações das requisições.
  • Foi possível interceptar as requisições modificando apenas 4 bytes de um binário de 97.477.728 bytes.

Implantação

  • Após compilar o binário, ele foi enviado para Batuhan.
  • Batuhan recebeu um certificado de assinatura, instalou-o e assinou o aplicativo.
  • Depois da assinatura, ele pôde usar o binário em seu sistema para ver suas próprias requisições.

Opinião do GN⁺

  • Este artigo oferece um caso interessante de como pesquisadores de segurança contornam o certificate pinning no app Messenger da Meta.
  • O certificate pinning é um recurso de segurança importante para prevenir ataques man-in-the-middle, mas o fato de pesquisadores encontrarem formas de contorná-lo fornece insights valiosos para a comunidade de segurança.
  • Essa técnica pode ajudar desenvolvedores a reforçar a segurança de seus próprios apps ou serviços, além de contribuir para encontrar e corrigir vulnerabilidades.
  • No entanto, como esse tipo de pesquisa também pode ser usado com objetivos maliciosos, é preciso cautela ao compartilhar os resultados.
  • Outras ferramentas com funcionalidades semelhantes incluem ferramentas de análise de rede como Wireshark e Burp Suite, amplamente usadas para monitorar e analisar tráfego de rede.

1 comentários

 
GN⁺ 2024-03-06
Opiniões no Hacker News
  • Curiosidade sobre os aspectos legais

    • Há curiosidade sobre a legalidade desse tipo de ação.
    • Presumia-se tecnicamente que isso violaria a DMCA, mas há suspeita de que essa suposição possa estar errada.
    • Levanta-se a dúvida de como isso é possível do ponto de vista jurídico.
  • Tentativa de descompilar e recompilar, e o nível de dedicação

    • Alguém tentou um caminho parecido, mas desistiu na etapa de descompilar/editar/recompilar.
    • Demonstra admiração por esse nível de dedicação e curiosidade sobre quanto tempo foi investido nisso.
    • Diz que costuma definir um limite de tempo e respeitá-lo.
  • A perda de técnicas do passado

    • Relembra a época do +Orc.
    • Grande parte do conhecimento daquela época, como encontrar e remover desvios indesejados, já foi esquecida.
    • Hoje existem muito mais outras tecnologias que precisam ser aprendidas.
  • Observações sobre as defesas de RE da Meta

    • Aponta que as defesas contra engenharia reversa (RE) da Meta, especialmente no Messenger, são bastante permissivas.
    • Menciona que seria simples remover IsUsingSandbox() em uma build de produção.
    • Afirma que essas defesas já seriam fracas mesmo antes do uso de técnicas avançadas de ofuscação.
  • Certificate pinning em modo sandbox

    • Menciona formas de impor certificate pinning mesmo no modo sandbox.
    • Recorda uma tentativa frustrada, na época da universidade, de interceptar com MitM o tráfego do Snapchat.
  • Utilidade de checksums de binário em tempo de execução

    • Questiona se checksums de binário em tempo de execução ajudariam a dificultar modificações.
    • Pergunta se isso não é um procedimento comum em apps móveis e se os SDKs de iOS ou Android oferecem esse tipo de recurso.
    • Como a solução final acabou sendo apenas modificar alguns bytes do binário, considera que isso poderia ter sido evitado.
  • Pergunta sobre o uso de ferramentas de proxy

    • Pergunta qual ferramenta de proxy foi usada no texto.
    • Quer saber se essa ferramenta roteia o tráfego de todos os aplicativos enquanto está em execução.
  • Segurança em aplicativos de grandes empresas

    • Questiona por que os aplicativos de grandes empresas não são totalmente ofuscados nem incluem outras proteções que recusem a execução de binários modificados.
  • Possibilidade de interceptar o tráfego dos apps da Meta

    • Afirma que não é necessário interceptar o tráfego dos apps da Meta.
    • Fornece um link para a página educacional de bug bounty da Meta.
  • Importância do monitoramento de tráfego

    • Enfatiza que isso é importante para desmentir teorias da conspiração de que o app do Facebook espiona usuários pelo microfone para exibir anúncios direcionados.
    • A forma mais fácil de refutar isso seria monitorar o tráfego entre o app e os servidores do Facebook, mas o certificate pinning atrapalha.
    • Convencer quem acredita em teorias da conspiração é difícil, mas é importante saber que esse monitoramento pode ser feito.