Das CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) wurde ursprünglich entwickelt, um zu verhindern, dass Bots, Malware und künstliche Intelligenz (KI) mit einer Webseite interagieren. In den 90er Jahren bedeutete dies, Spam-Bots zu verhindern. Heutzutage verwenden Organisationen CAPTCHA, um bösartigere automatisierte Angriffe wie Credential Stuffing zu verhindern.
Doch fast unmittelbar nach der Einführung von CAPTCHA entwickelten Cyberkriminelle wirksame Methoden, um es zu umgehen. Die Guten reagierten mit „gehärteten“ CAPTCHAs, aber das Ergebnis bleibt dasselbe: Der Test, der die Automatisierung stoppen soll, wird durch Automatisierung umgangen.
Es gibt mehrere Möglichkeiten, CAPTCHA zu umgehen. Eine gängige Methode ist die Verwendung eines CAPTCHA-Lösungsdienstes, der kostengünstige menschliche Arbeitskräfte in Entwicklungsländern zum Lösen von CAPTCHA-Bildern einsetzt. Cyberkriminelle abonnieren einen Dienst für CAPTCHA-Lösungen, die sich über APIs in ihre Automatisierungstools einbinden und die Antworten auf der Zielwebsite anzeigen. Diese zwielichtigen Unternehmen sind so allgegenwärtig, dass viele davon mit einer schnellen Google-Suche gefunden werden können, darunter:
In diesem Artikel wird 2Captcha verwendet, um zu demonstrieren, wie Angreifer die Lösung integrieren, um Credential-Stuffing-Angriffe zu orchestrieren.
Beim Zugriff auf die Site 2Captcha.com wird der Betrachter mit dem folgenden Bild begrüßt und gefragt, ob der Besucher 1) für 2Captcha arbeiten oder 2) 2Captcha als Dienstleistung kaufen möchte.
Um für 2Captcha zu arbeiten, registrieren Sie sich einfach für ein Konto und geben Sie eine E-Mail-Adresse und ein PayPal-Konto für die Zahlungseinreichung an. Bei einem Test wurde ein Konto innerhalb weniger Minuten validiert.
Neue Mitarbeiter müssen an einem einmaligen Schulungskurs teilnehmen, in dem ihnen das schnelle Lösen von CAPTCHAs beigebracht wird. Außerdem erhalten Sie Tipps, wann die Groß- und Kleinschreibung eine Rolle spielt und wann nicht. Nachdem der Arbeitnehmer die Schulung mit ausreichender Genauigkeit abgeschlossen hat, kann er mit dem Geldverdienen beginnen.
Nachdem der Mitarbeiter „Arbeit beginnen“ ausgewählt hat, gelangt er zum oben abgebildeten Arbeitsbereichsbildschirm. Dem Mitarbeiter wird dann ein CAPTCHA vorgelegt und er wird aufgefordert, eine Lösung einzureichen. Nach der korrekten Lösung wird das Geld in eine elektronische „Geldbörse“ eingezahlt und der Mitarbeiter kann jederzeit die Auszahlung anfordern. Die Anzahl der im Arbeitsbereich angezeigten CAPTCHAs nimmt scheinbar kein Ende, was auf eine stetige Nachfrage nach diesem Dienst schließen lässt.
2Captcha-Mitarbeiter werden dazu motiviert, korrekte Lösungen einzureichen, ähnlich wie ein Uber-Fahrer dazu motiviert wird, hervorragenden Service zu bieten – Kundenbewertungen. 2Captcha-Kunden bewerten die Genauigkeit der erhaltenen CAPTCHA-Lösungen. Wenn die Bewertung eines 2Captcha-Mitarbeiters unter einen bestimmten Schwellenwert fällt, wird er von der Plattform geworfen. Umgekehrt werden Arbeiter mit den höchsten Bewertungen in Zeiten geringer Nachfrage belohnt, indem sie bei der CAPTCHA-Verteilung bevorzugt werden.
Um 2Captcha als Dienst zu nutzen, integriert ein Kunde (d. h. ein Angreifer) die 2Captcha-API in seinen Angriff, um eine digitale Lieferkette zu erstellen, die automatisch CAPTCHA-Rätsel von der Zielsite einspeist und Lösungen zum Eingeben in die Zielsite erhält.
2Captcha bietet hilfreiche Beispielskripte zum Generieren von API-Aufrufen in verschiedenen Programmiersprachen, darunter C#, JavaScript, PHP, Python und mehr. Der in Python geschriebene Beispielcode wurde unten wiedergegeben:
Wie würde ein Angreifer 2Captcha bei einem Credential-Stuffing-Angriff verwenden? Das folgende Diagramm zeigt, wie die verschiedenen Entitäten in einem CAPTCHA-Umgehungsprozess interagieren:
In Kombination mit Webtest-Frameworks wie Selenium oder PhantomJS kann ein Angreifer den Anschein erwecken, als würde er auf menschliche Art mit der Zielwebsite interagieren. So kann er viele vorhandene Sicherheitsmaßnahmen effektiv umgehen und einen Credential-Stuffing-Angriff starten.
Wie sieht das finanzielle Ökosystem mit einer solch eleganten Lösung aus und wie verdienen die einzelnen Parteien ihr Geld?
Die Arbeit als CAPTCHA-Löser ist alles andere als lukrativ. Basierend auf den auf der Website von 2Captcha bereitgestellten Metriken ist es möglich, die folgende Auszahlung zu berechnen:
Angenommen, jedes CAPTCHA dauert 6 Sekunden, dann kann ein Mitarbeiter 10 CAPTCHAs pro Minute oder 600 CAPTCHAs pro Stunde übermitteln. An einem 8-Stunden-Tag sind das 4800 CAPTCHAs. Basierend auf dem, was während unseres Testzeitraums als Mitarbeiter für 2Captcha verdient wurde (ungefähr 0,0004 $ pro Lösung), entspricht dies 1,92 $ pro Tag.
Für Einzelpersonen in Industrieländern ist das reine Zeitverschwendung, doch wer an einem Ort lebt, wo man mit ein paar Dollar pro Tag relativ weit kommt, für den sind CAPTCHA-Lösungsdienste eine einfache Möglichkeit, Geld zu verdienen.
Der Angreifer bezahlt den Drittanbieter 2Captcha für CAPTCHA-Lösungen in Paketen zu 1000 Stück. Angreifer bieten auf die Lösungen und zahlen zwischen 1 und 5 US-Dollar pro Paket.
Viele Angreifer nutzen CAPTCHA-Lösungsdienste als Komponente eines größeren Credential-Stuffing-Angriffs, was den Aufwand rechtfertigt. Angenommen, ein Angreifer startet einen Angriff, um eine Million Anmeldeinformationen von Pastebin auf einer Zielsite zu testen. In diesem Szenario muss der Angreifer mit jedem Satz an Anmeldeinformationen ein CAPTCHA umgehen, was ungefähr 1.000 $ kosten würde. Bei einer angenommenen Wiederverwendungsrate von 1,5 % kann der Angreifer über 15.000 Konten übernehmen, die alle monetarisiert werden können.
2Captcha erhält vom Angreifer eine Zahlung pro 1000 CAPTCHA. Wie oben erwähnt, zahlen Kunden (d. h. Angreifer) zwischen 1 und 5 US-Dollar pro 1000 CAPTCHAs. Dienste wie 2Captcha behalten dann einen Teil des Gebotspreises ein und verteilen den Rest an ihre menschlichen Arbeitskräfte. Da CAPTCHA-Lösungsdienste in großem Umfang als Lösung genutzt werden, summieren sich die Gewinne gut. Auch wenn 2Captcha nur 1 US-Dollar pro 1.000 gelöste CAPTCHAs erhält, verdient es mindestens 60 Cent pro Paket. Die Eigentümer dieser Websites befinden sich häufig selbst in Entwicklungsländern, sodass die scheinbar geringen Einnahmen beträchtlich sind.
Im März dieses Jahres veröffentlichte Google eine verbesserte Version seines reCAPTCHA namens „Invisible reCAPTCHA“. Anders als bei „Recaptcha-frei“, bei dem alle Benutzer auf die berüchtigte Schaltfläche „Ich bin kein Roboter“ klicken mussten, lässt Invisible reCAPTCHA bekannte menschliche Benutzer durch, während verdächtigen Benutzern lediglich eine reCAPTCHA-Bildaufforderung angezeigt wird.
Man könnte meinen, dass dies Angreifer verwirren würde, weil sie nicht sehen könnten, wann sie getestet werden. Doch nur einen Tag nachdem Google Invisible reCAPTCHA eingeführt hatte, schrieb 2CAPTCHA einen Blog-Beitrag darüber, wie man es überwinden kann.
Dass es sich bei einem Nutzer um einen Menschen handelt, erkennt Google daran, dass der Nutzer die angeforderte Seite zuvor bereits besucht hat. Dies stellt Google durch die Überprüfung der Cookies des Browsers fest. Wenn derselbe Nutzer ein neues Gerät verwendet oder vor Kurzem seinen Cache geleert hat, verfügt Google nicht über diese Informationen und ist gezwungen, eine reCAPTCHA-Herausforderung auszugeben.
Damit ein Angreifer einen Credential-Stuffing-Angriff mit 2Captcha automatisieren kann, muss er eine CAPTCHA-Herausforderung garantieren. Eine Möglichkeit, Invisible reCAPTCHA zu umgehen, besteht darin, dem Angriffsskript eine Codezeile hinzuzufügen, die den Browser bei jeder Anforderung löscht und so eine lösbare reCAPTCHA-Herausforderung garantiert.
Das etwas Knifflige an Invisible reCAPTCHA ist, dass die CAPTCHA-Abfrage versteckt ist, aber es gibt einen Workaround. Das CAPTCHA kann mithilfe des Browsertools „Element untersuchen“ „gefunden“ werden. Der Angreifer kann also einen POST an 2Captcha senden, der einen Parameter enthält, der detailliert angibt, wo sich das versteckte CAPTCHA befindet. Sobald der Angreifer die CAPTCHA-Lösung von 2Captcha erhält, kann Invisible reCAPTCHA auf zwei Arten automatisiert besiegt werden:
Die Tatsache, dass Invisible reCAPTCHA umgangen werden kann, liegt nicht daran, dass es im Design des neueren CAPTCHA einen fatalen Fehler gäbe. Das liegt daran, dass jeder umgekehrte Turing-Test grundsätzlich schlagbar ist, wenn die Bedingungen für das Bestehen bekannt sind.
Solange es CAPTCHAs gibt, wird es Dienste wie 2Captcha geben, da die wirtschaftlichen Vorteile den Kriminellen in die Hände spielen. Durch die Ausnutzung kostengünstiger menschlicher Arbeitskraft lassen sich die Geschäftskosten minimieren und Cyberkriminelle können Profite in Millionenhöhe einfahren. Und es wird immer Regionen auf der Welt geben, in denen die Arbeitskosten niedrig sind, sodass die konstante Nachfrage ein konstantes Angebot seitens 2Captcha gewährleistet.
Die Welt muss kein besseres CAPTCHA entwickeln, da dieser gesamte Ansatz grundlegende Einschränkungen hat. Stattdessen sollten wir diese Einschränkungen anerkennen und Abwehrmaßnahmen implementieren, bei denen die Passbedingungen unbekannt oder für Angreifer zumindest schwer zu ermitteln sind.
Holmes, Tamara E. „Statistiken zu Prepaid-Karten und Geschenkkarten.“ CreditCards.com . Creditcards.com, 01. Dezember 2015. Internet.
Jagd, Troja. „CAPTCHA mit automatisierten Menschen knacken.“ Blogbeitrag. Troy-Jagd . Troy Hunt, 22. Januar 2012. Internet.
Motoyama, Marti, Kirill Levchenko, Chris Kanich und Stefan Savage. Re: CAPTCHAs – CAPTCHA-Lösungsdienste im wirtschaftlichen Kontext verstehen . Protokoll des 19. USENIX Security Symposiums, Washington DC. Drucken.