
À medida que o uso do HTTPS aumenta, aumenta o desejo de pessoas não autorizadas de se infiltrar no tráfego protegido. Um estudo de 2017 da
The Impact Impact of HTTPS Interception descobriu que essa é uma prática cada vez mais comum. A análise do tráfego nos servidores de atualização do Firefox mostrou que em alguns países a porcentagem de introdução de agentes de terceiros no HTTPS chega a 15%.
Desde o estudo, é improvável que a situação tenha melhorado. Agora, mesmo o mais recente modelo de fone de ouvido sem fio da Sennheiser
requer a instalação de um certificado raiz (com parâmetros não seguros)
no sistema .
Na maioria das vezes, antivírus ou caixa intermediária corporativa compromete a proteção (veja a lista abaixo), mas pode ser pior. De qualquer forma, é melhor saber com certeza quando seu canal HTTPS não é realmente seguro de ponta a ponta. Mesmo quando um sistema de terceiros intercepta tráfego bem-intencionado, muitas vezes não suporta cifras modernas ou não valida certificados, reduzindo assim a proteção geral da conexão. Mas eles podem interceptar o tráfego SSL não apenas para bons propósitos, mas também para fins maliciosos: por exemplo, para censura no nível estadual.
Os programas de monitoramento HTTPS agem como proxies transparentes que interrompem uma sessão TLS, inspecionam o conteúdo e estabelecem uma nova sessão com o servidor de destino. Eles usam versões diferentes das bibliotecas TLS dos navegadores populares, o que permite que sejam detectados no servidor pela incompatibilidade entre o Agente do Usuário HTTP e o Cliente TLS Hello do navegador e proxy reais.
Para começar, aqui estão algumas dicas práticas de um estudo de 2017 que incluiu Mozilla, Google, GlobalSign, além de pesquisadores acadêmicos da Universidade de Michigan, da Universidade de Illinois em Urban-Champaign e da Universidade da Califórnia em Berkeley.
O dano prático da interceptação HTTPS é a degradação da criptografia e vulnerabilidades adicionais de proxy transparente. Os autores do estudo avaliaram várias caixas intermediárias populares por esses parâmetros. Como você pode ver, em 2017, quase metade deles não suportava conjuntos de criptografia modernos e cinco registraram vulnerabilidades graves. Apenas 1 em cada 12 foi capaz de espelhar completamente todos os conjuntos de cifras personalizados.

A atividade antivírus nos computadores dos usuários também costuma ser detectada no servidor. O estudo mostrou que apenas dois antivírus espelham completamente as cifras dos usuários; em outros casos, a criptografia diminui.

Protegendo contra algumas ameaças, os antivírus reduzem a criptografia e adicionam suas próprias vulnerabilidades. Em geral, a instalação de um antivírus de terceiros geralmente afeta significativamente a segurança geral do sistema. Alguns especialistas aconselham os usuários a
remover sempre antivírus de terceiros do sistema , porque seu código invasivo e mal escrito dificulta que os navegadores e outros programas forneçam sua própria segurança.
No caminho entre o cliente e o servidor, outros proxies transparentes também podem funcionar. Para detectar melhor esses agentes, o Cloudflare lançou recentemente duas novas ferramentas:
- MITMEngine , uma biblioteca gratuita para detectar interceptação HTTPS.
- MALCOLM , um painel para exibir métricas sobre interceptação HTTPS na rede Cloudflare.
O principal interesse é a biblioteca MITMEngine. Os desenvolvedores
escrevem que levaram a popular ferramenta de
detecção MITM do Caddy Server como amostra. Ele suporta um conjunto de navegadores populares e reconhece a interceptação HTTPS pelas impressões digitais específicas das mensagens TLS Client Hello e User Agent, conforme descrito acima.
Os desenvolvedores tentaram fornecer extensibilidade, simplificando a adição futura de novas versões de navegadores ao detector, além de melhorar o desempenho e expandir a funcionalidade do detector em comparação com a detecção MITM do Caddy Server. Ele analisa os seguintes parâmetros do TLS Client Hello, comparando dados reais com impressões digitais de navegadores conhecidos:
- Versão TLS
- conjuntos de cifras;
- extensões e seus significados;
- grupos suportados de curvas elípticas;
- formatos de pontos de uma curva elíptica.
De fato, o MITMEngine realiza impressões digitais parciais do usuário, sem o desinônimo, mas com uma determinação confiável de que a conexão é estabelecida por um navegador real, não por um intermediário.
Exemplo de trabalho
Suponha que o MITMEngine veja o seguinte User Agent de um usuário:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/47.0.2526.111 Safari/537.36
Este agente do usuário corresponde ao Chrome 47 no Windows 7. É acompanhado por uma mensagem Hello do cliente TLS, que indica os seguintes conjuntos de códigos, em hexadecimal:
0000 c0 2b c0 2f 00 9e c0 0a c0 14 00 39 c0 09 c0 13 .+./.... ...9....
0010 00 33 00 9c 00 35 00 2f 00 0a .3...5./ ..
Esta mensagem corresponde aos seguintes conjuntos de criptografia:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
Os conjuntos de cifras padrão para o Chrome 47 são os seguintes:
0000 c0 2b c0 2f 00 9e cc 14 cc 13 c0 0a c0 14 00 39 .+./.... .......9
0010 c0 09 c0 13 00 33 00 9c 00 35 00 2f 00 0a .....3.. .5./..
Se você olhar com cuidado, poderá ver: no tráfego real, a lista de cifras é um pouco menor do que em um navegador real. Embora o restante esteja organizado na mesma ordem, dois conjuntos estão ausentes:
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcc14)
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcc13)
Pode-se supor que o tráfego do navegador do usuário passe por um proxy transparente que não suporta cifras ChaCha. Isso reduz a proteção do usuário porque os conjuntos de cifras AES-CBC ao lado de ChaCha
são vulneráveis a ataques de preenchimento de oráculo.
Em alguns casos, o MITMEngine ainda permite determinar qual programa específico causa a degradação da conexão HTTPS (no exemplo acima, é o antivírus Sophos). O servidor pode alertar o usuário sobre essa ameaça.

