Test CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart), został pierwotnie zaprojektowany, aby zapobiec interakcji botów, złośliwego oprogramowania i sztucznej inteligencji (AI) ze stroną internetową. W latach 90-tych oznaczało to zapobieganie spamowi botów. Obecnie organizacje używają go do zapobiegania bardziej złowrogim zautomatyzowanym atakom, takim jak upychanie danych uwierzytelniających (credential stuffing).
Niemal natychmiast po jego wprowadzeniu cyberprzestępcy opracowali skuteczne metody jego obejścia. Dobrzy ludzie odpowiedzieli „utwardzonymi” s, ale rezultat pozostaje ten sam: test, który próbuje powstrzymać automatyzację jest obchodzony za pomocą automatyzacji.
Istnieje wiele sposobów, na które można go pokonać. Powszechną metodą jest użycie usługi rozwiązywania, która wykorzystuje tanią ludzką siłę roboczą w krajach rozwijających się do rozwiązywania obrazów. Cyberprzestępcy subskrybują usługę dla rozwiązań, które wprowadzają do swoich narzędzi automatyzacji za pośrednictwem interfejsów API, umieszczając odpowiedzi na stronie docelowej. Te podejrzane przedsiębiorstwa są tak wszechobecne, że wiele z nich można znaleźć za pomocą szybkiego wyszukiwania w Google, w tym:
- Deathby
- 2
- Kolotibablo
- ProTypers
- Antigate
W tym artykule wykorzystamy 2, aby zademonstrować, jak atakujący integrują rozwiązanie w celu orkiestracji ataków typu credential stuffing.
2
Po wejściu na stronę 2.com widza wita poniższy obrazek z pytaniem, czy odwiedzający chce 1) pracować dla 2 lub 2) kupić 2 jako usługę.
Opcja 1 – Praca dla 2
Aby pracować dla 2, wystarczy zarejestrować konto, podając adres e-mail i konto PayPal do wpłat. Podczas testu, konto zostało zatwierdzone w ciągu kilku minut.
Nowi pracownicy muszą wziąć udział w jednorazowym szkoleniu, które uczy ich, jak szybko rozwiązać s. Zawiera również wskazówki, takie jak kiedy przypadek ma i nie ma znaczenia. Po ukończeniu szkolenia z wystarczającą dokładnością, pracownik może zacząć zarabiać pieniądze.
Po wybraniu „Rozpocznij pracę”, pracownik zostaje przeniesiony do ekranu obszaru roboczego, który jest przedstawiony powyżej. Pracownik otrzymuje rozwiązanie i jest proszony o jego przesłanie. Po prawidłowym rozwiązaniu, pieniądze są deponowane w elektronicznej „portmonetce”, a pracownik może zażądać wypłaty, kiedy tylko zechce. Liczba s pojawiających się w przestrzeni roboczej wydaje się nie mieć końca, co wskazuje na stały popyt na tę usługę.
2 pracownicy są zachęcani do przesyłania poprawnych rozwiązań, podobnie jak kierowca Ubera jest zachęcany do zapewniania doskonałej obsługi – oceny klientów. Klienci 2 oceniają dokładność rozwiązań, które otrzymali. Jeśli ocena pracownika 2 spadnie poniżej określonego progu, zostanie on wyrzucony z platformy. I odwrotnie, pracownicy z najwyższymi ocenami będą nagradzani w czasach niskiego popytu poprzez otrzymanie pierwszeństwa w dystrybucji.
Opcja 2 – 2 jako usługa
Aby użyć 2 jako usługi, klient (tzn, atakujący) integruje API 2 ze swoim atakiem, aby stworzyć cyfrowy łańcuch dostaw, automatycznie podając zagadki ze strony docelowej i otrzymując rozwiązania do wprowadzenia na stronę docelową.
2 pomocnie dostarcza przykładowe skrypty do generowania wywołań API w różnych językach programowania, w tym C#, JavaScript, PHP, Python i innych. Przykładowy kod napisany w Pythonie został odtworzony poniżej:
Włączenie 2 do zautomatyzowanego ataku
Jak napastnik mógłby wykorzystać 2 w ataku typu credential stuffing? Poniższy diagram pokazuje, jak różne podmioty współdziałają w procesie omijania:
Proces techniczny:
- Attacker żąda źródła iframe i adresu URL użytego do osadzenia obrazu z witryny docelowej i zapisuje je lokalnie
- Attacker żąda tokena API z witryny 2
- Attacker wysyła do usługi 2 za pomocą HTTP POST i otrzymuje ID, które jest numerycznym identyfikatorem przypisanym do obrazu, który został przesłany do 2. ID jest używane w kroku 5 do żądania API GET do 2, aby pobrać rozwiązane .
- 2 przypisuje zadanie do pracownika, który następnie rozwiązuje je i przesyła rozwiązanie do 2.
- Attacker programuje skrypt, aby pingował 2 używając ID (co 5 sekund aż do rozwiązania). 2 następnie wysyła rozwiązane . Jeśli rozwiązanie nadal jest rozwiązywane, atakujący otrzymuje post od 2 wskazujący „_NOT_READY” i program próbuje ponownie 5 sekund później.
- Atakujący wysyła żądanie logowania do strony docelowej z wypełnionymi polami (tj. zestawem danych uwierzytelniających ze skradzionej listy) wraz z rozwiązaniem.
- Atakujący iteruje ten proces z każdym obrazem.
W połączeniu z frameworkami do testowania stron internetowych, takimi jak Selenium lub PhantomJS, atakujący może sprawiać wrażenie, że wchodzi w interakcję z docelową witryną w sposób przypominający ludzki, skutecznie omijając wiele istniejących środków bezpieczeństwa w celu przeprowadzenia ataku typu credential stuffing.
Monetyzacja &Kryminalny ekosystem
Z takim eleganckim rozwiązaniem na miejscu, jak wygląda ekosystem finansowy i jak każda ze stron zarabia pieniądze?
Monetyzacja: solver
Praca jako solver jest daleka od lukratywności. Opierając się na metrykach podanych na stronie 2, można obliczyć następującą wypłatę:
Zakładając, że zajmuje to 6 sekund na , pracownik może przesłać 10 s na minutę lub 600 s na godzinę. W ciągu 8-godzinnego dnia pracy jest to 4800 s. Na podstawie tego, co zostało zarobione podczas naszej próby jako pracownik za 2 (około $0.0004 za rozwiązanie), równa się to $1.92 dziennie.
Jest to strata czasu dla osób w krajach rozwiniętych, ale dla tych, którzy mieszkają w miejscach, gdzie kilka dolarów dziennie może zajść stosunkowo daleko, usługi rozwiązywania są łatwym sposobem na zarabianie pieniędzy.
Monetyzacja: Atakujący
Atakujący płaci stronie trzeciej, 2, za rozwiązania w pakietach po 1000. Atakujący licytują rozwiązania, płacąc od 1 do 5 dolarów za pakiet.
Wielu atakujących korzysta z usług rozwiązywania problemów jako elementu większego ataku typu „credential stuffing”, co usprawiedliwia wydatki. Na przykład, załóżmy, że atakujący przeprowadza atak w celu przetestowania miliona danych uwierzytelniających z Pastebin na stronie docelowej. W tym scenariuszu, atakujący musi obejść jeden z każdego zestawu poświadczeń, co kosztowałoby około 1000 dolarów. Zakładając wskaźnik ponownego użycia poświadczeń na poziomie 1,5%, atakujący może przejąć 15 000 kont, które mogą być spieniężone.
Monetyzacja: 2
2 otrzymuje zapłatę od atakującego na podstawie 1000. Jak wspomniano powyżej, klienci (tj. atakujący) płacą od $1 do $5 za 1000 s. Usługi takie jak 2 biorą wtedy część ceny ofertowej i rozdają resztę swoim pracownikom. Ponieważ usługi rozwiązywania są wykorzystywane jako rozwiązanie na skalę, zyski ładnie się sumują. Nawet jeśli 2 tylko otrzymuje $1 za 1000 s rozwiązany, netto minimum 60 centów za pakiet. Właściciele tych stron są często w krajach rozwijających się sami, więc pozornie niski dochód jest znaczący.
Co z Google’s Invisible re?
W marcu tego roku, Google wydała uaktualnioną wersję swojego re o nazwie „Invisible re.” W przeciwieństwie do „no re”, która wymagała od wszystkich użytkowników kliknięcia niesławnego przycisku „I’m not a Robot”, Invisible re pozwala znanym ludzkim użytkownikom przejść, podczas gdy tylko serwuje wyzwanie w postaci obrazu re dla podejrzanych użytkowników.
Można by pomyśleć, że to powstrzyma atakujących, ponieważ nie będą w stanie zobaczyć, kiedy są testowani. Jednak zaledwie jeden dzień po tym, jak Google wprowadził Invisible re, 2 napisał post na blogu, jak go pokonać.
Sposób, w jaki Google wie, że użytkownik jest człowiekiem jest, jeśli użytkownik wcześniej odwiedził żądaną stronę, którą Google określa poprzez sprawdzenie plików cookie przeglądarki. Jeśli ten sam użytkownik zaczął korzystać z nowego urządzenia lub niedawno wyczyścił pamięć podręczną, Google nie ma tych informacji i jest zmuszony do ponownego wyzwania.
Aby atakujący mógł zautomatyzować atak typu „credential stuffing” przy użyciu 2, musi zagwarantować wyzwanie. Tak więc, jednym ze sposobów na obejście Invisible re jest dodanie linii kodu do skryptu ataku, który czyści przeglądarkę przy każdym żądaniu, gwarantując rozwiązywalne ponowne wyzwanie.
Nieco podstępną rzeczą w Invisible re jest to, że wyzwanie jest ukryte, ale istnieje obejście tego problemu. Można je „znaleźć” za pomocą narzędzia przeglądarki „inspect element”. Tak więc atakujący może wysłać POST do 2, który zawiera parametr szczegółowo określający, gdzie znajduje się ukryty element. Gdy atakujący otrzyma rozwiązanie od 2, Invisible re może zostać pokonany poprzez automatyzację na jeden z dwóch sposobów:
- Akcja JavaScript, która wywołuje funkcję dostarczającą rozwiązany token z formularzem strony submit
- Zmiana kodu HTML bezpośrednio na stronie internetowej w celu zastąpienia fragmentu normalnego kodu rozwiązanym tokenem wejściowym.
Fakt, że Invisible re może być ominięty nie jest dlatego, że istniała fatalna wada w projekcie nowszego . Chodzi o to, że każdy odwrotny test Turinga jest z natury możliwy do pokonania, gdy znane są warunki jego przejścia.
Tak długo jak istnieją s, będą istniały usługi takie jak 2, ponieważ ekonomia tak dobrze gra w ręce przestępców. Wykorzystanie taniej ludzkiej siły roboczej minimalizuje koszty prowadzenia działalności i pozwala cyberprzestępcom na czerpanie zysków, które mogą sięgać milionów dolarów przy dużej skali. A zawsze będą istniały regiony świata z tanimi kosztami pracy, więc stały popyt zapewnia stałą podaż po stronie 2.
Świat nie musi opracowywać lepszego , ponieważ całe to podejście ma fundamentalne ograniczenia. Zamiast tego, powinniśmy uznać te ograniczenia i wdrożyć obronę, w której warunki przejścia są nieznane lub przynajmniej trudne do ustalenia przez atakujących.
Źródła
Holmes, Tamara E. „Prepaid Card and Gift Card Statistics.” CreditCards.com. Creditcards.com, 01 Dec. 2015. Web.
Hunt, Troy. „Breaking with Automated Humans.” Blog post. Troy Hunt. Troy Hunt, 22 Jan. 2012. Web.
Motoyama, Marti, Kirill Levchenko, Chris Kanich, and Stefan Savage. Re: s-Understanding -solving Services in an Economic Context. Proc. of 19th USENIX Security Symposium, Washington DC. Print.
Learn More
Watch the video, „Learn How Cybercriminals Defeat”
.