Система CAPTCHA

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

та записують її простим текстом. А ту частину що залишилася (“2006”) виводять скористувавшись механізмом CAPTCHA.

Тепер бот, що продивився сторінку, проігнорував усі картинки на ній, прочитає поштову адресу як Joe@domain.com та буде слати на неї листи, які будуть потрапляти на поштову скриньку, яка знаходиться під наглядом програми, що аналізує та блокує спам.

А коли цю e-mail адресу побачила на сторінці людина то вона звісно прочитала не тільки префікс а й ту частину, що була на картинці і буде слати листи за вірною адресою Joe2006@domain.com

Таким чином бот буде гадати, що він працює зі справжніми адресами, в той час реально він буде взаємодіяти з програмою спам аналізу та блокування. Таким чином антиспамовий фільтр може бути достатньо гарно натренований і застосований для захисту усіх інших поштових скриньок на domain.com, а адміністратор може бути спокійним за те, що під дію антиспамового фільтру раптово потрапить важлива кореспонденція.

 

 

 

Уразливі місця CAPTCHA

На перший погляд можне здатися, що CAPTCHA це панацея проти ботів, але насправді це далеко не так. У CAPTCHA є цілий ряд уразливих місць, які дозволяють у деяких випадках зламати захист, а у деяких випадках просто обійти його.

Обійти захист CAPTCHA можна скориставшись особливостями програмної реалізації системи. Найбільш часто зустрічаються помилки при реалізації роботи з сесіями на PHP та ASP .NET, помилки при формування URL, що викликає генерацію зображення для CAPTCHA та деякі інші помилки.

Зламати захист CAPTCHA можна розпізнавши образ на рисунку. Розпізнати образ у найпростішому варіанті можна завдяки тесту на ідентичність, а у більш складних варіантах скориставшись нейтронною мережею.

Передбачення результатів і перебір варіантів

Передбачення результатів можливо лише тоді, коли відомо яка інформація прямо впливає на генерацію CAPTCHA. Одержати її можна у двох випадках: уразлива програма надається у відкритому вихідному коді або необхідні дані отримують за допомогою евристичного аналізу (певна кількість проведених тестів). Такою інформацією може бути IP адреса, знання про використовуваний генератор випадкових чисел. Завдання, зрештою, зводиться до пошуків формули, по якій створюється тест. Тут хакеру знадобляться знання з математичного аналізу.

Перебір усіх можливих варіантів відповіді - теж працездатний прийом. Повним перебором можна скористатися, якщо ПО на сервері, некоректно працює із сесією. Прикладом може служити форум vBulletin.

Використання неіснуючих сесій і повторне використання сесій

Як правило, значення, записане на картинці, скрипт зберігає в сесії в текстовому вигляді, щоб потім порівняти з тим значенням, що ввів користувач, тому дуже важливо, щоб робота із сесією відбувалася коректно. Прочитати з поточної сесії текстове значення ні бот ні користувачів не зможуть, однак цілком можливий варіант підміни сесії на неіснуючу (як приклад - зламаний CAPTCHA на сайті UMC). Іноді буває досить один раз пройти тест і запамятати ідентифікатор сесії, щоб потім можна було безперешкодно багаторазово обманювати тест CAPTCHA (так було з реалізацією тесту в популярному форумі vBulletin).

Тест на ідентичність

Даний спосіб може застосовуватися, для розпізнавання зображень із низьким рівнем шумів або з їхньою повною відсутністю. Його суть полягає в тому, що для ідентифікації символів досить порівнянь окремих фрагментів зображення.

Щоб не бути голослівним наведемо приклад. Нехай нам необхідно розпізнати картинку на рисунку 7а.

Рис. 7. Розпізнавання зображень за

допомогою тесту на ідентичність

 

Спочатку необхідно позбутися від клітинки. Алгоритм у цьому випадку дуже простий - світло зелені кольори клітинки “заливаємо” кольорами фону й одержуємо те, що зображено на рисунку 7б.

Потім необхідно виділити окремо кожний символ (дивися рисунок 7в). І вже потім порівняти із заздалегідь підготовленим еталоном за допомогою порівняння піксел за пікселом. Метод досить простий і досить ефективний.

 

Розпізнавання образів

Однак далеко не будь-яку CAPTCHA можна зламати за допомогою тесту на ідентичність. Часто зустрічаються CAPTCHA з безліччю нелінійних випадкових деформацій, які не піддаються або погано піддаються порівнянню із заздалегідь заготовленими еталонами.

Як же працює розпізнавання образів? Багато користувачів ПК напевно зустрічалися з програмою FineReader, що “на лету” розпізнає величезні масиви тексту. Оброблюваний ним текст має відносно малі розміри й великий обсяг. А до всього й швидкість розпізнавання на високому рівні.

Інша справа CAPTCHA: з однієї сторони нормальний розмір і короткий текст, але з іншого боку - високий рівень шумів і деформацій.

На сьогоднішній момент уже існує багато проектів, що займаються тільки розпізнаванням CAPTCHA. Найбільш відомими з них є два: “UC Berkeley Computer Vision Group” і “PWNtcha”.

Члени “UC Berkeley Computer Vision Group” опублікували в Internet документ, що завіряє в тому, що їм вдається розпізнавати тести, що було сгенеровано за допомогою Gimpy. Причому відсоток успіху становить 92%.

На рисунку 8 наведені приклади досить непростих CAPTCHA, які були розпізнані названою вище групою дослідників.

Рис. 8. Приклади CAPTCHA які були розпізнані

співробітниками інституту Берклі

 

У питанні розпізнавання образів CAPTCHA великого успіху досягли члени групи PWNtcha. На відміну від “UC Berkeley Computer Vision Group”, які більше займалися розпізнаванням зображень, що було спеціально сгенеровано дл