Jak roboty mogą pokonać CAPTCHA?

84

Mam formularz e-mail strony internetowej. Używam niestandardowego CAPTCHA, aby zapobiec spamowi robotów. Mimo to nadal otrzymuję spam.

Dlaczego? W jaki sposób roboty pokonują CAPTCHA? Czy używają jakiegoś zaawansowanego OCR, czy po prostu szukają rozwiązania z miejsca, w którym są przechowywane?

Jak mogę temu zapobiec? Czy powinienem przejść na inny rodzaj CAPTCHA?


Jestem pewien, że wiadomości e-mail pochodzą z formularza, ponieważ są wysyłane od mojego nadawcy wiadomości e-mail, który obsługuje wiadomości z formularza. Również styl litery jest taki sam.

Dla przypomnienia używam PHP + MySQL, ale nie szukam rozwiązania tego problemu. Byłem zainteresowany ogólną sytuacją, w której roboty pokonały te technologie. Właśnie podałem tę sytuację jako przykład, abyś mógł lepiej zrozumieć, o co pytam.

totymedli
źródło
86
Chcę odeprzeć twoje pytanie: w jaki sposób ludzie mogą pokonać CAPTCHA: częściej niż nie trzeba wiele razy, aby przejść przez to wiele razy.
Pieter B
14
Jeśli ktoś uważa, że ​​to pytanie zasługuje na opinię, przynajmniej wyjaśnij mi dlaczego.
totymedli
10
@Blrfl, nie rozumiem, jak to jest nie na temat.
47
Jeśli chcesz, abyśmy odpowiedzieli na twoje pytanie, najpierw udowodnij, że nie jesteś robotem.
Pete Kirkham
7
@Blrfl Ma to jednak wszystko wspólnego z tworzeniem wysokiej jakości oprogramowania.
Izkata,

Odpowiedzi:

72

Dwa najprostsze sposoby na przejście przez CAPTCHA:

  • Używaj ludzkich farm, tzn. Poproś ludzi o wypełnienie CAPTCHA dla pieniędzy, tak jak robi to ProTypers .

  • Użyj OCR.

Może również występować błąd w samym mechanizmie CAPTCHA lub w otaczającej aplikacji, pozwalając komuś ominąć CAPTCHA.

Nawiasem mówiąc, artykuł W3C „Niedostępność CAPTCHA: alternatywy dla wizualnych testów Turinga w Internecie” wyjaśnia również, w jaki sposób można zagrozić CAPTCHA:

[...] Jednym z pierwszych udokumentowanych ataków na system był uczeń Carnegie Mellon, który powiązał obrazy CAPTCHA z dostępem do strony dla dorosłych, zyskując w ten sposób darmową pracę ludzką w celu złamania uwierzytelnienia. [...]

Projekty zewnętrzne [...] wykazały metodologie i wyniki wskazujące, że wiele systemów może zostać pokonanych przez komputery o dokładności od 88% do 100% przy użyciu optycznego rozpoznawania znaków.

Jak więc zapobiec tym atakom?

  • Jeśli masz niestandardową implementację CAPTCHA, możesz spróbować przejść do popularnej, takiej jak reCAPTCHA .

    Pomoże to, jeśli albo Twoja własna CAPTCHA była zbyt łatwa do rozpoznania, lub jeśli wystąpił błąd, który został pomyślnie wykorzystany.

  • Jeśli korzystasz z popularnego mechanizmu CAPTCHA, przejście na niestandardowy lub inny popularny może zapobiec OCR.

Technicznie nic nie stoi na przeszkodzie, aby farmy ludzkie: można tworzyć animowane pliki GIF, w których kilka ramek bardzo szybko wyświetla inny tekst, a użytkownik widzi tylko jedną ramkę, można zniekształcić lub wygiąć tekst we wszystkich kierunkach lub znaleźć nowe, alternatywne sposoby zapobiegania OCR z rozpoznawania tekstu, wciąż ludzie opłacani za rozwiązanie CAPTCHA, z powodzeniem je rozwiążą.

Możesz przejść od Visual CAPTCHA do dźwięku (jeśli nie używasz już obu, i powinieneś), ale oznacza to, że użytkownicy z zaburzeniami słuchu nie będą mogli korzystać z Twojej aplikacji.


FrustratedWithFormsDesigner i GalacticCowboy wspomniane w komentarzach CAPTCHA specyficznych dla domeny. Próbowałem znaleźć jakiś materiał na temat ich skuteczności, ale bez powodzenia, więc oto moja osobista opinia:

  1. CAPTCHA specyficzne dla domeny mogą być bardzo denerwujące, gdy faktyczni użytkownicy nie mają pojęcia o odpowiedzi.

    Przykład: odwiedzam stronę w witrynie z filmami. Zauważyłem błąd w artykule i chcę go skomentować, aby powiadomić autora o pomyłce. Formularz komentarzy prosi mnie, jako mechanizm CAPTCHA, o podanie nazwy aktorki wyświetlanej na zdjęciu. Nie mam pojęcia, kim jest ta aktorka, więc jedyne, co mogę zrobić, to opuścić stronę internetową (lub spędzić następne dwie minuty, używając obrazów Google).

    Kolejny przykład: strona internetowa prosi o podanie synonimu „tajemniczy”. To proste, jak się wydaje, dla osoby bez wad, która mówi płynnie po angielsku, nie byłoby możliwe rozwiązanie bez pomocy zewnętrznej dla osób, które nie mówią dobrze po angielsku lub osób z pewnymi zaburzeniami rozwojowymi, nie licząc faktu, że znalezienie synonimów lub antonimów jest zawsze trudne.

  2. Większość problemów specyficznych dla domeny można rozwiązać programowo. Oba podane przeze mnie przykłady można łatwo rozwiązać za pomocą zasobów zewnętrznych (Google Images i synonim Dictionary). Ten o tranzystorach podany jako przykład przez FrustratedWithFormsDesigner jest lepszy, ale nadal prawdopodobnie można go rozwiązać za pomocą niestandardowego bota.

  3. Żadne nie jest odporne na ludzkie farmy.

  4. Albo generują dane, tak jak zwykły tekst CAPTCHA rysują zniekształcone znaki, w takim przypadku algorytm generowania może zostać wykorzystany do dostrojenia botów, lub znajdują dane gdzieś, podobnie jak reCAPTCHA pobiera tekst ze zeskanowanych książek , w którym to przypadku bot może użyj przeciwko nim tych danych (na przykład, jeśli pobierzesz słowa ze słownika, prosząc użytkownika o podanie synonimów, bot może użyć tego samego słownika, aby odnieść 100% sukcesu).

Arseni Mourzenko
źródło
4
+1 za zauważenie, że nie ma gwarancji, że CAPTCHA będzie działać
Neil
8
Widziałem kilka nowych captcha, które są bardzo specyficzne dla domeny. Jeden z nich wyświetlał obrazy rezystorów, a użytkownik musiał wprowadzić rezystancję (był link do strony pomocy dla osób, które nie umiały czytać pasm kolorów rezystora). Inny miał obraz małego fragmentu notacji muzycznej, a użytkownik musiał wprowadzić pewne nuty (np. „Nuty tylko w drugim akordie”). Nadal są grywalne, ale koszt dla spamerów może nie być tego wart.
FrustratedWithFormsDesigner
2
@MainMa był post w raporcie technologicznym o kimś, kto zaprojektował bota, który niezwykle szybko pokonał captchas, ponieważ ignorował wizualne i zamiast tego interpretuje sygnały dźwiękowe, więc musiałbyś dodać statyczny do audio, co czyni go jeszcze trudniejszym dla użytkowników
RhysW
@RhysW: artykuł W3C, o którym wspomniałem, wspomina również, że przejście od obrazu do dźwięku nie rozwiązuje problemu bota, a nawet może ułatwić robotom.
Arseni Mourzenko
24
Farmy ludzkie. Dlaczego wyobrażam sobie Matrycę?
LarsTech,
37

Dodanie do odpowiedzi MainMa ...

Spamerzy nakłaniają innych do zrobienia dla nich CAPTCHA

Zasadniczo spamerzy zakładają witrynę Warez lub stronę pornograficzną, która wydaje się mieć na sobie CAPTCHA, ale nie jest to prawdziwa CAPTCHA. Bot pobiera CAPTCHA ze strony, którą chce spamować (lub w inny sposób wykorzystywać), a następnie wyświetla go na stronie Warez lub stronie pornograficznej, gdzie ktoś go dla niego wypełnia. Następnie wartość CAPTCHA jest przekazywana z powrotem do ich bota ...

Trochę więcej na temat spamerów

Używam reCAPTCHA i przekonałem się, że jest to w zasadzie bezwartościowe. Używam również niestandardowego filtru spamu, który przechwytuje spam, który przeszedł przez reCAPTCHA, i muszę go sprawdzać co kilka dni pod kątem fałszywych wyników pozytywnych.

Moje forum jest również napisane na zamówienie i ma bardzo mały ruch. Nie sądzę, aby ktoś zakodował konkretny atak na moją stronę. Mimo to mój filtr antyspamowy wyłapuje 2 000 wiadomości spamowych dziennie! Żadne z nich nie są nigdy wyświetlane na stronie. Spamerzy nie czerpią korzyści ze spamowania, ale nadal tak robią.

Widzę wzorce w próbach spamowania, ponieważ rejestruję to wszystko. Mogę ci powiedzieć: odkładając na bok, jak omijają CAPTCHA, spamerzy wyraźnie wykorzystują technikę brutalnej siły, zmieniając wypełnione pola oraz rodzaj mieszania danych i słów wypełniających te pola. Najwyraźniej robią to tak tanio (w tym omijając CAPTCHA), że nawet nie opłaca się analizować poszczególnych witryn, aby sprawdzić, czy to, co robią, działa, czy nie.

Z roku na rok nadal celują w moją witrynę tysiącami spamu dziennie, aby dostać jeden do każdego miesiąca, a ten zostaje ręcznie usunięty dzień później. Tak tanie jest spamowanie!

To będzie bitwa przez wiele lat. Szczególnie dla małych jednoosobowych witryn moderacyjnych, takich jak moja.


EDYCJA 22.06.2017 : Chcę dodać, że odkąd ten post google całkowicie przebudował reCAPTCHA i od tego momentu działa bezbłędnie. Chociaż podejrzewam, że jest trochę fałszywych alarmów lub jest to problem dla użytkowników, ponieważ poczta trochę spadła, odkąd go wdrożyłem. Dwie duże zmiany to

1) Używają obrazów zamiast tekstu (więc nie więcej OCR)

2) Łączą to z aktywnością użytkowników we wszystkich witrynach korzystających z reCAPTCHA. Więc jeśli miniesz reCAPTCHA na stronie A, to przejdź do strony B, może nawet nie poprosić cię o udowodnienie, że jesteś człowiekiem! Również (myślę), jeśli trafisz zbyt wiele reCAPTCHA w zbyt wielu witrynach, to również Cię oflaguje. Jestem pewien, że wykorzystuje również inne rodzaje sztucznej inteligencji, zależnie od aktywności użytkowników.

Jestem pewien, że to tylko kwestia czasu, zanim spamerzy też to pokonają ...

Kretynowie
źródło
Jest to prawdopodobnie najsilniejszy argument przemawiający za reCAPTCHA w przypadku małej witryny: Google ma znacznie więcej zasobów, aby nadążyć za obecnymi technikami spamowymi.
Stephen C. Steel
15

Czy kiedykolwiek próbowałeś użyć captcha dla kota? Mam forum, które miało standardową captcha i ją zmieniło i od tego czasu nie mam spamu dla gości.wprowadź opis zdjęcia tutaj

kot-pies-człowiek
źródło
12

Możliwe, że twoja strona jest atakowana przez bardzo tanią siłę roboczą i że człowiek ręcznie wpisuje twoje frazy CAPTCHA.

Jeśli rozwiązanie, którego używasz, nie jest zbyt skomplikowane, możliwe, że twój atakujący rozpoznaje obraz.

Istnieje również możliwość, że masz gdzieś w kodzie błąd, który pozwala na ominięcie CAPTCHA.

Nie zakładaj, że robot bije CAPTCHA. Pomyśl o swoim systemie holistycznie i sprawdź, czy nie został naruszony.

Sam
źródło
Połączyłbym obrazy i schematy CSS, których ludzie nie byliby w stanie łatwo rozwiązać.
Erik Reppen
2
Dwa słowa ... Mechaniczny Turek. Amazon sprawił, że awaria captcha stała się niezwykle tanim przedsięwzięciem.
Michael Brown,
10

Inni dyskutowali, w jaki sposób spamerzy omijają CAPTCHA. Oto kilka wskazówek, jak temu zapobiec :

Uwaga: nie ma srebrnej kuli, a spamerzy wydają się być o 1 krok przed grą. Będziesz musiał użyć kombinacji wielu technik

  1. Użyj formy garnka miodu
  2. Użyj pytania CAPTCHA lub logicznego. Podstawowe pytania, takie jak „jabłko, ryba, ręka, szóstka - która z nich jest częścią ciała”
  3. Mieć opóźnienie. Jeśli formularz zostanie opublikowany w ciągu 5 sekund od załadowania strony, zignoruj ​​żądanie, większość robotów opublikuje w ciągu mniej niż sekundy
  4. Monitoruj adresy IP - jeśli zauważysz pająka przeszukującego twoją stronę, która nie znajduje się na białej liście (google, bing), następnie umieść na czarnej liście i zablokuj jej adres IP. Najlepiej byłoby, gdyby był to kod dynamiczny / automatyczny w kodzie / oprogramowaniu
Daveo
źródło
6

Aby powtórzyć inne odpowiedzi, prawdopodobnie napotykasz boty, które wykorzystują ludzkie farmy, aby wprowadzić dla nich captchas.

Niedawno omówiłem technikę (i wydałem towarzyszący moduł Drupal), który blokuje roboty spamujące, wymagając JavaScript po stronie klienta. O ile mi wiadomo, działało to ze 100% wydajnością we wszystkich witrynach, które korzystały z tego kodu. Pomysł polega na użyciu AJAX do wygenerowania unikatowego skrótu i ​​przesłania go wraz z innymi danymi formularza, a następnie obliczenia tego samego skrótu na zapleczu po przesłaniu formularza i porównania dwóch wartości.

Pełne szczegóły w moim poście na blogu (przypadkowo, ponieważ wspomniałeś o PHP + MySQL, są to te same technologie, które tam opisano) - Wydanie modułu: Badbot; eliminowanie spamu ...

Jurij Babenko
źródło
1
Będzie to działać, dopóki nie stanie się powszechne, a spamer użyje bezgłowej przeglądarki.
Xavier Combelle
1
Jak korzystanie z bezgłowej przeglądarki coś zmienia?
Tatiana Racheva
-2

Jeśli twoja strona jest na Twitterze, a ktoś celował w nią konkretnie (zamiast bota, który ją znalazł), możesz przestać czytać ...

W przeciwnym razie może nie być warte tego, aby formularz NIE wyglądał jak formularz. 1. Nie posiadaj pól z napisem „e-mail” w typie, nazwie lub symbolu zastępczym, użyj krótkich lub mylących nazw dla wszystkich pól. 2. Nie używaj rzeczywistego elementu formularza HTML i przycisku Prześlij. Zamiast tego użyj AJAX, aby opublikować go po kliknięciu normalnego diva (stylizowanego na przycisk). 3. Nie umieszczaj zdarzenia onclick w html, dodaj detektor w JavaScript. 4. Użyj JavaScript, aby wypełnić wszystkie wskazówki „wpisz tutaj swój adres e-mail”, ponieważ możliwe jest, że boty faktycznie nie będą wywoływały JS podczas trałowania stron (nie jestem pewien w tej sprawie, ale i tak to robię).

David Gilbertson
źródło