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
Opiniões no Hacker News
Curiosidade sobre os aspectos legais
Tentativa de descompilar e recompilar, e o nível de dedicação
A perda de técnicas do passado
Observações sobre as defesas de RE da Meta
IsUsingSandbox()em uma build de produção.Certificate pinning em modo sandbox
Utilidade de checksums de binário em tempo de execução
Pergunta sobre o uso de ferramentas de proxy
Segurança em aplicativos de grandes empresas
Possibilidade de interceptar o tráfego dos apps da Meta
Importância do monitoramento de tráfego