Ir para o conteúdo principal
Piloterr
Voltar ao blog
30 de maio de 2023

Perguntas Frequentes sobre TLS Fingerprint

Segurança da camada de transporte ou TLS é um algoritmo usado para criptografar todo o tráfego da internet e ajuda nas necessidades de cibersegurança. Este protocolo utiliza algoritmos criptográficos para criptografar a comunicação baseada na web entre um servidor e seus clientes. Essa técnica foi desenvolvida para proteger a conexão do lado do servidor, permitindo que os servidores identifiquem o cliente com um alto grau de precisão, presente até mesmo no primeiro pacote. Para saber mais sobre a segurança TLS, primeiro precisamos ver como ela funciona e o que é o termo TLS handshake.

Para uma visão geral, consulte O que é impressão digital TLS. Contorne verificações TLS com anti-bot bypass ou leia nosso glossário de impressão digital TLS.

TLS handshaking: como funciona?

TLS handshake é o termo usado para criptografar e proteger a conexão de ambas as extremidades, o cliente e o servidor ao mesmo tempo. Quando um cliente acessa um site criptografado com TLS, ele realiza um TLS handshake com o servidor, o handshake basicamente significa o processo de identificação do cliente. O processo começa com uma solicitação do cliente para iniciar a sessão segura do site. Essa sessão de acesso seguro é chamada de 'hello' para facilitar o entendimento. Como o TLS é um protocolo de criptografia divino, ele possui várias versões com uma ampla gama de opções de criptografia (também conhecidas como conjuntos de cifras), o cliente (pode ser um navegador, script ou prompt) envia ao servidor uma lista de métodos de criptografia suportados ou conjuntos de cifras e a versão atual do TLS na mensagem 'Client Hello' para iniciar a solicitação. O servidor então analisa a lista com suas próprias cifras suportadas e envia de volta a mensagem 'Hello' que consiste no protocolo TLS, conjunto de cifras escolhido e certificado SSL que inclui a chave de criptografia pública. Depois disso, o cliente usa a chave pública do certificado SSL e verifica sua precisão (como o nome do servidor deve corresponder ao DNS no certificado, e que ele não esteja expirado também). Após uma sessão completa de verificação, o cliente envia outra string aleatória (ou chamada de segredo pré-mestre) que é criptografada usando a chave pública do servidor, que o servidor descriptografa usando a chave privada e, em seguida, tanto o cliente quanto o servidor geram a chave de sessão usando o aleatório do cliente, aleatório do servidor e segredo pré-mestre. Estes devem chegar com o mesmo resultado, e finalmente, o servidor e o cliente enviam a mensagem finished que é criptografada com a chave de sessão. Quando tanto o cliente quanto o servidor estão criptografados de forma segura, podemos dizer que o TLS handshake está completo. Vamos dar uma olhada no diagrama que representa todo esse processo.

Biblioteca TLS: Reconhecendo o Cliente do Usuário

Client Hello é na verdade uma lista de cifras suportadas pelo cliente, cada uma usa uma biblioteca TLS diferente, que estão listadas aqui junto com diferenças notáveis entre elas:

Diagrama do método JA3 para fingerprinting TLS Client Hello

Com a ajuda da impressão digital TLS, o servidor pode identificar a biblioteca TLS usada pelo cliente e compará-la com os resultados esperados, cada biblioteca é diferente e suporta até cifras diferentes em uma ordem separada também. Clientes web podem ser facilmente distinguidos com base em sua assinatura TLS. O que precisa ser lembrado é que essa informação está realmente disponível na primeira sessão (ou no primeiro pacote da sessão), que o servidor pode ver mesmo antes de responder ao cliente. Além disso, até que o padrão de Mensagem Client Hello criptografada seja padronizado, essa informação está facilmente disponível para qualquer rede de terceiros que possa inferi-la também.

Um cliente pode alterar a string User-Agent (para falsificar os resultados ou exibir outra versão do navegador), mas a mensagem Hello pode às vezes revelar sua versão real e sistema operacional, alguns navegadores específicos contêm uma lista diferente de cifras preferidas também (como Chrome 81 e 93).

Implementação de Código Aberto e Métodos de Cálculo de Assinatura

JA3

O primeiro e mais popular método para impressão digital TLS (ou chamado de método de cálculo de assinatura) é o JA3. Ele foi desenvolvido por uma equipe da Salesforce e disponibilizado como código aberto em 2017 (blog da Salesforce). Ele pega o pacote Client Hello e produz um hash MD5 identificando o cliente durante o processo de handshake TLS. Os componentes que ele extrai do pacote são a versão do TLS, cifras aceitas, lista de extensões, curva elíptica e seus formatos. Depois de obter esses campos, ele os combina em ordem usando vírgula para delimitar os próprios campos e hífen para delimitar os valores dos campos, então a string resultante é convertida em um hash MD5. O JA3 continua amplamente utilizado, embora o JA4 esteja se tornando cada vez mais comum para pilhas TLS 1.3 modernas.

JA3S

Este é usado para implementação do lado do servidor de comunicação SSL ou TLS, é usado junto com o JA3, que é focado no lado do cliente e ajuda no julgamento da legitimidade e precisão de um aplicativo. A impressão digital é gerada usando os campos da string Server Hello, como versão do TLS, cifras e extensões. O JA3 e o JA3S oferecem seguro contra a possibilidade de malware gerar o mesmo hash MD5 igual aos aplicativos legítimos.

A implementação de referência está em salesforce/ja3.

JA4

JA4 é um formato mais recente de impressão digital de cliente TLS (FoxIO, 2023+) que codifica versão do TLS, uso de SNI, contagem de cifras/extensões, ALPN e hashes SHA256 truncados: por exemplo t13d1516h2_8daaf6152771_d8a2da3f94cd. É amplamente utilizado junto com o JA3 em discussões sobre anti-bot e scraping.

Nosso TLS Capture Analyzer extrai tanto JA3 quanto JA4 do JSON do tls.peet.ws.

TS1

Este método de impressão digital TLS funciona de maneira diferente, criando um hash único para cada assinatura TLS. Foi inicialmente inspirado pelo JA3, mas agora é mais abrangente. Ele codifica todos os parâmetros da mensagem Client Hello em formato JSON, depois calcula seu hash SHA1 para produzir a assinatura. Neste método, clientes diferentes têm hashes diferentes ou únicos que podem ser salvos no banco de dados para fácil comparação de assinaturas. Essas assinaturas codificam mais parâmetros do que o JA3, de modo que podem representar uma imagem mais precisa do cliente para o servidor. Uma coisa que vale a pena mencionar é que, devido ao uso do formato JSON, este método é mais 'à prova de futuro' para o desenvolvimento adicional de extensões TLS que ainda não existem.

Usabilidade da Impressão Digital TLS, onde ela está sendo usada?

O caso de uso mais comum da impressão digital TLS é em soluções Anti-Bot e Anti-DDoS, para proteger páginas da web de ataques de crawling. Algumas pessoas também a utilizam para campanhas de phishing (o que, é claro, nunca pode ser considerado um uso legítimo). Alguns cenários comuns de uso são:

Detecção e proteção contra bots

Um aplicativo programado ou projetado para realizar ações específicas em outros dispositivos que frequentemente resulta em ataques cibernéticos. Em alguns cenários de amplo alcance, uma rede de dispositivos é usada para realizar ataques cibernéticos em larga escala, conhecidos como botnet. Pesquisadores ou profissionais podem rastreá-los para identificar o que eles têm em comum, como malware, e compartilhar os resultados com a comunidade de segurança na forma de IOCs.

Após a identificação de um bot, você pode bloquear seu IP ou contratar os serviços de um instituto ou organização de proteção contra bots (os profissionais), ou pode até implementar um código CAPTCHA para proteger seus recursos de bots.

Proteção contra DDoS

DDoS ou Negação de Serviço Distribuída é uma forma de ataque que visa sobrecarregar um site alvo com tráfego inútil. Esses tipos de ataques também utilizam botnets. Uma vez que você detecta um aumento no tráfego para o seu site, investigue o Client Hello de todos os dispositivos conectados. Se os campos do Client Hello forem os mesmos em todos os dispositivos, então você pode dizer que todos eles estão infectados com o mesmo malware. Você pode bloquear todos os seus endereços IP para proteger seu site neste ponto.

Controle sobre suas Assinaturas TLS

Na maioria das vezes, os parâmetros na mensagem Client Hello do TLS não são controláveis por qualquer tipo de ferramenta ou script, mas em Python, você pode controlar a lista de conjuntos de cifras. Existem alguns métodos que podem lhe dar controle total sobre as assinaturas TLS, que são:

Visão geral de ferramentas e bibliotecas de fingerprinting TLS

Conclusão

A impressão digital TLS está se tornando cada vez mais popular dia após dia e se tornou extremamente comum na web por seus propósitos legítimos, como bloquear ataques DDoS e proteção contra bots, mas também está tornando o espaço da web menos aberto para o público e mais privado e restritivo para clientes específicos. Ferramentas para proteger clientes falsificando a assinatura TLS ainda são imperfeitas e imaturas, e precisam de mais melhorias, e o desenvolvimento de tais ferramentas ainda é muito importante para que a web se torne um espaço livre, fácil e aberto para todos. Nesse sentido, a melhor solução viria do próprio lado da biblioteca TLS, para fornecer um controle mais refinado para os usuários se protegerem. E fornecer mais meios para que eles se protejam e protejam seu site. Ela precisa implementar 4 coisas para obter uma base de usuários melhor e mais limpa:

  • Permitir que os usuários controlem extensões TLS
  • Permitir que os usuários controlem a lista exata de cifras
  • Suportar as extensões mais recentes que alguns navegadores estão usando atualmente
  • Tornar o processo de verificação mais privado para evitar casos de uso negativos
  • Fornecer suporte para novas e emergentes linguagens de programação

Veja também Recursos de Impressão Digital para sites de teste, bibliotecas e ferramentas da Piloterr.

Mais para ler

Guias e notícias sobre web scraping, proxies e extração de dados.

Fingerprint

hellojs vs undici: por que seu scraper Node é bloqueado no JA4

Clientes HTTP do Node expõem uma impressão digital TLS/JA4 distinta. Compare hellojs, undici e axios: e use as ferramentas gratuitas da toolbox para inspecionar sua impressão digital.

Josselin Liebe
Josselin Liebe
Ler
Fingerprint

RNet: Cliente HTTP Python Ultra-Rápido com TLS Fingerprinting Avançado

RNet: Cliente HTTP Python ultra-rápido com TLS fingerprinting avançado e emulação de navegador. Contorne sistemas anti-bot com desempenho impulsionado por Rust.

Josselin Liebe
Josselin Liebe
Ler
Fingerprint

Wreq: Cliente HTTP em Rust para Emulação de Navegador e Fingerprinting TLS

Descubra o Wreq, o cliente HTTP em Rust definitivo para emulação de navegador e fingerprinting TLS. Contorne sistemas anti-bot com exemplos práticos de web scraping.

Josselin Liebe
Josselin Liebe
Ler

Pronto para começar?

Sua API de web scraping está a um clique. Comece com +500 créditos, sem infraestrutura para configurar, sem proxies para gerenciar e sem cartão de crédito necessário.

  • +500 créditos
  • Sem cartão de crédito
  • Todos os endpoints incluídos