Как взламывают Google Recaptcha 2

Многие сайты сейчас используют рекапчу от гугла и не зря: простое и удобное решение в борьбе со спамом. Но вместе с тем многие умы бьются над расшифровкой алгоритмов работы гуглокапчи, дабы обойти эту защитную меру.

Способы достаточно оригинальны и интересны, само забавно, что технологии Google в большинстве случаев помогают взломать Recaptcha. Как это происходит и почему, рассмотрим в нашем материале.

Для начала немного теории. Изначально понятие капчи подразумевало собой ввод символов с картинки: буквы, цифры или букво-циферная комбинация. Со временем появились программы для распознавания текста, и капча стала усложняться: стал появляться фон, буквы и цифры стали располагаться под наклоном, количество символов для ввода стало варьироваться, добавляли шум и помехи для исключения автоматического распознавания. Именно так и выглядела первая версия рекапчи, столь ненавистной многим пользователям.

В итоге всё сошлось к тому, что усложнения картинки для ввода не давало ощутимого эффекта, а только лишь затрудняло ввод обычным юзерам. Я думаю, многие помнят времена, когда откровенно матерились, когда не поймешь какой символ изображен и капчу удавалось вводить далеко не с первого раза. И тогда корпорация Google скакнула далеко вперед, предложив на всеобщее обозрение Recaptcha 2. Нельзя сказать, что идея была настолько инновационной — к тому моменту уже было реализовано множество интересных защит от спама: собрать пазл, ответить на вопрос — все они имели свои преимущества и недостатки.

Вторая версии рекапчи стала более умной и человекоориентированной: хватало обычного нажатия галочки, для того, чтобы пройти проверку. В более сложных ситуациях уклон шёл на выбор подходящих картинок. Google не останавливается на достигнутом и уже следующим поколением планируется ввод в эксплуатацию Invisible Recaptcha, более подробно о ней можно почитать в статье. Но при этом умы хакеров поглощены над задачей, как обойти эту систему: ведь тогда открываются просторы для большого количества сайтов.

Одним из больших недостатков всех рекапч — это ограниченный набор комбинаций. В первой рекапче это был определённый набор слов и фраз, во второй — ограниченное число картинок и тех же слов в варианте аудио капчи (рассмотрим чуть позже). Всё это при правильном подходе позволяет сузить круг в поиске решений.

Из основных методов взлома рекапчи я бы выделил только два: подбор комбинации картинок, на которые надо нажать, чтобы пройти тест, и расшифровка звуковой записи.

Одним из первых успешных методов по подбору номеров домов помог реализовать алгоритм распознавания изображений. Потом появились более сложные варианты распознавания, которые специализировались на Google Recaptcha. Но и гугл не оставался в стороне, картинки стали подвергаться всевозможным обработкам: размытию, растяжению, искажению.

Взлом Google Recaptcha посредством Google Speech

Как оказалось, самым уязвимым методом, который давал самые хорошие результаты, оказалось распознавание капчи из аудиосигнала, который предлагается как альтернативный вариант прослушать, если не получается пройти по каким либо причинам тест. Получить звуковой файл достаточно просто, необходимо нажать на иконку с наушниками внизу рекапчи и будет предложено голосовое сообщение.

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

Однако и здесь нашлось весьма забавное решение. На помощь специалистам безопасности для взлома Google Recaptcha 2 пришёл … сам гугл! Используя Google API Speech можно было достоверно и точно распознать звуковые уведомления капчи. Уязвимость применили на практике и написали сервис по перенаправлению аудиофайлов в распознавание, а потом подстановка результата в поле формы рекапчи.

И эта дыра была пофикшена и закрыта работниками гугл. Теперь хакерам придеться в очередной раз проявить сноровку и найти новый метод обхода рекапчи. А пока на данный момент это достаточно удобный и стойкий вариант защиты от спама контактных форм. Напрашивается вопрос, а почему несмотря на уловки злоумышленников, на сайтах не последовало волны спама? Ответ достаточно прост: Google разработали достаточно сложную и многоступенчатую защиту, которая может позволить ограничить число обходов.

Таким образом массовая атака будет приостановлена на ранней стадии: к примеру тот же вариант с аудио-сообщением прокатывал не всегда, порой пользователям предлагалось ввести символы вместо прослушивания цифр.

А пока будем ждать новых новостей и новых эксплоитов.

Не так давно Google дополнил функционал капчи ReCaptcha v2 невидимой капчей.
Её образец можно увидеть по ссылке:
https://www.google.com/recaptcha/api2/demo?invisible=true

Теперь пользователю зачастую даже не нужно нажимать галочку “я не робот”, сама капча появляется в невидимом слое, дополнительно смещённым на 10 000 px выше начала страницы и не видна пользователю.  Прохождение капчи запускается только в момент отправки формы. Если куки пользователя хорошие, то он даже не заметит, что капча была. Если куки не очень хорошие, то при отправке формы он тут же получит по центру экрана стандартную рекапчу, где нужно выбрать несколько изображений.

В целом, принцип работы recapthca совершенно не изменился, но некоторые заказчики сервиса rucaptcha.com столкнулись с проблемами. Если в своей работе вы формируете POST-запрос содержащий “g-recaptcha-responce” к сайту, на котором установлена капча, то Вы даже не заметите изминений.

Проблема возникла у тех заказчиков, которые используют движок браузеров для автоматизации каких-либо действий, например silenium.

Что делать, чтобы в браузере можно было пройти Invisible ReCaptcha?
1) Вырежьте из тела документа div, содержащий саму рекапчу:

2) Вырежьте полностью блок <!— BEGIN: ReCAPTCHA implementation example. —>
 

 

3) На место <!— BEGIN: ReCAPTCHA implementation example. —> поставьте следующий код:

В котором %g-recaptcha-response% код, который вы получили от 2captcha.com

4) У вас появится кнопка “Submit Query”, при нажатии на неё вы отправите на сайт, где установлена капча все данные формы и g-recaptcha-response

Вот таким нехитрым образом мы превращаем Invisible ReCaptcha в обычную ReCaptcha V2 и проходим её.

А те разработчики, кто не эмулирует браузер, а сразу шлёт POST-запросы, они даже не заметят, если рекапча поменяется на невидимую

 

 

 

 

Recaptcha — одна из самых удобных капч в интернете. В большинстве CMS есть модули/плагины для ее подключения, но что делать, если у вас самописный сайт или контактные формы сделаны не через движок, а обрабатываются кастомным php-скриптом? Даже в таком варианте можно подключить к нужной форме капчу от гугла.

Речь пойдет об этом http://www.google.com/recaptcha/intro/index.html
Проект на гитхабе https://github.com/google/ReCAPTCHA

Итак, регистрируемся и получаем ключи по первой ссылке.
Идем на свой сайт, перед закрывающим тегом </head> в HTML-коде подключаем скрипт:

<script src=»https://rpilot62.ru/wp-content/uploads/2018/06/25264.jpg»></script>

Дальше, идем в нужную форму и перед сабмитом вставлем код:

<div class=»g-recaptcha» data-sitekey=»0000000000000000000000″></div>

Вместо ноликов вставляем свой ключ (не секретный) из поля Ключ на странице гугла, где вы привязывали капчу к сайту. Должно в итоге быть как-то так:

<head> <script src=»https://rpilot62.ru/wp-content/uploads/2018/06/25264.jpg»></script> <head> <body> <form method=»post» action=»http://domainname.ru/mail.php»> <input type=»text» name=»name» placeholder=»Как вас зовут?»/> <input type=»text» name=»email» placeholder=»Электронная почта»/> <input type=»text» name=»tel» placeholder=»Телефонный номер»/> <textarea name=»comment» cols=»40″ rows=»5″ placeholder=»Расскажите о своём проекте:»> <div class=»g-recaptcha» data-sitekey=»0000000000000000000000″ style=»margin-bottom:1em»;> <input type=»submit» value=»Отправить» class=»rss-button»/> </form> </body>

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

<script src=»https://rpilot62.ru/wp-content/uploads/2018/06/25264.jpg»></script>

Дальше после открывающего тега <?php добавляем следующее, где значение $secret — это ваш секретный ключ из поля Секретный ключ на странице гугла:

if(isset($_POST[‘g-recaptcha-response’]) && $_POST[‘g-recaptcha-response’]) { $secret = ‘0000000000000000000000’; $ip = $_SERVER[‘REMOTE_ADDR’]; $response = $_POST[‘g-recaptcha-response’]; $rsp = file_get_contents(«https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$response&remoteip=$ip»); $arr = json_decode($rsp, TRUE); if($arr[‘success’]){

В данном куске кода мы проверяем, что у нас в g-recaptcha-response, передаем ее содержимое в переменную $response, также записываем IP пользователя в переменную $ip, дальше отправляем эти данные гуглу и получаем ответ. Потом пишем условие if($arr[‘success’]) и дальше уже решаем, что собственно, должна делать форма, если пользователь осилил капчу. В нашем случае, мы получим остальные данные из формы и отправим их письмом:

<?php if(isset($_POST[‘g-recaptcha-response’]) && $_POST[‘g-recaptcha-response’]) { $secret = ‘0000000000000000000000’; $ip = $_SERVER[‘REMOTE_ADDR’]; $response = $_POST[‘g-recaptcha-response’]; $rsp = file_get_contents(«https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$response&remoteip=$ip»); //var_dump($rsp); $arr = json_decode($rsp, TRUE); if($arr[‘success’]){ if (isset($_POST[‘name’])) {$name = $_POST[‘name’];} if (isset($_POST[’email’])) {$email = $_POST[’email’];} if (isset($_POST[‘tel’])) {$tel = $_POST[‘tel’];} if (isset($_POST[‘comment’])) {$comment = $_POST[‘comment’];} $mail_header = «MIME-Version: 1.0\r\n»; $mail_header.= «Content-type: text/html; charset=UTF-8\r\n»; $mail_header.= «From: Any people

Добавить комментарий

Закрыть меню