Zaufana Trzecia Strona - Jak działają carderzy: fingerprinting – wprowadzenie

Data: 04.11.2019 10:55

Autor: ziemianin

zaufanatrzeciastrona.pl

#codziennaprasowka #ciekawostki #informacje #wiadomosci #antyfingerprinting #fingerprint #profilowanie #bezpieczenstwoit

To pierwszy z trzech artykułów opisujący ciekawy i rzadko tak dogłębnie badany świat osób, dokonujących płatności za pomocą wykradzionych danych kart płatniczych. W świat ten wprowadzi was ekspert Marcin Mostek.

Zaufana Trzecia Strona – Jak działają carderzy: fingerprinting – wprowadzenie

Uwaga! Poniższy artykuł ma charakter popularno-naukowy, a nie analityczno-techniczny, toteż autor stanowczo odżegnuje się od zwykle stosowanej formy trzecioosobowej i poważnego, profesjonalnego tonu wypowiedzi. Oczywiście twórca mógłby popuścić wodze swojej fantazji i zasypać czytelnika najdrobniejszymi szczegółami technicznymi, jednak w jego odczuciu zniechęciłoby (a raczej zanudziłoby) to dużą część audytorium. W artykule mogą znajdować się śladowe ilości kodu JavaScript, jednak w trosce o zdrowie psychiczne czytelnika, zostaną one ograniczone do niezbędnego minimum.

Ekosystem antyfingerprintowy

Jedną z ciekawszych, a jednocześnie mniej znanych usług dostępnych w tak zwanym „dark necie” (tfu, co za nazwa! brakuje jeszcze tylko przedrostka „cyber”) jest handel narzędziami utrudniającymi fingerprintowanie. By opisać to zjawisko, należy na początku wyjaśnić, czym właściwe jest fingerprinting.

Kiedyś to było, czyli krótki rys historyczny

Dobre wyjaśnienie istoty fingerpintingu wymaga od autora przytoczenia pewnego uproszczonego kontekstu historyczno-technicznego dotyczącego internetu, sposobu działania stron WWW i przeglądarek internetowych.

W swojej pierwotnej idei strony WWW miały być skarbnicą całej wiedzy zgromadzonej przez ludzkość – odpowiednikiem starożytnej Biblioteki Aleksandryjskiej. By skutecznie poruszać się w takim mrowiu informacji, potrzebna jest dobrze zdefiniowana struktura. Stanowić ją miały dokumenty zawierające uporządkowane informacje wraz z metadanymi (np. autorem, czasem dodania, typem dokumentu – tekst, mapa itp.). Struktura tego typu miała znacząco uprościć wyszukiwanie potrzebnych informacji. Dodatkowo, projektując cały system, starano się odwzorować w nim sposób, w jaki ludzie przetwarzają i uczą się nowych informacji. By pokazać relacje pomiędzy poszczególnymi dokumentami, posłużono się hiperlinkami – odpowiednikami ludzkich skojarzeń. Do przeglądania dokumentów, informacji i relacji pomiędzy nimi miały służyć specjalne przeglądarki.

Jednak życie życiem, a idea ideą – ludzie posługujący się językiem „programowania” (znanym dzisiaj jako HTML) zaczęli używać go wbrew zamierzeniom pomysłodawców tej koncepcji. HTML był wykorzystywany już nie do opisywania zawartości dokumentów, ale jako forma modyfikacji ich wyglądu. Następnie historia potoczyła się błyskawicznie – firma Netscape wprowadziła ECMAScript (znany dzisiaj pod nazwą JavaScript), umożliwiając budowanie interaktywnych interfejsów użytkownika na stronach WWW. Kolejnym krokiem milowym było wprowadzenie przez Microsoft API XMLHttpRequest, które umożliwiło komunikację z serwerem bez przeładowywania strony. Krok ten pozwolił de facto na budowanie złożonych aplikacji / interfejsów użytkownika bezpośrednio w przeglądarce (webaplikacje).

Jednakowoż technologie wykorzystywane u podstaw tych wszystkich zmian nie były projektowane z myślą o tak złożonych systemach. Rodziło to liczne problemy. Jednym z nich była bezstanowość protokołu wykorzystywanego do przesyłania stron WWW – HTTP. Protokół ten nie był w stanie zachować żadnych informacji o poprzednich transakcjach z klientem (po zakończeniu transakcji wszystko „przepada”). Mając złożoną aplikację internetową, chcemy przecież zapamiętać ustawienia użytkownika czy potwierdzić jego tożsamość pomiędzy wejściami na stronę. By tego dokonać, musimy zapisać jakąś informację w przeglądarce użytkownika. Mechanizm, który został wprowadzony właśnie w tym celu to HTTP cookie. Jest to po prostu mały fragment tekstu, który serwis internetowy wysyła do przeglądarki i który przeglądarka wysyła z powrotem przy następnych wejściach na witrynę.

Ten prosty trik pozwala na identyfikację użytkownika. Lecz co w wypadku, gdy złośliwy użytkownik usunie tę informację z przeglądarki? Oczywiście istnieją bardziej karkołomne metody zapisywania danych identyfikacyjnych (np. Evercookie), ale je także można usunąć. W tym momencie na ratunek zjawia się właśnie fingerprinting!

Fingerprint – co to za zwierz?

Fingerprint to charakterystyczny dla danego użytkownika zestaw danych pobranych z przeglądarki, mogących z dużym prawdopodobieństwem potwierdzić jego tożsamość pomiędzy wejściami na daną stronę internetową.

Opisując to bardziej obrazowo:

Odpowiednikiem pliku cookie (czyli zapisania informacji w przeglądarce) w świecie rzeczywistym byłyby tablice rejestracyjne auta. Odpowiednikiem fingerprintu opis słowno-muzyczny: „czerwony volkswagen passat z urwanym lusterkiem, zielonym spojlerem i koralikami na fotelach”.

Fingerprint – a komu to potrzebne? A dlaczego?

Fingerprint jest nagminnie stosowany w antyfraudowych systemach płatniczych typu card not present (czyli wszystkich tych, w których płacimy kartą w internecie). Czy zastanawiało Cię, drogi czytelniku, skąd to kręcące się kółko po dokonaniu płatności kartą? Fingerprintowanie użytkownika jest jednym z powodów tego popularnego zjawiska (oprócz wysyłania danych do samego systemu płatności i mnóstwa innych operacji dziejących się w tym czasie).

Wbrew pozorom systemom tego typu nie zależy na permanentnej inwigilacji użytkowników internetu ani dowiedzeniu się, kim naprawdę są, a na zablokowaniu tylko tych z nich, którzy próbują dokonać płatności kradzionymi kartami. Częstym manewrem stosowanym przez carderów jest testowanie, które karty z nabytej przez nich paczki / wycieku nie są już zablokowane i tym samym zdatne do dalszego popełniania przestępstw. Zwykle szuka się do tego celu słabiej zabezpieczonej strony, która oferuje możliwość płatności kartą lub założenia subskrypcji (również opartej na karcie).

W pierwszym przypadku bardzo popularne bywają strony charytatywne, które umożliwiają przekazanie dowolnej wielkości datku. Mała kwota zwiększa szansę, że prawowity właściciel karty nie zauważy faktu nieautoryzowanej płatności i nie zgłosi kradzieży do odpowiedniego organu, blokując tym samym kartę.

Dla zrozumienia drugiego przypadku trzeba zagłębić się w sposób, w jaki procesowane są płatności kartowe w modelu subskrypcyjnym. W bardzo dużym uproszczeniu działa to następująco:

Użytkownikowi proponowany jest okres próbny usługi, w którym nic nie płaci (zwykle miesiąc), jednak musi podać dane karty w celu cyklicznego naliczania opłat w przyszłości.

Po stronie usługodawcy i banku następuje operacja tak zwanej autoryzacji, czyli stwierdzenia, czy dana karta jest aktywna i czy zawiera jakiekolwiek pieniądze. Operacja ta praktycznie realizowana jest poprzez pobranie ze środków przypisanych do karty symbolicznej kwoty, np. 1 dolara). Kwota ta jest zwracana później na konto; opóźnienie, z jakim tam trafia, wynika z charakterystyki płatności kartowych. Jeśli operacja autoryzacji udała się, użytkownik zyskuje od razu dostęp do usługi.

Po zakończeniu okresu próbnego z konta użytkownika przypisanego do karty cyklicznie zaczynają być pobierane pieniądze.

Jako że w przypadku poprawnej autoryzacji praktycznie od razu można uzyskać dostęp do usługi, pozwala to na natychmiastowe potwierdzenie, że dana karta nie została jeszcze zablokowana.

Oczywiście w większości tego typu przypadków carderzy nie bawią się w detal i sprawdzają kilka lub kilkadziesiąt kart. Działania tego typu są oczywiście maskowane, czy to przez usunięcie cookies, czy bardziej wyrafinowane metody. Operacja carderów może być bardzo bolesna dla właściciela serwisu, w którym takie „badanie” miało miejsce. To właśnie on zostanie pociągnięty do odpowiedzialności – czy przez kary pieniężne narzucone mu przez dostawcę systemu płatności, czy też w ekstremalnych wypadkach przez odłączenie od sieci płatniczej.

Do czego mogą posłużyć tego typu sprawdzone karty? To już zależy od doświadczenia i inwencji danego przestępcy. Może to być wypranie pieniędzy w dużo lepiej zabezpieczonych serwisach, w których można kupić na przykład dobra luksusowe i elektronikę (im drożej, tym lepiej) czy bilety lotnicze. Ale sposoby działania carderów to temat na zupełnie inny artykuł…

Oczywiście samo fingerprintowanie nie jest jedynym sposobem powstrzymywania wyżej opisanych ataków, a raczej jednym z wielu elementów systemów antyfraudowych. Obowiązuje tutaj powszechnie znana w systemach bezpieczeństwa zasada ochrony w głąb (bądź jak nazywały to nasze babcie – „na cebulkę”).

Jak się tworzy fingerprinty?

Dobrze, to skoro już mniej więcej wiemy, czym jest fingerprint, to w jaki sposób się go tworzy?

Na początku trzeba wytypować technologie / pola z informacjami, które mogą:

dotyczyć rzeczy, które użytkownik może skonfigurować / zainstalować w systemie lub przeglądarce

LUB

przechodzić przez wiele warstw systemu, z których każda modyfikuje dane wyjściowe.

O ile pierwsza część wydaje się dosyć intuicyjna (np. zebranie pluginów czy czcionek z przeglądarki powinno załatwić sprawę), to o co chodzi autorowi z drugą opcją?

Przykładem drugiego podejścia do fingerprintingu może być wyrenderowanie w przeglądarce obrazka z użyciem WebGL-a (technologii odpowiedzialnej za renderowanie grafiki 3D w przeglądarkach). W przypadku gdy dynamicznie tworzymy w przeglądarce każdego użytkownika identyczny obrazek, przechodzimy przez następujące warstwy:

przeglądarka, a raczej jak przeglądarka zaimplementowała WebGL,

konkretna wersja sterownika karty graficznej i meandry jego implementacji (w sterownikach jest masa „dedykowanych rozwiązań”),

różnice w implementacji funkcji systemowych w różnych systemach operacyjnych,

różnice w dokładności obliczeń zmienno-przecinkowych (spróbujcie sobie policzyć cosinusa z tej samej wartości w JS na różnych przeglądarkach i systemach),

sama karta graficzna.

Każda z wyżej wymienionych warstw wpływa na końcowy kształt obrazka. Powoduje to, że ten sam obraz wyrenderowany na dwóch różnych komputerach wygląda identycznie, ale w praktyce nie jest dokładnie taki sam (różnica kilku pikseli). To właśnie ten szczegół umożliwia identyfikację bądź rozróżnienie użytkowników.

Nie ma róży bez ognia, czyli o wadach fingerprintingu

Jak każda technologia, fingerprinting nie jest doskonały i posiada swoje wady. Każdy istniejący fingerprint znajduje się gdzieś na następującej skali:

Stabilność <—————————————> Granularność

gdzie stabilność oznacza, jak długo dany fingerprint działa (jak długo jest w stanie identyfikować danego użytkownika, zanim ulegnie zmianie), a granularność – jak wielu różnych użytkowników może posiadać ten sam fingerprint (im mniej, tym lepiej).

Niestety (albo i stety – zależy, z której perspektywy patrzeć) wartości te w zdecydowanej większości przypadków wykluczają się nawzajem. Bardzo granularny fingerprint będzie działał naprawdę krótko, natomiast niezwykle stabilny fingerprint będzie miał te same wartości dla różnych użytkowników. Quid pro quo – jak mawiali starożytni Rzymianie.

Przykładowo:

Jeśli do fingerprintowania użyjemy adresu IP użytkownika, fingerprint ten zyska na granularności, aczkolwiek czas jego działa będzie bardzo krótki. Złośliwy carder zmieni swój adres IP w ciągu kilku godzin lub dni.

Natomiast jeśli do fingerprintingu użyjemy samych informacji o technologiach, które są wspierane przez przeglądarkę, fingerprint będzie bardzo stabilny w czasie, ale jego wartość będzie taka sama dla wszystkich użytkowników z tą samą przeglądarką.

pozostała treść na stronie źródła