CAPTCHA В ЭПОХУ ЦИФРОВЫХ УГРОЗ: ЭВОЛЮЦИЯ, УЯЗВИМОСТИ И РЕШЕНИЯ.
В данной статье исследуются современные методы обхода CAPTCHA, основанные на технологиях машинного обучения, а также способы противодействия этим угрозам. Основное внимание уделяется применению сверточных нейронных сетей, рекуррентных нейронных сетей и генеративных состязательных сетей. Также обсуждаются основные методы защиты, включая zxCAPTCHA, которая комбинирует текстовые и графические элементы, механизмы honeypot и временных меток.
В условиях стремительного развития интернета и цифровых технологий проблема сетевой безопасности приобретает особую актуальность. Злоумышленники активно используют автоматические программы и ботов для взлома учетных записей, кражи персональных данных и других вредоносных действий, что увеличивает потребность в надежных средствах защиты на онлайн-сервисах. Одним из наиболее эффективных инструментов является CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart), представляющая собой автоматический тест Тьюринга для различения компьютеров и людей.
Термин CAPTCHA возник в начале 2000-х годов и первоначально представлял собой простой тест, который легко проходил человек, но был сложным для компьютера. Однако с развитием технологий машинного обучения появились многочисленные методы обхода CAPTCHA, что поставило под сомнение эффективность этой технологии в защите информации.
Рассмотрим различные методы обхода CAPTCHA, проведем их сравнительный анализ и определим основные способы противодействия этим угрозам.
Эволюция CAPTCHA привела к созданию разнообразных видов теста Тьюринга, отличающихся по принципу работы и уровню сложности. Существуют следующие основные типы CAPTCHA:
- Текстовая CAPTCHA. Представляет собой слова, фразы, числа или комбинации букв и цифр, которые пользователи должны распознать и ввести.
- Графическая CAPTCHA. Основана на анализе изображений. Пользователь выбирает нужные изображения из набора, например, с гидрантами или пешеходными переходами.
- Аудиальная CAPTCHA. Представляет собой аудиозаписи, где дикторы произносят символы или слова, которые нужно распознать и ввести.
- Задачная CAPTCHA. Предлагает пользователям решить простую задачу, например, собрать пазл, выбрав правильный элемент.
- Невидимая CAPTCHA. Работает в фоновом режиме, анализируя поведение пользователя на сайте, например, скорость и траекторию движения курсора, частоту и ритм кликов.
Несмотря на разнообразие методов CAPTCHA, каждый из них имеет свои преимущества и недостатки. Современные технологии продолжают выявлять уязвимости, особенно в контексте развивающихся методов машинного обучения (МО), применяемых для обхода данной защиты.
Методы обхода CAPTCHA можно разделить на пять категорий:
- Методы на основе анализа изображений включают алгоритмы, предназначенные для распознавания изображений с целью обхода CAPTCHA.
- Методы на основе машинного обучения используют нейронные сети для обучения моделей, способных эффективно решать CAPTCHA.
- Методы на основе анализа поведения пользователя направлены на анализ поведения пользователя, чтобы имитировать человеческое взаимодействие с CAPTCHA.
- Методы на основе перебора основаны на переборе всех возможных вариантов решения CAPTCHA.
- Методы на основе манипуляции с системой предполагают вмешательство в саму CAPTCHA-систему с целью её обхода, например, использование сторонних сервисов, где люди решают CAPTCHA за вознаграждение.
В зависимости от типа CAPTCHA злоумышленники выбирают разные методы её обхода, однако наиболее универсальны методы на основе машинного обучения. Выделяется три основных метода:
- Сверточные нейронные сети (CNN)
- Рекуррентные нейронные сети (RNN)
- Генеративные состязательные сети (GAN)
Рассмотрим более подробно эти методы. Сверточные нейронные сети (CNN) представляют собой прямую искусственную нейронную сеть, аналогичную биологическому мозгу. Нейроны в разных слоях связаны между собой, и каждый нейрон имеет свой вес, который меняется в процессе обучения для оптимизации. CNN особенно хорошо справляются с задачами распознавания образов на изображениях.
В исследовании [1-2] описаны архитектура и подход к обучению сверточной нейронной сети, предназначенной для распознавания CAPTCHA, созданной с использованием библиотеки Python ImageCaptcha Library. Показанная точность распознавания составила 98,9% по метрике accuracy. Архитектура CNN включает несколько сверточных слоев для выделения признаков, слои подвыборки (pooling) для уменьшения размерности, и полносвязные слои для классификации. Для обучения использовались изображения CAPTCHA, предварительно очищенные от шумов и приведенные к одному размеру.
Для борьбы с переобучением использовались регуляризационные методы, такие как Dropout. Процесс распознавания состоял в разделении CAPTCHA на отдельные символы, что упрощало задачу их классификации.
Подобный подход позволил добиться высоких результатов, однако он сталкивается с определёнными трудностями при обработке сильно искажённых изображений или тех, на которых символы расположены слишком близко друг к другу. Эти ограничения снижают универсальность методов для различных типов CAPTCHA.
Рекуррентные нейронные сети (RNN) представляют собой класс искусственных нейронных сетей, специально разработанных для обработки последовательных данных. В отличие от традиционных прямых нейронных сетей, которые обрабатывают входную информацию в фиксированном порядке, RNN способны учитывать предшествующие состояния, что делает их особенно эффективными для задач, связанных с временными рядами и последовательностями, такими как обработка естественного языка, распознавание речи и анализ временных данных.
В работе [3] подчеркивается важность рекуррентных нейронных сетей (RNN) для обработки последовательных данных. Автор рассматривает два типа рекуррентных нейронных сетей: Long Short-Term Memory (LSTM) и Gated Recurrent Unit (GRU). Эти сети предназначены для решения проблем с затуханием и взрывом градиентов, которые могут возникнуть при обучении обычных RNN. В статье детально описано использование RNN совместно с Connectionist Temporal Classification (CTC), что позволяет рекуррентным нейронам работать с последовательностью данных, устраняя необходимость в точной разметке временных интервалов, что облегчает процесс обучения.
Разработчик предлагает модель CTCModel, которая представляет собой расширение базовой модели Keras, состоящее из трех подмоделей:
- Модель Train (обучение): использует функцию потерь CTC (ctc_batch_cost), которая оценивает вероятность всех возможных путей, ведущих к заданной последовательности меток. Этот модуль принимает на вход четыре элемента: наблюдения (например, изображения или аудиофайлы), метки (целевая последовательность), длину наблюдений и меток. Его задача – оптимизировать параметры сети, минимизируя разницу между предсказаниями и реальными метками.
- Модель Predict (предсказание): ответственна за декодацию выходного распределения вероятностей.Поддерживает два режима: best-path decoding, который выбирает наиболее вероятную метку на каждом шаге, и prefix search decoding, который ищет метки с учетом контекста, что может повысить точность, хотя и потребует больше вычислительных ресурсов.
- Модель Evaluate (оценка): используется для расчета метрик качества, таких как Label Error Rate (LER), Sequence Error Rate (SER) и стоимость ошибки (loss). Этот модуль вычисляет показатели точности на основе метрик CTC, таких как ошибка на уровне символов (LER) и ошибка на уровне всей последовательности (SER), а также оценивает стоимость ошибок.
Основная идея этой модели заключается в применении рекуррентных слоев, таких как LSTM и GRU, которые обрабатывают временные данные, учитывая их последовательность. В статье утверждается, что модель CTCModel была протестирована на датасете RIMES, содержащем рукописный французский текст, и показала высокую точность (7,6% по показателю Correctness Error Rate (CER)) на тестовом наборе. Добавление сверточных слоев позволило улучшить точность за счет лучшего извлечения признаков. Эксперименты подтверждают, что объединение рекуррентных нейронных сетей, сверточных слоев изначительно повышает точность распознания последовательных данных, обеспечивая более эффективное управление ими.
Генеративные состязательные сети (GAN) представляют собой архитектуру глубокого обучения, разработанную для генерации новых данных, которая основана на концепции состязательного обучения.
В работе [4] исследователи предлагают фреймворк DW-GAN (Deep Worst Case Generation by Competition), основанный на генеративных состязательных сетях, для автоматической обработки текстовых CAPTCHA. Эта система предназначена для работы с изображениями, содержащими шумы и символы разной длины, характерными для CAPTCHA, используемых на тенковых веб-платформах.
DW-GAN состоит из трёх основных этапов:
- Background Denoising: этот этап предназначен для устранения шумового фона с помощью GAN, который автоматически очищает изображение от шума, что улучшает визуальную разборчивость символов.
- Character Segmentation: после очистки фона осуществляется сегментация символов, что позволяет выделить границы символов на изображении. Это делается с использованием алгоритмов обнаружения границ и сегментации на основе интервалов, что позволяет разбить изображение на отдельные символы для последующего анализа.
- Character Recognition: на этом этапе сверочная нейронная сеть анализирует каждое сегментированное изображение, классифицируя и распознавая каждый отдельный символ. Итогом является формирование строки символов, которая содержит распознаваемый текст.
Кроме того, в статье упоминается метод обучения на основе схемы генератора и дискриминатора. Здесь генератор создает изображения, а дискриминатор оценивает их и предоставляет обратную связь для генератора, указывая ему, насколько успешно выполнено задание. Этот процесс повторяется до тех пор, пока генератор не сможет создать изображения, не отличающиеся от оригинальных. Это значительно улучшает точность последующих этапов обработки и распознания символов. DW-GAN продемонстрировал высокую точность (более 94%), в том числе отдельные его компоненты также показали хорошие результаты. Таким образом, DW-GAN значительно улучшает распознавание сложных CAPTCHA, особенно тех, которые используются на теневых веб-платформах.
В статье [5] авторы представляют свою собственную реализацию CAPTCHA под названием zxCAPTCHA, которая комбинирует текстовое и графическое представление.
Система zxCAPTCHA включает два уровня защиты:
- Первый уровень – текстовая CAPTCHA, состоящая из нескольких текстовых блоков, каждый из которых содержит от 3 до 5 символов. Эти блоки подвергаются различным искажениям, таким как повороты, добавления шумов, перекрытия линий и сложные фоны, что затрудняет их чтение.
- Второй уровень – графическая CAPTCHA, в которой пользователи должны выбирать изображения, соответствующие тематическим подсказкам, и выполнять действия согласно инструкциям. В CAPTCHA используется сетка, где пользователи выбирают подходящие изображения с правильным цветом фона, а розовый символ подсказки создаёт случайные цветовые изменения, что позволяет пользователю сделать верный выбор между изображениями.
Экспозиция текстовых CAPTCHA усложняет их распознавание, что делает этот вид CAPTCHA более сложным для атаки. Эксплуатационная безопасность эксперимента по распознаванию zxCAPTCHA с использованием сетей LeNet-5 и Resnet-50 показала хорошую стойкость системы против атак, с успешными попытками менее 25% для обеих этих моделей.
Эти результаты показывают, что zxCAPTCHA обладает высокими показателями защиты от атак, демонстрируя устойчивость к атакам на основе анализа нейронных сетей.
В статье [6] предложено использование ловушек honeypot для защиты от обхода CAPTCHA. Улучшение текстовой CAPTCHA осуществляется добавлением скрытого текстового поля с атрибутами «id» и «name», имитирующего поле ввода символов. Это поле, называемое «honeypot», устанавливается как обязательное с помощью HTML, однако через некоторое время после загрузки страницы атрибут «required» изменяется на «not-required» с помощью JavaScript. Это делает поле ненужным для человека, тогда как бот, не замечая изменения, пытается его заполнить, что приводит к ошибке.
Второй метод улучшения CAPTCHA включает использование временной метки для фиксации времени запроса страницы с CAPTCHA. После отправки клиентом (человеком или ботом) формы с решённой CAPTCHA сервер сравнивает зафиксированное время с текущим, определяя продолжительность решения задачи. Если это время оказывается слишком коротким, сервер может заподозрить бота, так как человеку обычно требуется несколько секунд для правильного решения CAPTCHA.
Результаты на основе анализа 5000 отправленных форм показали, что 88% отправок были успешно перехвачены только с помощью метода временной метки, а 89,9% отправок, сделанных ботами, были обмануты при заполнении поля honeypot. Более того, было установлено, что ни один реальный пользователь не заполнил поле honeypot.
Статья [7] посвящена разработке системы BeCAPTCHA-Mouse, предназначенной для выявления ботов на основе нейромоторной модели динамики мыши и методов синтеза искусственных траекторий. Авторы подчёркивают снижение эффективности традиционных механизмов защиты, таких как CAPTCHA, вследствие развития технологий машинного обучения и компьютерного зрения, предлагая использовать поведенческие биометрические признаки для противодействия ботам.
BeCAPTCHA-Mouse состоит из двух ключевых компонентов. Во-первых, нейромоторная модель динамики мыши, учитывающая биомеханические и нейрофизиологические аспекты движений, что позволяет выделить новые признаки для различения поведения человека и бота. Модель анализирует параметры перемещения курсора, включая скорость, ускорение и направление. Во-вторых, предложены методы генерации синтетических траекторий мыши: функциональный метод, основанный на эвристиках, и метод на базе генеративно-состязательной сети (GAN). Этот метод использует генератор для создания реалистичных траекторий из гауссового шума, которые затем проверяются дискриминатором.
Авторы также создали новый набор данных, включающий 15000 траекторий мыши, полученных от реальных пользователей и синтезированных ботами. Экспериментальные результаты показывают высокую точность (до 93%) идентификации бот-генерируемых траекторий, которая увеличивается до 97% при использовании дополнительных параметров динамики мыши.
Таким образом, BeCAPTCHA-Mouse демонстрирует потенциал для повышения безопасности CAPTCHA и обнаружения ботов, открывая перспективы для дальнейших исследований в области поведенческой биометрии.
Заключение
Проведенное исследование показало, что современные методы машинного обучения способны эффективно преодолевать различные типы CAPTCHA, особенно те, которые основаны на классических подходах к защите, таких как распознавание текста или простых графических объектов. Анализ существующих подходов выявил, что наиболее успешны методы, использующие глубокие нейронные сети, например, сверточные нейронные сети (CNN), рекуррентные нейронные сети (RNN) и генеративные состязательные сети (GAN), а также комбинации этих архитектур.
Однако важно отметить, что прогресс в создании CAPTCHA не стоит на месте. Разработка новых защитных мер, таких как использование состязательных примеров, может существенно осложнить задачу для злоумышленников. Эти подходы демонстрируют высокий уровень устойчивости к современным методам машинного обучения, делая CAPTCHA более надежными средствами защиты.
Тем не менее, учитывая непрерывное развитие технологий, необходим постоянный мониторинг и адаптация методов защиты. Эффективное противостояние автоматизированным атакам требует внедрения комплексных решений, сочетающих передовые технологии машинного обучения с инновационными методами защиты информации. В будущем возможно создание еще более сложных систем CAPTCHA, способных противостоять даже самым продвинутым алгоритмам машинного обучения.
Таким образом, проведенный обзор и сравнительный анализ методов обхода CAPTCHA позволяют сделать вывод о необходимости дальнейшего исследования и разработки эффективных средств защиты, чтобы обеспечить безопасность интернет-ресурсов и предотвратить несанкционированный доступ.
- Noury Z., Rezaei M. Deep-CAPTCHA: A deep learning based CAPTCHA solver for vulnerability assessment // ERN: Neural Networks & Related Topics (Topic). 2020. https://doi.org/10.2139/ ssrn.3633354
- Lu, Shida & Huang, Kai & Meraj, Talha & Rauf, Hafiz Tayyab. (2022). A novel CAPTCHA solver framework using deep skipping Convolutional Neural Networks. PeerJ Computer Science. DOI:10.7717/peerj-cs.879
- Soullard, Yann & Ruffino, Cyprien & Paquet, Thierry. (2019). CTCModel: a Keras Model for Connectionist Temporal Classification. DOI:10.48550/arXiv.1901.07957
- Zhang, Ning & Ebrahimi, Reza & Li, Weifeng. (2022). Counteracting Dark Web Text-Based CAPTCHA with Generative Adversarial Learning for Proactive Cyber Threat Intelligence. 10.48550/arXiv.2201.02799.
- Dinh, Nghia & Nguyen, Trung & Truong Hoang, Vinh. (2023). zxCAPTCHA: New Security-Enhanced CAPTCHA. 1-6. 10.1109/KST57286.2023.10086931.
- Banday, M. Tariq & Sheikh, S.A.. (2020). Improving Security Control of Text-Based CAPTCHA Challenges using Honeypot and Timestamping. 704-708. 10.1109/ICCMC48092.2020.ICCMC-000131.
- Acien, Alejandro & Morales, Aythami & Fierrez, Julian & Vera-Rodriguez, Ruben. (2020). BeCAPTCHA-Mouse: Synthetic mouse trajectories and improved bot detection. Pattern Recognition. 127. 10.1016/j.patcog.2022.108643.