CAPTCHA Analysis OWASP Tools and Techniques Ulisses Castro Security Researcher http://ulissescastro.com @usscastro CAPTCHA Analysis
Ulisses Castro
C ompletely A utomated P ublic T uring test to tell C omputers and Acrônimo C ompletely A utomated P ublic T uring test to tell C omputers and H umans A part
that a computer could be said to "think" if a human interrogator Turing Test Alan Mathison Turing ~Outubro 1950 The idea was that a computer could be said to "think" if a human interrogator could not tell it apart.
Turing Test Reverse Turing Test CAPTCHA
Proteções Automação de ações "limitador" Spam de mensagens, blogs, forums, ... Registros de contas, consultas, downloads, ... Sistemas de votação, enquetes, ... Ataques de força bruta e dicionário Robôs de pesquisa e "scrapers" ...
Quando o “Reverse Turing Test” falha? Implementações inseguras e mal planejadas Falta de testes (OWASP-AT-008) Imagens criadas sem randomicidade de cores, distorção, sujeira, sobreposição, rotação, fontes, ... Número limitado de imagens “Range” de caracteres baixo Ex: 4 dígitos numéricos (10^4)
Como testar? "... if a human interrogator could not tell it apart." OWASP Testing Guide Testing for Captcha (OWASP-AT-008) "... if a human interrogator could not tell it apart." Como testar?
Inteligência Artificial !
Ferramentas PWNtcha - captcha decoder Captcha Breaker ???? Poucas ferramentas automatizam os testes de forma “abrangente”. Muitas automatizam específicamente! (todas pagas!)
<incluir um nome aqui depois>.py Apresento... <incluir um nome aqui depois>.py Versão alpha 0.1 OWASP, GPL, Link, Download, etc... etc...
Como funciona?
Como funciona?
Técnicas Fuzzing de limiar/threshold Ranking por repetição de palavras reconhecidas Ranking por posição de caracteres reconhecidos Fuzzing de OCR(s)
Transformando CAPTCHA em TEXTO DEMO
OCR(s) Integrados Tesseract Orcad Gocr Cuneiform
Processamento Digital de Imagem (PDI) Binarização Caso específico da Segmentação Conversão para dois tons dado ponto de corte limiar/threshold Objetivo separar determinado objeto de interesse de seu fundo Escolha do Limiar/Thresehold Inspeção do histograma Threshold automático (algorítmos) Tentativa e erro :-)
Binarização
Binarização Manual DEMO
Coincidência? Quebrar o CAPTCHA apenas uma vez não significa que o sistema que estamos testando é falho. Testes de significância estatísticas são necessários para apurar porcentagem de acerto.
Teste de Significância Estatística DEMO
Melhores práticas Ser gerado sempre do lado do servidor Ser validado do lado do servidor Randomicidade das variáveis Imagem não pode ser gerada baseada em token guardado do lado do cliente (hidden) Tem quer ser relacionada a uma sessão Sessão deve ser destruída após o uso (replay attacks) Ser gerada novamente a cada tentativa, com ou sem sucesso Não utilizar palavras de dicionário para criação do captcha
Para quebrar normalmente o custo é maior que o benefício... ReCaptcha (Google) Para quebrar normalmente o custo é maior que o benefício...
...ou não. http://www.nytimes.com/2010/04/26/technology/26captcha.html?src=me&ref=technology
MotionCAPTCHA
MotionCAPTCHA DEMO
nucaptcha
nucaptcha DEMO
Ulisses Castro uss.thebug [a] gmail.com @usscastro OBRIGADO! Ulisses Castro uss.thebug [a] gmail.com @usscastro Agradecimento especial para Conviso Application Security http://www.conviso.com.br
Referências http://blogs.mcafee.com/mcafee-labs/the- captcha-challenge http://www.josscrowcroft.com/projects/motionc aptcha-jquery-plugin/ http://blog.c22.cc/2010/10/12/python-ocr-or- how-to-break-captchas/ http://code.google.com/p/tesseract- ocr/wiki/TrainingTesseract3 http://www.bonsai- sec.com/blog/index.php/breaking-weak-captcha- in-26-lines-of-code/ http://www.google.com/recaptcha http://pt.wikipedia.org/wiki/Signific%C3%A2ncia _estat%C3%ADstica http://www.youtube.com/watch?v=qoB9cBeVUP A http://www.bonsai- sec.com/blog/index.php/capture-the-captcha- and-the-winner-is/ http://ocronline.com/ http://caca.zoy.org/wiki/PWNtcha http://churchturing.org/captcha-dist/