CoderCastrov logo
CoderCastrov
Безопасность

Как нам удалось обойти reCaptcha от Google?

Как нам удалось обойти reCaptcha от Google?
просмотров
3 мин чтение
#Безопасность

Этот вопрос возник в рамках школьного проекта, который направлен на анализ уязвимости раскрытия исходного кода через открытую папку git на веб-сайтах в интернете. Для этого нам понадобились веб-сайты, которые мы могли бы просканировать и "использовать" (просто доказательство концепции без раскрытия их исходного кода). Мы решили использовать доступные списки веб-сайтов, такие как список Tranco, и это сработало! Но мы хотели создать свои собственные списки уязвимых веб-сайтов. Для этого мы попытались искать в Google конкретные запросы gdork.

"Google dorking, также известный как Google hacking, может возвращать информацию, которую сложно найти с помощью простых поисковых запросов. Это включает информацию, не предназначенную для публичного просмотра, но недостаточно защищенную и, следовательно, может быть "доркнута" хакером."

Одним из запросов gdork, которые мы использовали, был index of ".git", что работало очень хорошо.

И давало списки веб-сайтов, у которых открытая папка .git, но после нескольких запусков нашего скрипта с разными gdork запросами это перестало работать!

Внезапно появилась reCAPTCHA. И вот как мы перешли от использования уязвимости .git к попытке обойти reCAPTCHA.

Одним из первых шагов было нажатие на кнопку "Я не робот" в нашем скрипте selenium.

Но это не сработало, так как нам (роботу 😄) было предложено выбрать правильные изображения.

Обход reCAPTCHA с использованием распознавания речи в текст

Следующее, что мы заметили, это наличие возможности прослушивания аудио и записи его содержимого вместо выбора изображений, что даже для нас, людей, является сложной задачей.

Мы добавили в наш скрипт на Selenium возможность загрузки аудиофайла и отправки его в AI для распознавания речи в текст. И после того, как мы попробовали множество доступных AI-сервисов, мы обнаружили, что лучшим из них является Google (так что мы, по сути, используем Google против Google 😆).

И это работало очень хорошо (примерно в 66% случаев), и потому что reCAPTCHA давала нам возможность перезагрузить страницу и получить другой аудиофайл, даже если наш скрипт не сработал с первого раза, скорее всего, он сработает после 2-3 попыток.

Таким образом, мы смогли создать эффективный парсер gdorks, который "обходит" reCAPTCHA большую часть времени.

Но поисковый движок Google не глуп :)

Обход reCAPTCHA с использованием прокси

После запуска скрипта для сотен страниц с одного источника (моего компьютера), Google больше не отвечает на наши запросы, и везде появляется эта страница, без возможности прослушать аудио или даже увидеть изображения reCAPTCHA.

В описании ясно указано, что Google считает запросы, отправленные с нашего компьютера, автоматизированными. Чтобы решить эту проблему, очевидным решением было скрыть идентификацию нашего компьютера или использовать несколько компьютеров для парсинга!

Было предложено два решения, первое - физически отключиться от первой Wi-Fi и подключиться к другой, когда появляется эта страница. Но это было не практично, поэтому мы выбрали второе решение - использование прокси для маскировки под другие компьютеры и использование разных "IP" для каждого запроса gdork.

Для реализации этого мы использовали ScraperAPI, чтобы переключаться между прокси, и это работало отлично.

Изначально мы использовали наш реальный IP для парсинга, и каждый раз, когда мы не получали аудио, мы переключались на другой прокси.

Резюме

Наша стратегия парсинга работает следующим образом:

Примечание:

В будущем я могу опубликовать еще одну статью на Medium, содержащую некоторые исправления, которые мы обнаружили для нашего метода парсинга.