Уязвимости и простота распознавания CAPTCHA на примерах


CAPTCHA (от англ. «Completely Automated Public Turing test to tell Computers and Humans Apart» — полностью автоматизированный публичный тест Тьюринга для разделения компьютеров и людей) — тест, целью которого является определение того, кем является пользователь: человеком или ботом. Идея теста в том, что существуют задачи, элементарные для человека, но сложные для компьютера. Чаще всего данный тест используется для предотвращения регистрации ботов на сайтах, для предотвращения разного рода флуда или попыток подбора пароля.

Теперь давайте поговорим о том, как сделать разгадывание капчи как можно более просты для человека и как можно более сложным для компьютера.

Уязвимости CAPTCHA можно разделить на 2 типа:

Прохождение теста без распознавания символов.

  • CAPTCHA генерируется на основе идентификатора сессии. В таком случае, передавая тот же идентификатор сессии повторно мы будем получать тот же самый вопрос, отет на который мы уже знаем.
  • Содержание ответа на вопрос в HTML коде страницы. Да, бывает и такое.
  • Особенности генератора псевдослучайных чисел. Например, определённый вопрос попадается чаще остальных.
  • Ограниченность количества вопросов. Особенно характерно для тех тестов, вопросы для которых вводятся вручную. В таком случае можно создать базу данных вопросов и ответов на них. Также, если вопросов мало, то велика вероятность угадывания правильного ответа.
  • Возможность выбора ответа на вопрос. В таких случаях значительно возрастает шанс угадать правильный ответ. Например, на подобный вопрос автоматизировано очень тяжело ответить, однако, вероятность угадывания = 1/3. Если злоумышленник будет отправлять 1 запрос в секунду, то за минуту сможет создать 20 пользователей.
  • Ограниченность вариантов ответа на вопрос. Например, только цифры.

Простота распознавания

  • Легкость отделения символов друг от друга – очевидно, что символы, которые легко друг от друга отделить проще распознать.
  • Неискаженный шрифт – чем больше в шрифте различных завитушек, серифов, тем тяжелее определить непосредственно саму букву. Также, наклон символов является хорошей идеей. Многие captcha также накладывают шум на изображение.
  • Использование только одного шрифта – в разы упрощает распознавания картинки, чем больше шрифтов, тем больше возможных вариантов нужно перебрать для каждого из символов.
  • Легкость отделения символов от фона – чем сложнее фон, тем тяжелее отличить от него символы.

Примеры:

Откуда Пример Преимущества Недостатки
phpBB Не обнаружены Идеальный пример плохой каптчи. Она содержит все 4 вышеперечисленных недостатка. Символы достаточно сильно контрастируют с фоном, их легко отделить друг от друга, использован один простой шрифт.
google Шрифт искажен, буквы могут накладываться друг на друга. Используется один шрифт. Буквы легко отделить от фона.
yahoo! В некоторых случаях шрифт искажается. Довольно легко распознаётся. Символы довольно легко отделить от фона.
msn Шумы цвета шрифта, искажение букв. Контрастирует с фоном.
friendster В целом, не плохо, но и не хорошо. Разные шрифты, наклон, искажения. Довольно легко отделимо от фона. Шрифт легко читаем
Разные Не уверен, что такие экземпляры вообще можно назвать защитой. Из преимуществ – легкая генерация и легко прочитать человеку. Содержит все перечисленные недостатки. Суперплохо.
myspace Довольно неплохо. Символы искажены, не сильно контрастируют с фоном. Если постараться, то можно отделить символы от фона. В основном, основываясь на их форме. Шрифт довольно простой. Также, иногда, довольно нелегко причитать человеку.
orange.md По сравнению с предыдущей версией captcha, которая ломалась за 20 строк php кода неплохо. Неплохое искажение. Довольно легко отделить от фона. Простой шрифт.
moldcell.md Низкое разрешение картинки. Крайне ограниченный набор символов. Всегда один и тот же фон. Привязка к сессии. Легко получить несколько изображений с одинаковыми символами, отправляя тот же самый идентификатор сессии, что значительно повышает качество распознавания.
nic.md Простота генерации. Один сплошной жирный минус. Мало того, что само изображение легко распознать, так ещё и ответ хранится в исходном коде страницы. А ведь за этой картинкой важные данные владельцев доменов .md. Крайняя степень халатности.
mail.md Изображение размыто. Возможно, в некоторых случаях тяжело отделить символы от фона. Неприятно для глаз. Шрифт довольно простой и прямой.
faces.md Довольно неплохо. Напоминает гугловскую, но попроще. Есть искажение. Симовлы легко отделить дргуг от друга и от фона. Простой шрифт.
simpals (point.md, forum.md, etc.) Простота генерации. Очень слабая каптча. Легко отделить от фона, нет искажений, простой шрифт.

Также, в последнее время набирают популярность сервисы распознавания символов людьми. Как “честные”, так и не очень. Под второй категорией подразумевается подсовывание пользователям одного сайта или приложения вопроса с другого сайта. Ответив на вопрос пользователь помогает создать очередной спам аккаунт.

Be safe.

, ,

  1. #1 by Яр Бест on April 22, 2010 - 11:54

    Лично я противник каптчи. Далеко не все ею могут воспользоваться. Правда, из-за этого мой сайт бомбят спаммеры, да заканчиваются у них деньги на телефонном счету каждый раз, как они захотят позвонить папе. А за статью спасибо :)

  2. #2 by Grigori on April 22, 2010 - 14:04

    Пожалуйста :)
    Что вы подразумеваете под использованием? Повесить себе на сайт, или ответить на вопрос (проблемы со зрением, и т.д.)?

  3. #3 by Яр Бест on April 23, 2010 - 09:36

    Ответ на вопрос. Я именно про людей у которых проблемы. Сам этим не страдаю, слава Богу, но два года назад у меня появился незрячий друг и я стал смотреть на компьютер с его точки зрения, так как настраивал (да и настраиваю) ему компьютер. И каптча – это настоящий кошмар для таких людей.

  4. #4 by Grigori on April 23, 2010 - 15:18

    Для слабозрячих/незрячих есть звуковая капча.

  5. #5 by Яр Бест on April 26, 2010 - 09:30

    Есть, не спорю, но например, та же рекаптча только на английском… :( Да и не везде даже она используется…

  6. #6 by Lynx on April 27, 2010 - 15:59

    почему не проанализирована ниже стоящая капча?! :-Р

  7. #7 by Noname on July 16, 2010 - 15:48

    Обзор сделан человеком никогда жизни не взламывавшем капчи: завитушки, серифы и т.п. абсолютно не мешают обучить OCR распознавать букву. А вот слипшиеся буквы как у гугла, случайный наклон каждой буквы по отдельности и невозможность легко получить несколько разных картинок с одинаковым текстом – вот реально создающие проблемы действия. Все остальные описанные ухищрения обходятся на раз-два с вероятностью распознать отдельный символ 90-100%, что даёт для, допустим 5-символьной капчи, вероятность её распознавания от 60% и выше, что просто более чем достаточно. Кстати если есть возможность получить несколько разных картинок с одинаковым текстом в течении одной сессии то вероятность распознавания стремится к 100% при запросе 5-10 таких картинок


(will not be published)