Wie können Roboter CAPTCHAs schlagen?

84

Ich habe ein Website-E-Mail-Formular. Ich verwende ein benutzerdefiniertes CAPTCHA, um Spam von Robotern zu verhindern. Trotzdem bekomme ich immer noch Spam.

Warum? Wie schlagen Roboter das CAPTCHA? Verwenden sie eine Art fortschrittliche OCR oder beziehen sie die Lösung nur von dem Ort, an dem sie gespeichert ist?

Wie kann ich das verhindern? Sollte ich zu einem anderen CAPTCHA-Typ wechseln?


Ich bin sicher, dass die E-Mails aus dem Formular stammen, da sie von meinem E-Mail-Absender gesendet werden, der die Formularnachrichten versendet. Auch der Buchstabenstil ist der gleiche.

Ich verwende PHP + MySQL, suche aber keine Lösung für dieses Problem. Ich war an der allgemeinen Situation interessiert, wie die Roboter diese Technologien schlagen. Ich habe diese Situation nur als Beispiel genannt, damit Sie besser verstehen können, worum es mir geht.

totymedli
quelle
86
Ich möchte Ihrer Frage entgegentreten: Wie können Menschen CAPTCHA schlagen? Oft brauche ich mehrere, manchmal sehr viele Male, um durchzukommen.
Pieter B
14
Wenn jemand der Meinung ist, dass diese Frage eine Ablehnung verdient, erklären Sie mir zumindest, warum.
Totymedli
10
@Blrfl, ich verstehe nicht, wie das vom Thema abweicht.
47
Wenn Sie möchten, dass wir Ihre Frage beantworten, beweisen Sie zunächst, dass Sie kein Roboter sind.
Pete Kirkham
7
@Blrfl Es hat jedoch alles mit hochwertiger Softwareentwicklung zu tun.
Izkata

Antworten:

72

Zwei einfachste Wege, um durch CAPTCHA zu kommen:

  • Verwenden Sie menschliche Farmen, dh fordern Sie Leute auf, CAPTCHAs gegen Geld auszufüllen, genau wie es ProTypers tut.

  • Verwenden Sie eine Texterkennung.

Möglicherweise liegt auch ein Fehler im CAPTCHA-Mechanismus selbst oder in der umgebenden Anwendung vor, der es jemandem ermöglicht, das CAPTCHA zu umgehen.

Übrigens erklärt der W3C-Artikel Inaccessibility of CAPTCHA: Alternativen zu Visual Turing-Tests im Web auch, wie CAPTCHAs kompromittiert werden könnten:

[...] Einer der ersten dokumentierten Angriffe auf das System war ein Carnegie-Mellon-Student, der CAPTCHA-Bilder mit dem Zugriff auf eine Website für Erwachsene in Verbindung brachte und auf diese Weise freie Arbeitskräfte erhielt, um die Authentifizierung zu knacken. [...]

Externe [...] Projekte haben Methoden und Ergebnisse gezeigt, die darauf hindeuten, dass viele der Systeme mithilfe der optischen Zeichenerkennung mit einer Genauigkeit zwischen 88% und 100% von Computern besiegt werden können.

Wie können Sie diese Angriffe verhindern?

  • Wenn Sie Ihr benutzerdefiniertes CAPTCHA implementiert haben, können Sie versuchen, zu einem populären wie reCAPTCHA zu wechseln .

    Dies hilft, wenn entweder Ihr eigenes CAPTCHA für die Texterkennung zu einfach war oder wenn ein Fehler aufgetreten ist, der erfolgreich ausgenutzt wurde.

  • Wenn Sie einen gängigen CAPTCHA-Mechanismus verwenden, können Sie OCR verhindern, wenn Sie zu einem benutzerdefinierten oder einem anderen gängigen wechseln.

Technisch gesehen würde nichts menschliche Farmen davon abhalten: Sie können animierte GIFs erstellen, in denen mehrere Frames sehr schnell unterschiedlichen Text anzeigen und nur ein Frame für den Benutzer sichtbar ist. Sie können Text in alle Richtungen verzerren oder verbiegen oder neue, alternative Möglichkeiten finden, dies zu verhindern OCRs, die Text erkennen, werden von Menschen, die noch für das Lösen von CAPTCHAs bezahlt wurden, erfolgreich gelöst.

Möglicherweise möchten Sie von Visual CAPTCHA zu Sound wechseln (wenn Sie nicht bereits beides verwenden und dies auch tun sollten). Dies bedeutet jedoch, dass Benutzer mit Hörbehinderung Ihre Anwendung nicht verwenden können.


FrustratedWithFormsDesigner und GalacticCowboy haben in den Kommentaren domänenspezifische CAPTCHAs erwähnt. Ich habe versucht, Material darüber zu finden, wie effektiv diese sind, aber ohne Erfolg. Hier ist nur meine persönliche Meinung:

  1. Domain-spezifische CAPTCHAs können sehr ärgerlich sein, wenn tatsächliche Benutzer keine Ahnung von der Antwort haben.

    Beispiel: Ich besuche eine Seite auf einer filmarientierten Website. Ich stelle einen Fehler in einem Artikel fest und möchte ihn kommentieren, um den Autor über den Fehler zu informieren. In dem Kommentarformular werde ich als CAPTCHAs-Mechanismus aufgefordert, den Namen der Schauspielerin anzugeben, die auf einem Foto angezeigt wird. Ich habe keine Ahnung, wer diese Schauspielerin ist. Das einzige, was ich tun kann, ist, die Website zu verlassen (oder die nächsten zwei Minuten mit Google Images zu verbringen).

    Ein weiteres Beispiel: Eine Website fragt nach einem Synonym für "mysteriös". So einfach es sich für eine nicht eingeschränkte Person anhört, die fließend Englisch spricht, ist es ohne externe Hilfe für Personen, die nicht gut Englisch sprechen oder Menschen mit Entwicklungsstörungen, unmöglich zu lösen immer knifflig.

  2. Die meisten dieser domänenspezifischen Probleme können programmgesteuert gelöst werden. Beide Beispiele, die ich gegeben habe, lassen sich leicht mit externen Ressourcen (Wörterbuch für Google Bilder und Synonyme) lösen. Das Beispiel für Transistoren von FrustratedWithFormsDesigner ist besser, lässt sich aber wahrscheinlich mit einem maßgeschneiderten Bot lösen.

  3. Keiner widersteht menschlichen Farmen.

  4. Entweder generieren sie Daten, genau wie gewöhnlicher Text. CAPTCHAs zeichnen verzerrte Zeichen. In diesem Fall kann der Generierungsalgorithmus selbst zum Optimieren der Bots ausgenutzt werden, oder sie finden Daten irgendwo, genau wie reCAPTCHA Text aus gescannten Büchern entnimmt. In diesem Fall kann der Bot dies Verwenden Sie diese Daten dagegen (wenn Sie beispielsweise Wörter aus einem Wörterbuch entnehmen und den Benutzer um die Angabe von Synonymen bitten, kann der Bot dasselbe Wörterbuch verwenden, um einen 100% igen Erfolg zu erzielen).

Arseni Mourzenko
quelle
4
+1 für die Feststellung, dass es keine CAPTCHA garantiert funktioniert
Neil
8
Ich habe einige neuartige Captchas gesehen, die sehr domänenspezifisch sind. Eines davon zeigte Bilder von Widerständen und der Benutzer musste den Widerstand eingeben (es gab einen Link zu einer Hilfeseite für Leute, die nicht wussten, wie man Widerstandsfarbbänder liest). Ein anderer hatte das Bild eines kleinen Notenausschnitts, und der Benutzer musste bestimmte Noten eingeben (z. B. "Noten nur im zweiten Akkord"). Sie sind immer noch spielbar, aber die Kosten für Spammer sind es möglicherweise nicht wert.
FrustratedWithFormsDesigner
2
@MainMa, irgendwo in einem technischen Bericht gab es einen Beitrag über jemanden, der einen Bot entwickelt hatte, der Captchas bemerkenswert schnell schlug, weil er das Visuelle ignorierte und stattdessen die Audio-Cues damit interpretierte Audio eine, die es für Benutzer sowieso noch schwieriger macht
RhysW
@ RhysW: Der W3C-Artikel, den ich erwähnte, erwähnt auch, dass das Wechseln von Bildern zu Audio das Bot-Problem nicht löst und es für Bots möglicherweise sogar einfacher macht.
Arseni Mourzenko
24
Menschliche Farmen. Warum stelle ich mir die Matrix vor?
LarsTech
37

Zur Antwort von MainMa hinzufügen ...

Spammer verleiten andere dazu, das CAPTCHA für sie zu machen

Grundsätzlich richten Spammer eine Warez-Site oder eine Porno-Site ein, auf der ein CAPTCHA zu sein scheint, aber es ist kein echtes CAPTCHA. Ein Bot zieht das CAPTCHA von der Site, die er als Spam versenden (oder anderweitig ausnutzen) möchte, und zeigt es dann auf der Warez-Site oder einer Porno-Site an, auf der jemand es für sie fertigstellt. Dann wird der CAPTCHA-Wert an ihren Bot zurückgegeben ...

Ein bisschen mehr über Spammer

Ich benutze reCAPTCHA und habe festgestellt, dass es im Grunde genommen wertlos ist. Ich verwende auch einen benutzerdefinierten Spamfilter, der den Spam auffängt, der nach reCAPTCHA eingegangen ist, und ich muss ihn alle paar Tage auf falsch positive Ergebnisse überprüfen.

Mein Forum ist auch alle benutzerdefiniert geschrieben und es wird sehr wenig Verkehr. Ich glaube nicht, dass jemand einen bestimmten Angriff auf meine Website programmiert hat. Trotzdem fängt mein Spam-Filter täglich 2.000 Spam-Nachrichten ab! Keine werden jemals auf der Site angezeigt. Spammer profitieren nicht davon, mich zu spammen, aber sie tun es trotzdem.

Ich kann Muster in den Spam-Versuchen sehen, weil ich alles protokolliere. Ich kann Ihnen Folgendes sagen: Abgesehen davon, wie sie am CAPTCHA vorbeikommen, verwenden Spammer eindeutig eine Brute-Force-Technik, die die ausgefüllten Felder und die Art der Daten- und Wortmischungen variiert, die diese Felder füllen. Anscheinend tun sie dies so billig (einschließlich der Umgehung des CAPTCHA), dass es sich nicht einmal lohnt, eine Analyse der einzelnen Websites durchzuführen, um festzustellen, ob das, was sie tun, funktioniert oder nicht.

Jahr für Jahr wird meine Website weiterhin mit Tausenden von Spam-Nachrichten pro Tag angesteuert, um jeden Monat eine zu erhalten, und diese wird einen Tag später manuell gelöscht. So billig ist Spam!

Dies wird ein Kampf für die kommenden Jahre sein. Besonders für kleine Ein-Mann-Moderatorenseiten wie meine.


BEARBEITUNG 22.06.2017 : Ich möchte hinzufügen, dass Google reCAPTCHA seit diesem Beitrag komplett überarbeitet hat und zum jetzigen Zeitpunkt einwandfrei funktioniert hat. Obwohl ich vermute, dass es ein bisschen falsches Positives gibt oder es ein Schmerz für die Benutzer ist, da der Beitrag ein bisschen zurückgegangen ist, seit ich ihn implementiert habe. Die 2 großen Veränderungen sind

1) Sie verwenden Bilder anstelle von Text (also keine OCR mehr)

2) Sie kombinieren es mit den Benutzeraktivitäten auf allen Websites, die reCAPTCHA verwenden. Wenn Sie also an reCAPTCHA auf Site A vorbeikommen, gehen Sie zu Site B, und Sie werden möglicherweise nicht einmal aufgefordert, zu beweisen, dass Sie ein Mensch sind! Auch (ich denke), wenn Sie zu viele reCAPTCHAs auf zu vielen Websites treffen, werden Sie ebenfalls darauf hingewiesen. Ich bin sicher, dass es auch andere Arten von KI verwendet, basierend auf der Aktivität des Benutzers.

Ich bin sicher, es ist nur eine Frage der Zeit, bis Spammer dies auch schlagen ...

Idioten
quelle
Dies ist wahrscheinlich das stärkste Argument für reCAPTCHA für eine kleine Website: Google verfügt über mehr Ressourcen, um mit den aktuellen Spam-Techniken Schritt zu halten.
Stephen C. Steel
15

Haben Sie schon einmal versucht, Katzenhund-Captcha zu verwenden? Ich habe ein Forum mit Standard-Captcha und habe es geändert. Seitdem habe ich keine Gast-Spam-Mails mehr.Bildbeschreibung hier eingeben

Katze-Hund-Mann
quelle
12

Es ist möglich, dass Ihre Website von einer ausgenutzten, extrem billigen Belegschaft angegriffen wird und ein Mensch Ihre CAPTCHA-Sätze manuell eingibt.

Wenn die von Ihnen verwendete Lösung nicht übermäßig ausgefeilt ist, führt Ihr Angreifer möglicherweise eine Bilderkennung durch.

Es besteht auch die Möglichkeit, dass Ihr Code irgendwo einen Fehler enthält, durch den das CAPTCHA umgangen werden kann.

Gehen Sie nicht davon aus, dass ein Roboter Ihr CAPTCHA schlägt. Denken Sie ganzheitlich an Ihr System und prüfen Sie, ob es kompromittiert wurde.

Sam
quelle
Ich würde Bild- und CSS-Schemata kombinieren, die Menschen nicht so einfach aussortieren könnten.
Erik Reppen
2
Zwei Wörter ... Mechanischer Türke. Amazon hat das Abstürzen von Captcha zu einem unglaublich billigen Unterfangen gemacht.
Michael Brown
10

Andere haben diskutiert, wie Spammer CAPTCHAs umgehen. Hier sind einige Tipps, wie ich dies verhindern kann :

Beachten Sie, dass es keine Silberkugel gibt und Spammer dem Spiel einen Schritt voraus zu sein scheinen. Sie müssen also mehrere Techniken kombinieren

  1. Verwenden Sie eine Honigtopfform
  2. Verwenden Sie eine CAPTCHAs- oder Logikfrage. Grundlegende Fragen wie "Apfel, Fisch, Hand, Sechs - welches davon ist ein Körperteil"
  3. Habe eine Verspätung. Wenn das Formular innerhalb von 5 Sekunden nach dem Laden der Seite gesendet wird, ignorieren Sie die Anforderung, die meisten Roboter senden innerhalb von weniger als einer Sekunde
  4. Lassen Sie die IP-Adresse überwachen - wenn Sie feststellen, dass eine Spinne Ihre Website durchsucht, die nicht auf einer Whitelist (Google, Bing) steht, führen Sie eine Sperrliste durch und sperren Sie die IP-Adresse. Vorzugsweise wäre dies in Code / Software dynamisch / automatisiert
Daveo
quelle
6

Um die anderen Antworten zu wiederholen, treffen Sie wahrscheinlich auf Bots, die menschliche Farmen verwenden, um die Captchas für sie einzugeben.

Ich habe kürzlich eine Technik besprochen (und ein begleitendes Drupal-Modul veröffentlicht), die Spam-Bots blockiert, indem clientseitiges JavaScript benötigt wird. Soweit mir bekannt ist, hat dies auf allen Sites, die diesen Code verwendet haben, mit 100% iger Effizienz funktioniert. Die Idee ist, AJAX zu verwenden, um einen eindeutigen Hash zu generieren und zusammen mit den anderen Formulardaten zu senden, und dann denselben Hash im Backend zu berechnen, sobald das Formular gesendet wurde, und die beiden Werte zu vergleichen.

Vollständige Details in meinem Blog-Beitrag (da Sie zufällig PHP + MySQL erwähnt haben, handelt es sich um dieselben Technologien, die dort beschrieben wurden) - Modul-Release: Badbot; Spam wird beseitigt ...

Yuriy Babenko
quelle
1
Das wird funktionieren, bis es weit verbreitet ist und Spammer einen kopflosen Browser verwenden.
Xavier Combelle
1
Wie ändert die Verwendung eines Headless-Browsers etwas?
Tatiana Racheva
-2

Handelt es sich bei Ihrer Website um Twitter, und jemand hat es gezielt (anstatt dass ein Bot es findet), können Sie aufhören zu lesen ...

Andernfalls könnte es sich lohnen, Ihr Formular NICHT wie ein Formular aussehen zu lassen. 1. Keine Felder mit "E-Mail" in Typ, Name oder Platzhalter, verwenden Sie kurze oder irreführende Namen für alle Felder. 2. Verwenden Sie kein tatsächliches HTML-Formularelement und keine Senden-Schaltfläche. Verwenden Sie lieber AJAX, um es auf das Klicken einer normalen Div zu posten (so gestaltet, dass es wie eine Schaltfläche aussieht). 3. Platzieren Sie das Ereignis onclick nicht in HTML, sondern fügen Sie einen Listener in JavaScript hinzu. 4. Verwenden Sie JavaScript, um alle Tipps auszufüllen: "Geben Sie Ihre E-Mail-Adresse hier ein", da Bots beim Trawlen von Seiten möglicherweise keine JS auslösen (bei diesem nicht sicher, aber ich tue es trotzdem).

David Gilbertson
quelle