Voltar
Vulnerability Intelligence
Tabela de conteúdo

 

Os provedores de serviços de Internet geralmente enfrentam o risco de ataques relacionados à autenticação, spam, ataques de negação de serviço e bots de mineração de dados. O teste público de Turing totalmente automatizado, para diferenciar computadores e humanos, popularmente conhecido como CAPTCHA, é um teste de desafio-resposta criado para restringir seletivamente o acesso a sistemas de computador. Como um tipo de prova de interação humana ou mecanismo de autenticação humana, o CAPTCHA gera desafios para identificar usuários. Em essência, um teste CAPTCHA pode diferenciar máquinas/computadores e humanos. Isso causou uma maior adoção de CAPTCHAs em vários negócios e serviços on-line.

O conceito de CAPTCHA depende das habilidades sensoriais e cognitivas humanas. Essas habilidades permitem que os humanos leiam uma imagem de texto distorcida ou escolham imagens específicas de várias imagens diferentes. Geralmente, computadores e programas de computador, como bots, não são capazes de interpretar um CAPTCHA, pois geram imagens distorcidas com texto ou números, o que a maioria das tecnologias de reconhecimento óptico de caracteres (OCR) não consegue entender. No entanto, com a ajuda da Inteligência Artificial, os algoritmos estão ficando mais inteligentes e os bots agora são capazes de decifrar esses testes. Por exemplo, existem bots que são capazes de resolver um CAPTCHA de texto por meio de mecanismos de segmentação de letras. Dito isso, não há muitos algoritmos automatizados de resolução de CAPTCHA disponíveis.

Este artigo descreve os vários métodos de geração e verificação de CAPTCHAs, sua aplicação e várias maneiras de contornar CAPTCHAs.

 

Razões para usar o CAPTCHA

Os desenvolvedores da Web implantam CAPTCHAs em sites para garantir que estejam protegidos contra bots. Os CAPTCHAs geralmente são usados para evitar:

  • Os bots se registram em serviços como e-mail gratuito.
  • Impeça que os bots coletem suas credenciais ou informações pessoais, ao fazer login ou ao fazer pagamentos on-line.
  • Bots impedem o envio de respostas on-line.
  • Ataques de bots de força bruta.
  • Robôs de mecanismos de pesquisa a partir de páginas de indexação com informações pessoais/confidenciais.

 

Fluxo geral de geração e verificação de CAPTCHA

A imagem abaixo representa o método comum de gerar e verificar CAPTCHAs:

Form Submission

Aplicação de diferentes tipos de CAPTCHA e como contorná-los

 

I. reCAPTCHA e a proteção de sites

recaptcha

O Google reCAPTCHA é um serviço gratuito oferecido para evitar spam e abuso de sites. Ele usa técnicas avançadas de análise de risco e permite que somente usuários válidos continuem.

Process flow diagram of Google reCAPTCHA
Diagrama de fluxo de processo do Google reCAPTCHA

 

Como contornar o reCAPTCHA?

Verificação usando extensões do navegador

Extensões de navegador, como o Buster, ajudam a resolver os desafios de verificação do CAPTCHA. O Buster, por exemplo, usa um software de reconhecimento de fala para contornar os desafios de áudio do reCAPTCHA. O reCAPTCHA permite que os usuários baixem arquivos de áudio. Depois de baixado, API de reconhecimento de fala própria do Google pode ser usado para resolver o desafio de áudio.

Serviços de resolução de CAPTCHA

Os serviços on-line de resolução de CAPTCHA oferecem serviços baseados em humanos. Esses serviços envolvem seres humanos reais contratados para resolver CAPTCHAs.

 

II. CAPTCHA em pessoa real e envios automatizados de formulários

O plugin CAPTCHA de pessoa real jQuery impede o envio automatizado de formulários por bots. Esses plug-ins oferecem CAPTCHAs baseados em texto em uma fonte pontilhada. Isso resolve o problema de envios de formulários falsos.

 

text in dotted font

 

Como contornar o CAPTCHA de pessoa real?

As etapas a seguir podem ser usadas para resolver CAPTCHAs em pessoas reais:

A. Criar conjunto de dados

Neste processo único:

  1. Colete textos de tags HTML de pessoas reais
  2. Agrupe os textos com base nas palavras
  3. Crie um modelo de conjunto de dados para palavras de A a Z (dados de treinamento)
B. Testes para prever as soluções

Depois de concluir com êxito o processo A, configure um processo para:

  1. Colete textos de tags HTML de pessoas reais
  2. Agrupe os textos com base nas palavras
  3. Obtenha a palavra do modelo de conjunto de dados criado no processo A.

 

Exemplo:

do webdriver de importação de selênio hora de importação conjunto de dados = {'* * * * *******': 'J', '******* * * * * * *': 'L', '******** * ** * ** ** * ** * * * ** ** ':' B ', '* * * **** * * * ':' Y ', '* * * ******** * * ':' T ', '***** * ** ** ** * * *': 'C', '******** * ** * ** ** ** ** *': 'E', '******** ** ** ** * ***** ':' D ', '* ** ** ********* ** ** *': 'I', '***** * ** ** ** * *****': 'NÃO', '******* * * * * *******': 'M', '******* * * * * *******': 'N', '******** * * * * * * * * ':' F ', '** * * * * ** * ** * ** * * * * * **': 'S', '***** * ** ** ** * **** *':' Q ', '******* * * * * * * * * * * * *': 'K', '** ** ** * * * ** ** **':' UM ', '****** * * * ******* ':' U ', '******* * * * * *******': 'H', '** ** ** * ** ** ':' V ', '* ** *** * ** * *** ** *': 'Z', '******** * * * * * * * * * * ** ':' P ', '* * * * * * * * * * * * *': 'X', '***** * ** ** ** * * * * * **': 'G', '******** * * * * * * * * * * * ** *': 'R', '******* * * * * *******': 'W'} def group_captcha_string (word_pos): captcha_string =” para i no intervalo (len (word_pos [0])): temp_list = [] temp_string =” para j no intervalo (len (word_pos)): val = word_pos [j] [i] temp_string += val se val.strip (): temp_list.append (opcional) se temp_list: captcha_string += tempor_string senão: captcha_string += 'sp' retornar captcha_string.split (“spsp”) # criar cliente cliente = WebDriver.chrome () client.get (” http://keith-wood.name/realPerson.html “) time.sleep (3) # indexando texto _get = lambda _in: {index: val para índice, val em enumerate (_in)} # obter texto da tag html captcha = client.find_element_by_css_selector ('form [class="realperson-text "] ') .text.split ('\n') word_pos = lista (mapa (_get, captcha)) # texto do grupo texto = group_captcha_string (word_pos) # obter texto (teste) captcha_text = “.join (list (map (lambda x: conjunto de dados [x] if x else “, texto))) imprimir (“captcha:”, captcha_text)

III. CAPTCHA de texto em imagem

CAPTCHAs baseados em texto/texto em imagem são o tipo mais comumente implantado e usam texto distorcido renderizado em uma imagem. Existem dois tipos de CAPTCHAs baseados em texto:

 

CAPTCHA simples

Os CAPTCHAs simples podem ser contornados usando a tecnologia de reconhecimento óptico de caracteres (OCR), que reconhece o texto dentro de imagens, como documentos e fotografias digitalizados. Essa tecnologia converte imagens contendo texto escrito em dados de texto legíveis por máquina.

simple

Exemplo:

importar pytesseract sistema de importação importar argparse tente: importar imagem exceto ImportError: da imagem de importação PIL da importação do subprocesso check_output def resolve (caminho): print (“Reamostrando a imagem”) check_output (['converter', caminho, '-resample', '600', caminho]) retornar pytesseract.image_to_string (Image.open (path)) se __name__=="__main__”: argparser = ArgParse.argumentParser () argparser.add_argument ('path', help = 'Caminho do arquivo Captcha') args = argparser.parse_args () caminho = args.path print ('Resolvendo o Captcha') captcha_text = resolver (caminho) print ('Texto extraído', captcha_text) # comando para executar o script python3 captcha_resolver.py cap.jpg

 

CAPTCHA complicado

Esses CAPTCHAs de texto em imagem são muito complexos para serem resolvidos usando a tecnologia OCR. Em vez disso, as seguintes medidas podem ser consideradas:

  • Crie modelos de aprendizado de máquina, como Rede Neural Convolucional (CNN) ou Rede Neural Recorrente (RNN)
  • Recorra aos serviços de resolução de CAPTCHA

 

 

IV. Soma de números inteiros ou operações lógicas

Esse desafio único envolve a solução de problemas matemáticos, particularmente, encontrar a soma dos números inteiros.

logical captcha

Para contornar esse desafio, é possível:

  1. Extraia texto de tags ou imagens HTML
  2. Identifique o operador
  3. Execute a lógica
  4. Obtenha o resultado

 

V. Mitigando ataques de DDoS usando CAPTCHAs

Em ataques distribuídos de negação de serviço, os cibercriminosos atacam os recursos da rede e os tornam inacessíveis aos usuários. Esses ataques desaceleram temporária ou indefinidamente o recurso alvo, inundando o alvo com tráfego de entrada de vários hosts. Para evitar esses ataques, as empresas usam CAPTCHAs.

DDoS

Os seguintes métodos ou programas podem ser usados para ignorar sites protegidos por DDoS:

  1. Navegadores compatíveis com JavaScript (Chrome/Firefox)
  2. Derivando lógica para gerar respostas de DDoS
  3. Busque o problema de DDoS no site e execute-o usando node.js
Sellamani C.
He is a Senior Software Engineer working as a part of the Data Acquisition team at CloudSEK. In his role, he is responsible for writing reusable codes and scalable web crawlers for XVigil. In his spare time, Sellamani loves to take on new challenges and find solutions to real-time problems.
Nenhum item encontrado.

Blogs relacionados