Решаване на големи проблеми с CAPTCHA
Решаване на големи проблеми с CAPTCHA
Автор: admin от 18-12-2013, 05:45, прегледани: 2367
Въпреки това, трудността при разпознаването на captcha от човек изобщо не е най-острият проблем, както може да изглежда на пръв поглед. Разбира се, човек би могъл да си затвори очите за това, ако captcha наистина ни защитаваше от различни автоматизирани системи за разпознаване. Но това далеч не е вярно!
И искам да говоря за инструмент, който решава тези проблеми.
За да се създаде адекватна защита на CAPTCHA, е необходимо първо да се класифицират начините за нейното разпознаване.
Автоматизирано разпознаване на captcha
В момента има три основни начина за автоматизирано разпознаване на captcha:
1. Използване на грешки в алгоритъма за защита
Този подход е насочен към намиране на логически грешки (уязвимости), които ви позволяват да изпратите правилно формуляра, без да разпознавате самата captcha. Това е най-лесният начин за заобикаляне на защитата, но може да се използва предимно само в прости решения „Направи си сам“. Най-честата грешка е предаването на кода за потвърждение на captcha през полета на формуляр или бисквитки в обикновен текст, в base64 или в md5 хеш без използване на сол. За атакуващия няма да е трудно да го получи, дори ако трябва да генерира дъгова таблица според captcha азбуката (само 5-цифрени български букви или само 6-цифрени числа и т.н.) и да направи сравнение. За грешка се счита и когато една и съща captcha може да бъде решена повече от веднъж. Това се отнася предимно за случаите, в които генерираният captcha ID е валиден 5-10 минути, но няма ограничения в броя на проверките. Това позволява на нападателя дакойто вече знае отговора, многократно използвайте идентификатора на разрешената captcha. Можете да използвате груба сила със същия идентификатор на captcha, което в крайна сметка ще доведе до желания резултат.
2. Автоматично разпознаване
Има три основни начина за успешно автоматично разпознаване на captcha:
I. Използвайте готови инструменти за оптично разпознаване на знаци (OCR).
Това е най-простият подход, който не изисква специални умения за програмиране. Такива програми се разпространяват предимно безплатно и има доста от тях: ocropus , cuneiform , tesseract , gocr , orcad и други. Нападателят трябва само да предаде изображението captcha на такава програма, където ще получи вече разпознат текст като изход. Обикновено такива софтуерни продукти имат много фини настройки, за да направят разпознаването по-ефективно. Именно за да се предотврати разпознаването по този начин се използват различни изкривявания, усуквания, добавяне на боклук и т.н. В този случай процентът на разпознаване може да е доста малък (само около 10%), но атакуващият все пак ще успее.
II. Самостоятелно написани скриптове с помощта на GD, ImageMagick и други библиотеки
Такива скриптове ви позволяват да изчистите изображението от боклука, да премахнете фона, да подравните текста вертикално, да изрежете изображението, оставяйки само текста, да премахнете многоцветността, да усредните цвета и т.н. На практика пълноценното разпознаване от такива скриптове е много трудно. Много по-ефективно е да използвате такъв скрипт само за предварително почистване на изображението, оставяйки процеса на анализиране на други методи.
III. Невронни мрежи
Сега най-голям интерес представляват невронните мрежи. За мнозина това все още изглежда като някаква магия. Невронните мрежи са станалиизползвани от нападателите за автоматично разпознаване на всякакви captcha. Те обучават невронна мрежа, която е в състояние да разпознае дори най-сложния reCAPTCH с висока степен на вероятност. Има много различни библиотеки за различни езици за програмиране, които се разпространяват безплатно. Една такава библиотека, Fast Artificial Neural Network, беше представена преди това в списание Harker's.
3. Полуавтоматично разпознаване с участието на евтин човешки ресурс
Има много сайтове като antigate.com, rucaptcha.com, captchabot.com и др., които предоставят печеливша услуга на своите клиенти. Те получават от клиента, в автоматичен режим, снимка с captcha и след няколко (10-30) секунди дават правилния според тях отговор. Процентът на успешно разпознаване в този случай е много висок, около 90-95%. Заслужава да се отбележи, че този процент е много по-нисък за неподготвен посетител.
Също така си струва да се отбележи, че нямаше нито една услуга, включително reCAPTCHA, която да може ефективно да се противопостави на това.
Лесно разпознаване от потребителя
Пример за генерирана html страница:
Примерен css файл /captcha/954f836a78de1d510d28ce70fa7b6a4a.css:
В бъдеще този процес може да бъде усложнен до безкрайност - рисувайте допълнителни пиксели на някои слоеве, рисувайте върху тях на следващите слоеве и т.н.
Нали всичко гениално е просто?!
Защита срещу автоматизирано разпознаване
Също така си струва да се отбележи, че този подход започва да работи ефективно в случай на единична централизирана услуга.
Идеалното решение е такова, при което такива ограничения не са задължителни и можете да промените тези настройки, за да отговарят на вашите нужди. Някои от васще иска да направи лимит от 1 captcha на всеки 30 минути, някой ще иска 5 captcha в рамките на 5 часа, а някой ще предпочете да изключи проверката напълно. Ако се използва такова ограничение, няма никакво значение как се извършва автоматизираното разпознаване на captcha. Всеки един от тях престава да бъде ефективно решение.
Защита Поверителност като услуга
Благодаря за вниманието. Заедно ще направим този свят по-добро място.