Inovações em segurança na Web: Como o Bot Challenge da Cloudflare e o Turnstile protegem o tráfego da Web
Com o constante desenvolvimento de tecnologias na Internet, a segurança dos recursos da Web se torna uma prioridade para os proprietários e desenvolvedores de sites. O uso de ferramentas de proteção eficazes contra bots e ameaças automatizadas está se tornando uma necessidade.
As soluções da Cloudflare (Bot Challenge e Turnstile) se destacam por sua inovação e equilíbrio entre facilidade de uso e proteção confiável. Vamos dar uma olhada mais de perto em seus mecanismos operacionais.
De acordo com os desenvolvedores, o principal objetivo da criação dessas tecnologias é atenuar os ataques de bots mal-intencionados sem afetar os usuários reais.
A Cloudflare não pode bloquear absolutamente todos os bots, portanto, usa sua própria lista de bots permitidos. O restante do tráfego de bots não incluído nessa lista será definido como mal-intencionado, o que significa que o acesso à página protegida provavelmente será negado.
O que são Bot Challenge e Turnstile? No primeiro caso, ainda estamos sendo testados. No segundo caso, tudo será feito para nós, eles verificarão de acordo com o princípio de uma catraca no metrô. Se nosso chip funcionar, entre. Não, isso significa estar na lista negra.
Exemplo de desafio de bot (as opções podem ser diferentes):
Exemplo de catraca:
Como a Cloudflare detecta bots
O serviço usa métodos de detecção de bots passivos (do lado do servidor) e ativos (do lado do cliente).
Métodos passivos
Detecção de botnet
A Cloudflare mantém um catálogo de dispositivos, endereços IP e comportamentos associados a botnets mal-intencionados. Qualquer dispositivo suspeito de pertencer a uma dessas redes é automaticamente bloqueado ou enfrenta problemas adicionais do lado do cliente que precisam ser resolvidos.
IP Reputation
A reputação do endereço IP de um usuário é baseada em fatores como geolocalização, ISP e histórico de reputação. Por exemplo, os endereços IP pertencentes a um data center ou a um provedor de VPN conhecido terão uma reputação pior do que um endereço IP residencial. O site também pode restringir o acesso ao site de regiões fora do território que atende, já que o tráfego do cliente real nunca deve vir de lá.
HTTP Request Headers
O Cloudflare usa cabeçalhos de solicitação HTTP para verificação. Se você tiver um agente de usuário que não seja de navegador, seu analisador poderá ser facilmente confundido com um bot. O serviço também pode bloquear um bot se ele enviar uma solicitação sem cabeçalhos. Ou se houver cabeçalhos incompatíveis, dependendo do seu agente de usuário.
TLS fingerprint
Uma impressão digital TLS é criada ao se conectar ao servidor. O sistema analisa suítes de cifras, extensões e curvas elípticas para calcular o hash da impressão digital.
Se o cabeçalho do User Agent da solicitação do cliente corresponder ao User Agent associado ao hash de impressão digital salvo, o sistema de segurança presumirá que a solicitação veio de um navegador padrão. Se esses dados não corresponderem, a solicitação será bloqueada.
Fingerprint HTTP/2
Como na impressão digital TLS, cada solicitação de cliente terá uma impressão digital HTTP/2 estática. Para determinar a legitimidade de uma solicitação, a Cloudflare sempre verifica se o par de impressões digitais e agente de usuário da solicitação corresponde ao par da lista branca armazenada em seu banco de dados.
As impressões digitais de HTTP/2 e TLS são quase idênticas. De todos os métodos de detecção de bots passivos usados pela Cloudflare, esses dois são os tecnicamente mais difíceis de monitorar com base em solicitações. No entanto, eles são os mais importantes.
Métodos ativos
Canvas fingerprint
Canvas é uma API HTML5 usada para desenhar gráficos e animações em uma página da Web usando JavaScript. Para criar uma impressão digital do Canvas, a página da Web solicita a API do Canvas do navegador para renderizar a imagem. Essa imagem é então transformada em hash para criar uma impressão digital.
A impressão digital da tela depende de várias camadas do sistema de computação, como:
- Unidade de processamento gráfico - GPU.
- Driver de GPU, sistema operacional, fontes, algoritmos de renderização.
- O mecanismo de processamento de imagens do navegador - WebGL.
Como a alteração de qualquer uma dessas categorias cria uma impressão digital exclusiva, esse método distingue com precisão as classes de dispositivos.
A Cloudflare tem um grande conjunto de dados de pares legítimos de Canvas + User Agent. Usando o aprendizado de máquina, eles podem detectar adulterações nas propriedades do dispositivo (como o User Agent, o sistema operacional ou a GPU) identificando uma discrepância entre sua impressão digital e a esperada.
Event Listening
O Cloudflare usa JavaScript para adicionar um método addEventListener às páginas da Web que escuta as ações do usuário, como movimentos do mouse, cliques do mouse ou pressionamentos de tecla. Se eles não forem usados, há motivos para acreditar que o usuário é um bot.
API request
APIs específicas do navegador. Essas especificações existem em um navegador, mas podem não existir em outro.
Por exemplo, window.chrome é uma propriedade que só existe no navegador Chrome. Se os dados que você está enviando indicarem que você está usando o Chrome, mas você os estiver enviando usando o User Agent do Firefox, será óbvio que algo está errado.
Timestamp API
O serviço usa APIs de carimbo de data/hora, como Date.now() ou window.performance.timing.navigationStart para rastrear as métricas de velocidade do usuário. Se as tags não corresponderem à atividade normal de uma pessoa na Internet, o usuário será bloqueado.
Detecção automática de navegador
O Cloudflare solicita propriedades que só existem em ambientes automatizados. Por exemplo, a presença de window.document.__selenium_unwrapped ou window.callPhantom indica o uso do Selenium e do PhantomJS. Por motivos óbvios, você será bloqueado se isso for descoberto.
Detecção de sandbox
Existem verificações que impedem ambientes de navegador emulados, como no NodeJS usando o JSDOM. O script pode procurar o arquivo de objeto de processo que só existe no NodeJS. Também é possível determinar se as funções foram alteradas usando Function.prototype.toString.call(functionName).
Cloudflare Turnstile
Cloudflare Turnstile é uma alternativa inteligente ao CAPTCHA. Ele pode ser incorporado em qualquer recurso da Web sem enviar tráfego por meio da Cloudflare e sem mostrar o captcha aos visitantes.
Vantagens da catraca:
- Interface intuitiva e fácil de usar.
Não há necessidade de decifrar textos ou imagens.
- Fácil integração com outros serviços da Cloudflare.
O que o torna atraente para os usuários do Cloudflare.
- Proteção confiável contra spam e ameaças cibernéticas.
Combinando segurança com conveniência para o usuário.
Considerando tudo o que foi dito acima, pode parecer que nada pode superar essa proteção. Nem tudo é tão desesperador, vamos analisar várias opções para resolver o problema do Cloudflare, começando pelo método mais direto.
Solucione a CDN da Cloudflare chamando o Origin Server
O Cloudflare só pode bloquear solicitações que passam por sua rede, portanto, seria bom se pudéssemos enviar a solicitação diretamente para o servidor de origem. Nenhuma proteção entre você e os dados de que precisa!
Você precisa concluir duas etapas:
- Encontre o endereço IP de origem.
Em sites seguros, os registros DNS estarão ocultos. Mas provavelmente não em todos os lugares: alguns subdomínios desprotegidos, serviços antigos ou mensagens de e-mail podem estar acessíveis sob o mesmo nome de domínio, mas ainda apontam para o servidor de origem.
2. Solicitar dados do servidor de origem.
Você tem o endereço IP original, ótimo! Mas agora... o que fazer com ele? Você pode tentar colá-lo na barra de URL do navegador, mas isso pode não funcionar. Essa é uma configuração comum do servidor para permitir apenas conexões usando um nome de domínio válido e não um endereço IP. Como o uso de nomes de domínio vai para o DNS, precisamos evitá-los.
Você pode tentar uma ferramenta como curl, que permite enviar uma solicitação a um endereço IP de destino, mas força o host a usá-lo. Outra opção é tentar forçar o uso do arquivo host (ou seja, /etc/hosts), pois a solicitação não verificará o DNS e usará o endereço IP que você definiu manualmente.
Tudo isso parece bom, mas em muitos casos esse método não funciona, já que a Cloudflare, na prática, usa métodos de proteção, como uma sala de espera.
O que é uma sala de espera? Seu navegador passa algum tempo resolvendo tarefas para provar que você não é um robô. Se você for marcado como um robô, receberá um erro de "Acesso negado". Caso contrário, você será redirecionado automaticamente para a página real da Web.
Você se encontrará na sala de espera da Cloudflare por alguns segundos. O tempo exato depende do nível de segurança do alvo e de como seu analisador passa nos testes. Quando a tarefa for concluída uma vez, você poderá navegar no site por algum tempo.
Como resolver a sala de espera do Cloudflare? O ideal é resolver tarefas de JavaScript e provar que você é humano. No entanto, uma abordagem viável é analisar a tarefa JavaScript do Cloudflare para entender o algoritmo responsável por criar a tarefa e verificar a resposta. Assim, você pode reprojetar o script.
Os principais fatores ao entrar em contato com o Bot Challenge e o Turnstile são proxies residenciais de alta qualidade e um agente de usuário cuidadosamente selecionado.
Considerando tudo o que foi dito acima, a maneira mais fácil é confiar nas tecnologias desenvolvidas para passar o Bot Challenge e o Turnstile da Cloudflare em recursos como o CapMonster Cloud, que oferece uma solução eficaz para esses tipos de proteção várias vezes mais barata do que outras.
Usando os recursos do ZennoPoster, você pode implementar a seguinte solução Cloudflare Turnstile:
Usando uma expressão regular, extraímos a websiteKey necessária, que, junto com nossa chave de API, passamos com uma solicitação POST para o CapMonster Cloud.
Depois de uma pausa de 5 a 7 segundos, enviamos uma segunda solicitação com um TaskID confirmado. Se você receber um resultado com um token pronto, insira-o e envie-o. Se não houver token na resposta, enviaremos uma solicitação repetida com os mesmos parâmetros após alguns segundos.
Documentação detalhada pode ser encontrada seguindo o link. Além disso, os desenvolvedores oferecem uma solução para esses tipos de proteção usando o Extensão de navegador CapMonster Cloud.
Resumindo, com o desenvolvimento da tecnologia e, especialmente, com a introdução da inteligência artificial, a proteção melhorará e complicará as tarefas dos desenvolvedores. Mas serviços como o Capmonster Cloud não ficarão parados, mas desenvolverão sua própria resposta a essas tecnologias.
Note: Gostaríamos de lembrá-lo de que o produto é usado para automatizar testes em seus próprios sites e em sites aos quais você tem acesso legal.