Jak działa Google reCAPTCHA v2 za kulisami?

303

Ten post dotyczy Google ReCaptcha v2 (nie najnowszej wersji)

Niedawno Google wprowadziło uproszczony system weryfikacji „captcha” ( wideo ), który umożliwia użytkownikom przejście „captcha” przez kliknięcie go.

Ale jak odróżnić bota od osoby jednym kliknięciem?

Zgodnie z tą odpowiedzią (zakładając podobną implementację), na początku „recaptcha” generuje ukryty klucz i dołącza go do ukrytego elementu wejściowego, a także leniwie renderuje pole wyboru (nie rzeczywiste pole wyboru, inputale a div) z tym samym kluczem, który po kliknięciu wysyła żądanie asynchroniczne (XHR) do serwerów zaplecza Google w celu oznaczenia go jako prawidłowego klucza weryfikacyjnego (tj. klucza, który musi zostać zweryfikowany podczas przesyłania formularza).

Ale dlaczego boty nie mogą zautomatyzować tego kliknięcia (przynajmniej boty oparte na przeglądarce)?

Jak to może działać?

everlasto
źródło
1
Prawdopodobnie podobny do sposobu, w jaki wysyłali proste captchas ludziom, a hard captchas do botów
mukunda
1
Zrozumiałem, że tak jest - wciąż istnieje captcha, ale dopóki nie podejmiesz podejrzanych próśb - nigdy nie będziesz musiał jej rozwiązać.
Kelm,
@Louie Co zostało „skradzione”? Ktoś zadał to samo pytanie i umieścił link do tego samego (i jedynego) postu - ale jest on sformułowany nieco inaczej i żadna z odpowiedzi nie jest taka sama. Co więcej, oryginalne pytanie Quora zostało opublikowane 3 grudnia, dzień przed tym pytaniem. Co wydaje się być problemem?
wchargin
10
@CiroSantilli 六四 事件 法轮功 co do cholery? link zniknął
TechLife
14
@TechLife true! Wydaje się, że przeprowadziłeś się na github.com/neuroradiology/InsideReCaptcha ? Przypomnienie dla siebie: zawsze widelec.
Ciro Santilli 10 冠状 病 六四 事件 法轮功

Odpowiedzi:

200

To spekulacje, ale oparte na odwołaniu Google do używanego przez nich „silnika analizy ryzyka” ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html )

Zakładam, że patrzy na to, jak się zachowywałeś przed kliknięciem, jak kursor poruszał się w drodze do sprawdzenia (ścieżka organiczna / przyspieszenie), która część pola wyboru została kliknięta (losowe miejsca lub za każdym razem martwe na środku), przeglądarka odcisk palca, pliki cookie i zawartość Google, kliknij historię lokalizacji powiązaną z Twoim odciskiem palca lub kontem, jeśli je wykryje itp.

Dość trudne jest sfałszowanie „organicznego” zachowania w taki sposób, że oszukałoby to ciągłe uczenie się silnika wykrywania wzorców. W przypadkach, w których nie jest to pewne, nadal monituje o dopasowanie rzeczywistego ciągu CAPTCHA.

AgmLauncher
źródło
73
To wydaje się słuszne i powinno wyjaśniać, dlaczego zawsze muszę pisać ciąg na PSVita za pomocą pałeczek. Nie porusza się jak zwykła mysz.
Domino,
3
Zastanawiam się, jak Google zareagowałby na wystarczająco dużą liczbę zarejestrowanych zachowań organicznych.
Markus Malkusch
16
Ruch myszy zdecydowanie nie przyczynia się do tego. Umieść kursor w miejscu, w którym pojawi się pole wyboru. Przejdź do witryny bez poruszania kursorem. Kliknij pole wyboru, a przejdzie.
Derek 朕 會 功夫
3
@Derek, nie sądzę, że to dowód na coś. Pliki cookie, adres IP i wiele innych czynników mogą pomóc Ci przejść, zanim powrócą do ruchu myszy. Nie mam ochoty go testować, ale jeśli chcesz odpalić nowy komputer ze świeżego adresu IP i w ogóle nie używać myszy, jestem skłonny się założyć, że to się nie powiedzie.
Caimen
13
Pamiętaj, że możesz także przejść do niego tabulatorem i nacisnąć spację.
JSideris,
74

Wydano nowy artykuł z kilkoma testami przeciwko reCAPTCHA:

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

Niektóre najważniejsze:

  • Utrzymując plik cookie aktywny przez +9 dni (przeglądając strony z zasobami Google), możesz następnie przekazać reCAPTCHA, klikając tylko pole wyboru;
  • Nie ma żadnych ograniczeń opartych na żądaniach według adresu IP;
  • Klient użytkownika przeglądarki musi być prawdziwy, a Google przeprowadza testy w środowisku, aby upewnić się, że odpowiada klientowi użytkownika;
  • Google sprawdza, czy przeglądarka może renderować płótno;
  • Rozdzielczość ekranu i zdarzenia myszy nie wpływają na wyniki;

Google naprawiło już lukę w zabezpieczeniach plików cookie i prawdopodobnie ogranicza niektóre zachowania oparte na adresach IP.

Innym interesującym odkryciem jest to, że Google uruchamia maszynę wirtualną w JavaScript, która zaciemnia znaczną część kodu i zachowania reCAPTCHA. Ta maszyna wirtualna jest znana jako botguard i służy do ochrony innych usług oprócz reCAPTCHA:

https://github.com/neuroradiology/InsideReCaptcha

AKTUALIZACJA 2017

Niedawny artykuł (z sierpnia) został opublikowany na WOOT 2017, osiągając 85% dokładności w rozwiązywaniu problemów dźwiękowych noCAPTCHA reCAPTCHA:

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

AKTUALIZACJA 2018

Google wprowadza reCAPTCHA v3, który wygląda jak „silnik przewidywania wyników ludzkich”, który jest skalibrowany dla poszczególnych witryn. Można go zainstalować na różnych stronach witryny (działającej jak skrypt Google Analytics), aby pomóc reCAPTCHA i właścicielowi strony zrozumieć zachowania ludzi względem botów przed wypełnieniem reCAPTCHA.

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

Barbolo
źródło
4
mouse events don't affect the resultsTo ciekawe, ponieważ ja (i uważam, że wielu innych) uważałem, że to główna rzecz, która wpłynęła na wyniki. Myślałem na telefonie komórkowym zamiast pola wyboru, użytkownicy zostali poproszeni o wybranie wszystkich podobnych obrazów, ponieważ nie ma ruchów myszy na ekranie dotykowym. Jednak patrząc ponownie na wstępny post na blogu, wydaje się, że tak nie jest. Być może wybieranie obrazów polega na wpisywaniu zniekształconego tekstu, a nie na zaznaczaniu pola. Czy ty (lub ktokolwiek) wiesz, czy reCAPTCHA kiedykolwiek pozwala po prostu zaznaczyć pole na telefonie komórkowym?
Nateowami,
Zdarzenia myszy mają wpływ na wyniki. Jeśli naciśniesz Tabi, Enteraby zaznaczyć pole wyboru, wyświetli się captcha obrazów, abyś mógł je wybrać na podstawie kryterium.
mbomb007,
1
@ mbomb007 Zdarzenia myszy mogą wpływać na wyniki, ale naciśnięcie Tabi Enternie będzie wyświetlać captcha obrazu przez cały czas. Większość czasu naciska Tabi Enterjest akceptowana
Manish Ojha
24

Moje boty działają dobrze przeciwko ReCaptcha.

Oto moje rozwiązanie.

Pozwól botowi wykonać następujące kroki:

Najpierw napisz funkcję Move Mysz, aby poruszać myszą jak B-splajn (Zapytaj mnie o kod źródłowy). To jest najważniejszy punkt.

Użyj również, aby uzyskać lepsze wyniki VPN, np. Https://www.purevpn.com

Dla każdego Recpatcha wykonaj następujące kroki:

  1. Jeśli używasz VPN najpierw przełącz IP

  2. Wyczyść wszystkie pliki cookie przeglądarki

  3. Wyczyść całą pamięć podręczną przeglądarki

  4. Ustaw jeden z tych Useragents losowo:

    za. Mozilla / 5.0 (kompatybilny; MSIE 9.0; Windows NT 6.1; Trident / 5.0)

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

5 Przenieś swoją mysz ludzką myszką Przenieś funkcję z RandomPoint do Nie jestem obrazem robota za każdym razem z innym 10x10 Losowo

  1. Następnie kliknij kiedykolwiek z losowym opóźnieniem między

    WM_LBUTTONDOWN

    i

    WM_LBUTTONUP

  2. Wykonaj zrzut ekranu z obrazu Captcha

  3. Wyślij zrzut ekranu do

    http://www.deathbycaptcha.com

    lub

    https://2captcha.com

i niech rozwiązują.

  1. Po otrzymaniu współrzędnych kliknięć z solvera captcha, przesuń Funktion Ludzką Myszą, aby się poruszać i kliknij Recaptcha Images

  2. Użyj swojej Ruchu Ludzkiej Myszy, aby się poruszać i kliknij przycisk Weryfikuj Recaptcha

W 75% wszystkie próby Recaptcha zostaną rozwiązane

Chears Google

Tomek

Ingo
źródło
2
Dlaczego potrzebujesz „funkcji poruszania myszą ludzką”? Osiągnięcie celu wydaje się niepotrzebne.
barbolo
9
Najważniejszym punktem jest „Ludzki ruch myszy”. Google wykrywa wewnątrz captcha Prędkość myszy, MouseWay, MouseButton w dół i w górę Zdarzenia, Clickpozycje, Mouse EntryPoint do captcha ... i wysyłaj te informacje za pomocą Javascript do bazy danych Google z milionami prawdziwych śledzeń Human Mousemove. Po zinterpretowaniu wszystkich tych przechwyconych informacji Captcha oznaczy als rozwiązane, tylko jeśli algorytm google mówi, że był to człowiek.
Ingo
3
@ barbolo: Sprawdź ten oficjalny blog Google security.googleblog.com/2014/12/… -> Google mówi: „Aby temu przeciwdziałać, w ubiegłym roku opracowaliśmy backend zaawansowanej analizy ryzyka dla reCAPTCHA, który aktywnie bierze pod uwagę całe zaangażowanie użytkownika w CAPTCHA - przed, w trakcie i po - w celu ustalenia, czy ten użytkownik jest człowiekiem. ”
Ingo
6
Krok 8 wykorzystuje zewnętrzny interfejs API, w którym ludzie rozwiązują captcha za Ciebie. Bot niczego nie rozwiązuje.
Andrea Lazzarotto
14
Czy to tylko ja, czy jest to niepokojące i fascynujące dla kogokolwiek innego, że twórcy botów używają Stack Overflow, aby pomóc w rozwiązaniu (i debacie na temat!) ReCAPTCHA?
Ogre Psalm33,
3

Chciałbym przedstawić moje przypuszczenie, ponieważ nie jest to otwarta technologia.

Google mówi, że chodzi o przeczesywanie informacji sprzed, w trakcie i po, aby odróżnić człowieka od robota. Ale bardziej interesuje mnie to ostatnie kliknięcie pola wyboru.

Powiedzmy, że dane POST (rozwiązany CAPTCHA) mają pole o nazwie odcisk palca, ciąg obliczony na podstawie zachowania użytkownika. Myślę, że może istnieć pole dotyczące tego pola wyboru. Wydaje mi się, że to pole wyboru znajduje się w układzie współrzędnych generowanych losowo przez zaplecze Google i szyfrowanych kluczem publicznym mojej witryny. Tak więc robot może „odgadnąć / obliczyć” lokalizację tego pola, ale gdy właściciel witryny wykona zapytanie GET kluczem prywatnym w celu zweryfikowania tożsamości użytkownika, Google odszyfruje układ współrzędnych i powie, czy użytkownik kliknie właściwe miejsce. Tak więc tylko jedno możliwe kliknięcie prawym przyciskiem myszy (z pewnymi przesunięciami, jest to kwadratowe pole) w tym losowym układzie współrzędnych, którego właścicielem są tylko Google i właściciele witryn.

hakunami
źródło
Jeśli przeglądarka jest wystarczająco dobra, aby faktycznie pokazać pole i wykryć kliknięcia, to dlaczego robot hakerski nie byłby w stanie zrobić tego samego? Mógłbym jednak ustawić pozycję pola wyboru na bardzo dokładną pozycję (w ułamkach dziesiętnych), więc jeśli kliknięcie zostanie wykryte z tymi samymi miejscami dziesiętnymi, oznacza to, że jest to robot, który nie zawracał sobie głowy dodawaniem losowych miejsc dziesiętnych do położenia kliknięcia. Ale znowu, to nie jest niezawodne.
Domino,
Google podobno używa algorytmu „uczenia się”, więc jeśli niektórzy klienci o tych samych cechach wydają się podążać tą samą ogólną ścieżką i ogólnym czasem, aby się tam dostać i dzieje się to 100 000 razy dziennie, prawdopodobnie nie są legalni.
Syreny
1
Symulacja kliknięcia w kwadratowym obszarze powinna być stosunkowo łatwa. Nie ma znaczenia, w jaki sposób Google szyfruje dane przed wysłaniem.
Eugene C
0

Pamiętaj, że Google używa również reCaptcha razem z

Canvas fingerprinting 

aby jednoznacznie rozpoznać użytkownika / przeglądarki bez plików cookie!

Ingo
źródło