Як Google reCAPTCHA v2 працює поза кадром?


303

Ця публікація стосується Google ReCaptcha v2 (не остання версія)

Нещодавно Google представив спрощену систему перевірки "captcha" ( відео ), яка дозволяє користувачам передавати "captcha" лише натисканням на неї.

Але як можна відрізнити бота від людини лише одним клацанням?

Відповідно до цієї відповіді (припускаючи аналогічну реалізацію), спочатку "recaptcha" створює прихований ключ і приєднує його до прихованого вхідного елемента, а також ліниво видає прапорець (не власне прапорець, inputале а div) тим самим ключем, який при натисканні на нього надсилає асинхронний запит (XHR) на сервери резервного сервера Google, щоб позначити його як дійсний ключ підтвердження (тобто ключ, який повинен бути підтверджений при подачі форми).

Але чому боти не можуть автоматизувати цей клік (принаймні, боти на основі браузера)?

Як це може працювати?


1
Ймовірно, подібний до того, як вони надсилали простим капчам люди, а жорсткі - ботам
mukunda

1
Я зрозумів, що це - ще є капча, але якщо ви не зробите підозрілих запитів - вам ніколи не доведеться її вирішувати.
Келм

@Louie Що було "вкрадено"? Хтось задав те саме запитання і пов’язав один і той же (і єдиний) пост, але це написано трохи інакше, і жодна з відповідей не однакова. Більше того, оригінальне запитання Quora було розміщено 3 грудня, за день до цього питання. У чому здається проблема?
wchargin

10
@CiroSantilli 六四 事件 法轮功 що за чорт? посилання
відсутнє

14
@TechLife правда! Здається, перейшли на github.com/neuroradiology/InsideReCaptcha ? Нагадування про себе: завжди надрукуйте речі.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Відповіді:


200

Це міркування, але грунтуючись на посиланні Google на "механізм аналізу ризиків", який вони використовують ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html )

Я б припустив, що це виглядає як ви поводилися до натискання, як ваш курсор переміщався на шляху до чека (органічний шлях / прискорення), яку частину прапорця натискали (випадкові місця чи мертвий у центрі кожного разу), браузер відбиток пальців, файли cookie та вміст Google, натисніть історію місцеположень, пов’язану з вашим відбитком або обліковим записом, якщо він виявляє його тощо

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


73
Це здається правильним і повинно пояснити, чому мені завжди доводиться набирати рядок на моєму PSVita палицями. Він не рухається, як звичайна миша.
Доміно

3
Мені цікаво, як Google відреагує на достатню величезну кількість зареєстрованої органічної поведінки.
Маркус Малкуш

16
Рух миші точно не сприяє цьому. Помістіть курсор прямо на місце, де з’явиться прапорець. Перейдіть на сайт, не переміщуючи курсор. Установіть прапорець і воно пройде.
Дерек 朕 會 功夫

3
@Derek, я не думаю, що це є доказом чого-небудь. Файли cookie, IP та багато інших факторів можуть сприяти тому, щоб ви пройшли, перш ніж вони повернуться до руху миші. Мені не подобається тестувати це, але якби ви запустили свіжий комп’ютер із нового IP-адреси і зовсім не користувалися мишею, я готовий зробити ставку, що це не вдасться.
Каймен

13
Зауважте, що ви також можете перейти на нього та натиснути пробіл.
JSideris

74

Вийшов новий документ з кількома тестами на reCAPTCHA:

https://www.blackhat.com/docs/asia-16/materials/asia-16-Sivakorn-Im-Not-a-Human-Breaking-the-Google-reCAPTCHA-wp.pdf

Деякі основні моменти:

  • Зберігаючи файл cookie активним протягом +9 днів (переглядаючи сайти з ресурсами Google), ви можете передати reCAPTCHA, лише натиснувши прапорець;
  • Немає обмежень на основі запитів на IP;
  • Агент користувача браузера повинен бути справжнім, і Google запускає тести на ваше середовище, щоб переконатися, що він відповідає агенту користувача;
  • Google перевіряє, чи може браузер відображати полотно;
  • Роздільна здатність екрана та події миші не впливають на результати;

Google уже виправив вразливість файлів cookie і, ймовірно, обмежує деякі поведінки на основі IP-адрес.

Ще одне цікаве висновок полягає в тому, що Google запускає VM в JavaScript, що обтяжує велику частину коду і поведінки reCAPTCHA. Цей VM відомий як ботгард і використовується для захисту інших служб, крім reCAPTCHA:

https://github.com/neuroradiology/InsideReCaptcha

ОНОВЛЕННЯ 2017 року

Нещодавній документ (з серпня) був опублікований на WOOT 2017, що досягає 85% точності у вирішенні звукових завдань noCAPTCHA reCAPTCHA:

http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf

ОНОВЛЕННЯ 2018 року

Google представляє reCAPTCHA v3, який виглядає як "двигун прогнозування людської оцінки", який калібрується на веб-сайті. Його можна встановити на різні сторінки веб-сайту (працює як сценарій Google Analytics), щоб допомогти reCAPTCHA та власнику веб-сайту зрозуміти поведінку людей проти ботів перед тим, як заповнити reCAPTCHA.

https://www.google.com/recaptcha/intro/v3beta.html


4
mouse events don't affect the resultsЦе цікаво, оскільки я (і я вважаю, що багато інших) думав, що це головне, що впливає на результати. Я подумав, що на мобільному, замість прапорця, користувачів попросили вибрати всі зображення, які однакові замість них, оскільки на сенсорному екрані немає рухів миші. Однак, переглянувши вступний запис у блозі ще раз, виявляється, що це може бути не так. Можливо, вибір зображень замість того, щоб набрати спотворений текст, а не замість цього встановити прапорець. Ви (чи хтось) знаєте, чи ReCAPTCHA коли-небудь дозволяє просто встановити прапорець на мобільному?
Натеовамі

Події миші впливають на результати. Якщо натиснути Tabта Enterвстановити прапорець, він покаже вам капчу зображень, щоб вибрати їх на основі критерію.
mbomb007

1
@ mbomb007 Події миші можуть вплинути на результати, але натискання Tabі Enterне відображатимуть Captcha зображення весь час. Більшу частину часу натискає Tabі Enterприймається
Маніш Оджа

24

Мої боти добре працюють проти ReCaptcha.

Ось моє рішення.

Дозвольте вашому Боту зробити ці кроки:

Спочатку напишіть функцію переміщення людини миші, щоб перемістити мишу як B-Spline (запитайте мене про вихідний код). Це найважливіший пункт.

Також для кращих результатів використовуйте VPN, наприклад https://www.purevpn.com

Для кожного Recpatcha виконайте ці кроки:

  1. Якщо ви спочатку використовуєте IP-комутатор VPN

  2. Очистити всі файли cookie браузера

  3. Очистити весь кеш браузера

  4. Встановіть один із цих Useragents випадковим чином:

    а. Mozilla / 5.0 (сумісний; MSIE 9.0; Windows NT 6.1; Trident / 5.0)

    б. Mozilla / 5.0 (Windows NT 6.1; WOW64; rv: 44.0) Gecko / 20100101 Firefox / 44.0

5 Перемістіть мишу за допомогою миші людини Перемістіть функцію з RandomPoint у зображення Я не робот кожен раз з різним 10x10 випадковим діапазоном

  1. Потім натисніть будь-коли із випадковою затримкою між

    WM_LBUTTONDOWN

    і

    WM_LBUTTONUP

  2. Візьміть знімок екрана з зображення Captcha

  3. Надіслати знімок екрана на

    http://www.deathbycaptcha.com

    або

    https://2captcha.com

і нехай вони вирішують.

  1. Після отримання кооридинатів клацань від рішення Captcha використовуйте для переміщення функцію Human Mouse Funktion та натисніть Recaptcha Images

  2. Використовуйте функцію "Людина миші" для переміщення та натисніть кнопку підтвердження Recaptcha

У 75% всі спроби Recaptcha вирішені

Подирає Google

Том


2
Навіщо вам потрібна функція "Рух людської миші"? Для досягнення своєї мети виглядає непотрібним.
barbolo

9
Функція «Людська миша» рухається найважливішим моментом. Google виявляє всередині Captcha Mousespeed, MouseWay, MouseButton події вниз і вгору події, Clickpositions, миші EntryPoint в Captcha, ... і надсилає цю інформацію через Javascript в базу даних Google з багатьма мільйонами реальних відстежень людської миші. Після інтерпретації всієї цієї захопленої інформації Captcha буде позначати, що als вирішено, лише якщо алгоритм google каже, що це людина.
Інго

3
@ barbolo: Перевірте цей офіційний блог безпеки Google.googleblog.com/2014/12/… -> Google каже: "Щоб вирішити це, минулого року ми розробили розширений аналіз ризику для reCAPTCHA, який активно розглядає всю взаємодію користувача з CAPTCHA —Поперед, під час та після - щоб визначити, чи є цей користувач людиною. ”
Інго,

6
На кроці 8 використовується зовнішній API, де люди вирішують вам капчу. Бот нічого не вирішує.
Андреа Лацаротто

14
Це тільки я, або це і викликає занепокоєння і захоплююче будь-кого іншого, що письменники-боти використовують Stack Overflow, щоб допомогти вирішити (і дискутувати з приводу!) Рекаптахів?
Псалом Огре3333

3

Чи можу висловити свою здогадку, оскільки це не відкрита технологія.

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

Скажімо, дані POST (вирішено CAPTCHA) мають поле під назвою fingerprint - рядок, обчислений з поведінки користувача. Я думаю, що може бути поле про місце розташування цього прапорця. Я думаю, що цей прапорець знаходиться в системі координат, випадковим чином генерується резервним кодом Google і шифрується відкритим ключем мого сайту. Так, робот може «вгадати / обчислити» місцеположення про це поле, але коли власник сайту робить GET-запит із приватним ключем, щоб перевірити особу користувача, Google розшифрує систему координат і скаже, чи користувач натисне потрібне місце. Отже, лише одна можлива клацання правою кнопкою миші (з деякими зміщеннями, це квадратне поле) у цій випадковій системі координат, яка належить лише власникам Google та власникам сайтів.


Якщо веб-переглядач достатньо хороший, щоб фактично показувати вікно і виявляти кліки, то чому б хакерський робот не зміг би зробити те саме? Однак я міг встановити позицію прапорця на дуже точну позицію (у десятковій частині), тому якщо клацання буде виявлено з тими ж десятковими знаками, це означає, що це робот, який не переймався додаванням випадкових десяткових знаків у позицію клацання. Але знову ж таки, це не дурно.
Доміно

Google нібито використовує алгоритм «навчання», так що якщо деякі клієнти з однаковими характеристиками здаються однаковими загальним шляхом і загальним часом, щоб дістатися туди, і це трапляється 100 000 разів на день, вони, ймовірно, не вважаються законними.
Сирени

1
Слід імітувати клацання в квадратній області порівняно легко. Не має значення, як Google шифрує дані перед надсиланням.
Євген С

0

Пам'ятайте, що Google також використовує reCaptcha разом із

Canvas fingerprinting 

унікально розпізнавати Користувача / Браузери без файлів cookie!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.