Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Abusing, czyli taki jakby hacking...

O bezpieczeństwie mówi teraz prawie każdy. Prześcigają się w odmętach internetu "specjaliści" od antywirusów, personal firewalli, bezpieczeństwie systemu operacyjnego czy przeglądarki nań działającej. Często pomysły są wręcz kuriozalne, nie wiadomo czy śmiać się, czy płakać. Dodatkowo spotykam się często ze stereotypem, że jeśli ktoś czegoś nie stracił, to znaczy, że system jest bezpieczny. Pogląd mylny, co zamierzam w poniższym tekście udowodnić. Posłużę się tu przykładem mam nadzieję okazałym i przemawiającym do wyobraźni. Nie będę niczego jednak hackował, sensu stricte. Ja tylko... lekko nadużyję. Zanim jednak przejdę do omawiania przykładu kilka uwag na początek: opisane tutaj metody nie będą gotowymi przykładami do zastosowania w domu. Co więcej - stosowanie tych metod w praktyce jest najprawdopodobniej nielegalne i można za to trafić za kratki. Rzeczy, o których mówię powinny pozostać w wersji teoretycznej, póki potencjalna ofiara nie wyrazi zgody na ich wykorzystanie. Polecam tutaj wszystkim wstęp do podręcznika o metasploicie "Metasploit. Przewodnik po testach penetracyjnych".

Rys historyczny

Całkiem niedawno, mniej niż pół roku temu w końcu zdecydowałem się na zakup FIFY trzynastej tym samym rezygnując z większości wolnego czasu, życia rodzinnego, snu, a czasem nawet ograniczając potrzeby fizjologiczne. Gra ta, żadna to nowość, oferuje grę przez internet, a jednym z najbardziej popularnych trybów gry jest tzw. UltimateTeam. Polega on między innymi na zbieraniu kart zawodników, które można wymieniać lub sprzedawać za wirtualną walutę. Jedną z podstawowych kart jest karta kontraktu (szczegóły łatwo wygooglać). Byłem mocno zdziwiony, gdy karty w dobrej cenie pojawiały się i znikały w czasie tak szybkim, że niemożliwe było zakupienie ich przez konsole. Zacząłem więc interesować się tym odrobinę bardziej i odkryłem (ależ ze mnie Kolumb!), że EA oferuje interfejs webowy do swojej aplikacji. Dzięki niemu, korzystając po prostu z przeglądarki, można zarządzać talią kart. A skoro przeglądarka...

Scouting

Jak wyobrażałem sobie dotychczas przekazywanie informacji przez konsole o wystawionej na aukcji karcie? Nie wyobrażałem sobie w ogóle. Po tym jak uświadomiłem sobie (błyskotliwy, niczym perła na dnie oceanu), że system ten musi być jednocześnie rozproszony i uniwersalny wyobraziłem sobie tylko jedno - REST. Czyli krzyk mody w programowaniu systemów rozproszonych opartych o webserwisy. Mimo, że aplikacja przeglądarkowa oparta jest o flash, bez obaw wdusiłem F12, przeszedłem do zakładki Sieć i patrzyłem co się dzieje... a dzieje się, oj dzieje.

Oczywiście, poza podstawowymi żądaniami o obrazki itd, w oczy rzucają się trzy pierwsze posty. Są tą typowe RESTful zapytania z nagłówkiem X-HTTP-Method-Override, który odpowiada za zmianę po stronie serwera metody, którą zgłosiła przeglądarka (co zapewnia kompatybilność z różnymi i nieraz kapryśnymi przeglądarkami). Łatwo zauważyć, że zapytania te odpowiadają za pobranie informacji o stanie konta (credits), nowych kartach (new cards) oraz kartach przeznaczonych do wymiany (tradepile). Przy odpowiednim "klikaniu" pojawi się nam czwarty post - watchlist, zawierający informację o kartach przez nas licytowanych.

W związku z tym, że RESTful przekazuje parametry w URL to dość łatwo powinno się dać wykonać wywołanie takiego żądania przez zwykłą przeglądarkę. I tak, wpisując w polu adres następujący url:

https://utas.fut.ea.com/ut/game/fifa13/tradepile

oczekujemy informacji o wystawionych przez nas kartach. Tymczasem dostajemy w odpowiedzi:

{"message":null,"reason":"expired session","code":401}

Tutaj pojawia się pytanie, które by nie padło, gdybyśmy poświęcili trzy minuty na wcześniejszą analizę wymiany nagłówków. Ale jak to mówią, co nagle to po diable.

Odrobina teorii. Jest tylko jedna najbardziej popularna metoda identyfikacji użytkownika w sieci. To ciasteczka. Ewentualnie można czasem usłyszeć, że to sesja, przy czym de facto sprowadza się to do tego samego. Serwer zwraca przeglądarce nagłówek Set-Cookie, a ta, do momentu, gdy ciasteczko nie wygaśnie lub serwer nie zażąda jego usunięcia (co tak naprawdę sprowadza się do ustawienia tego samego ciasteczka z czasem wygaśnięcia z przeszłości) , będzie wysyłać w żądaniach nagłówek Cookie. Przeglądarka będzie wysyłać ciasteczko zawsze do domeny, z której przyszło i pod ograniczony przy ustawieniu path (czyli ścieżkę). Przynajmniej powinna...

Jak to się ma do naszego RESTa? Ano tak, że gdyby programiści EA ograniczyli zabezpieczenia do ciasteczek, to nasze żądanie wygenerowane w przeglądarce powinno zwrócić odpowiedź zgodną z oczekiwaniem. Tymczasem - expired session. Dlaczego tak się dzieje?

Ano dlatego, że programiści EA zaimplementowali zabezpieczenia dodatkowe, które jednak i tak rzucają się w oczy. Popatrzmy na request skopiowany przez FireBuga:

POST /ut/game/fifa13/user/credits HTTP/1.1 Host: utas.fut.ea.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: pl,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: s_nr1=1377099186561-REPEAT; utag_main=_st:1377100987464$ses_id:13770xxxxxxx%3Bexp-session; __utma=1190xxx5.25369668.1373555369.1376929564.1377099188.7; __utmz=119042845.1377099188.7.7.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=fifa%2013%20auction%20glitch Connection: keep-alive Accept application/json Content-length 1 Content-type application/json X-HTTP-Method-Override GET X-UT-Embed-Error true X-UT-PHISHING-TOKEN 2116153xxxxxxx48185467 X-UT-SID 52be5248-ae13-45f9-a8c1-6axxxxx1412

Jak widać leci jakiś cookie (choć, gdy planowałem ten tekst cookie nie było w ogóle. Jest on jednak prawdopodobnie związany z tzw. glitchem, czyli utykaniem kart na aukcjach), ale w oczy rzuca się X-UT-PHISHING-TOKEN oraz X-UT-SID.

A co jeśli to właśnie te dane identyfikują użytkownika? Wystarczy popatrzeć na inne requesty- w obrębie "sesji" są takie same. Zmieniają się obie wartości po przelogowaniu. Wszystko więc wskazuje na to, że właśnie w ten sposób następuje identyfikacja.

Skoro mamy już jako takie pojęcie jak odpytywać serwer warto się zainteresować co dostaniemy w odpowiedzi. I tutaj ogromna niespodzianka...

Odpowiedź, którą otrzymujemy jest w JSONie (dla tych bardziej praktycznych - zwracam uwagę na nagłówek Accept-Encoding). Czyli wszystko pięknie zserializowane, bardzo proste i poręczne do użycia. Co więcej - dane przekazywane w JSON zawierają informacje, których nie przedstawia interfejs (ani ten na XBOX, ani ten w przeglądarce)! Nic tylko...

Concept

Mamy więc za sobą rozeznanie, wszystko wskazuje na to, że system da się łatwo wykorzystać. Jak? Na przykład tworząc własnego klienta, którym zautomatyzujemy procesy, do których przeznaczony jest interfejs. Klient może za nas kupować karty, sprzedawać, realizować jakąś narzuconą logikę (nawet bardzo skomplikowaną), wszystko bez tak zwanego elementu białkowego. Czy ktoś coś stracił? Dosłownie - na pewno nie. Czy jesteśmy legalni? Na pewno nie. Czy doszło do hackingu? Naturalnie, że nie. To tylko abusing. Czy więc system jest bezpieczny? No panie...

Posłowie

Za niecałe trzy tygodnie wychodzi najnowsza, czternasta część FIFY. Mam nadzieję, że do tego czasu aplikacja od EA ulegnie modernizacji, która pozwoli w mniejszym stopniu na jej nadużywanie. Z mojego doświadczenia jednak wynika, że mało kto potrafi dobrze zabezpieczyć aplikację www na tego typu ataki (tego typu, to znaczy na ich wykorzystanie niezgodnie z założeniami twórców). Za przykład podam jednak interfejs do zakładania kont na gmailu. Kiedyś mieli z tym problem, dziś to doskonały przykład, że jednak da się to tak skomplikować, że się nie chce nad tym siedzieć. Zwłaszcza, że setki innych i podobnych interfejsów jest dostępnych.

PS. przestrzegam kolejny raz - nie korzystajcie w praktyce z omówionych tutaj przeze mnie metod.

PS#2 - wpis sponsoruje słówko interfejs. 

bezpieczeństwo

Komentarze

0 nowych
KyRol   17 #1 08.09.2013 19:46

No toś Pan wdepnął w grząskie coś. Hacking niekoniecznie jest działaniem na czyjąś szkodę, a jeśli już - jest niezamierzonym. Natomiast we wpisie chyba bardziej miałeś na myśli cracking albo nawet Frauding http://pl.wikipedia.org/wiki/Oszustwo...

tfl   8 #2 08.09.2013 19:54

@KyRol

267, kk, paragraf 1 oraz 3.

KyRol   17 #3 08.09.2013 20:18

"Art. 267. §1. Kto bez uprawnienia uzyskuje dostęp do informacji dla niego nieprzeznaczonej, otwierając zamknięte pismo, podłączając się do sieci telekomunikacyjnej lub przełamując albo omijając elektroniczne, magnetyczne, informatyczne lub inne szczególne jej zabezpieczenie,
podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 2.

(...)

§ 3. Tej samej karze podlega, kto w celu uzyskania informacji, do której nie jest uprawniony, zakłada lub posługuje się urządzeniem podsłuchowym, wizualnym albo innym urządzeniem lub oprogramowaniem."

No, ok, tylko gdzie tu pada słowo hacking? Nigdzie. Organizowane są hackfesty, hackspejsy inne tego typu hacktywności i nie spotkałem się z opinią, że odbywa się nielegalnie lub potajemnie w konspiracji z zamiarem robienia komukolwiek/czemukolwiek krzywdy. Ja rozumiem, chciałeś uprościć dla ludu, ale uprościłeś tak, że pod paradoks można podciągnąć wcześniejszy cytat, w którym odnosisz się do specjalistów... Nie obraź się, ja to tak odbieram...

tfl   8 #4 08.09.2013 20:35

Chyba mi gdzies umknal cel twoich wpisow pod tym blogiem...

1) "Hacking niekoniecznie jest działaniem na czyjąś szkodę, a jeśli już - jest niezamierzonym." Hacking jest dzialaniem w celu zlamania zabezpieczen. Co sie pozniej dzieje, to inna sprawa. Czy ja napisalem gdzies inacze?

2) Cracking... niuanse semantyczno ideologiczne. Cracking to wedlug "hackerow" podobno przestepcy robiacy to samo co sami hackerzy (czyli lamiacy zabezpiecznia).

3) frauding... fraud to po prostu oszustwo. wszystko wiec zalezy od kontekstu uzycia. mnie najblizsze jest credit card fraud, ale ma sie to zupelnie nijak...

4) podajesz link do wikipedii, w ktorej jest nawiazanie do artykulu 286 kk... w tym kraju za lamanie zabezpieczen (czyli hacking) i dostep do informacji dla niego nie przeznaczonej skazuje sie z artykulu 267 kk. Artykul 268 dotyczy uszkodzenia informacji po uzyskaniu do niej dostepu wiec juz po hackingu. Generalnie - caly rozdzial 33 dotyczy wlasnie przestepstw cybernetycznych.

5) ja chcialem udowodnic to, ze bezpieczny system nie wystepuje wtedy, gdy nikt nic nie stracil, a wtedy, gdy mozna go uzyc tylko tak, jak zamierzano. Pisze o tym w pierwszym akapicie...

KyRol   17 #5 08.09.2013 21:03

http://en.wikipedia.org/wiki/Hacker

obchodzenie zabezpieczeń nie jest równoważne z łamaniem prawa, stosujesz zbyt bezpośrednie uproszczenie na szkodę tego terminu. Po co mi ten paragraf podtykasz? Jak w domu sobie zrobię fortece z kompa, a później będę się do niej włamywał, tez mi grozi paragraf?

"Nie będę niczego jednak hackował, sensu stricte. Ja tylko... lekko nadużyję."

Co mają znaczyć te dwa zdania zestawione ze sobą? że niby abuse jest czymś lżejszym od hackingu? No w mojej opinii nie bardzo.

tfl   8 #8 08.09.2013 22:07

chetnie odnioslbym sie do krytyki, ale naprawde nie wiem czego ona dotyczy... chodzi ci o to, ze jednak hackowalem ? (w twoim linku znalazlem cos takiego: In the computer security context, a hacker is someone who seeks and exploits weaknesses in a computer system or computer network. Hackers may be motivated by a multitude of reasons, such as profit, protest, or challenge). A moze tego, ze jednak nie hackowalem? (w swoim tekscie widze cos takiego: Czy doszło do hackingu? Naturalnie, że nie.). A moze chodzi ci o to, ze rzucilem paragrafem? No coz.. poki nie bedzie mozna edytowac komentarzy to jednak widac, ze ty mi zaserwowales linka, ktory opisuje oszustwo i nawiazuje do konkretnego paragrafu (ktory pasuje jak roza do kozucha).

Jakbys byl tak mily i zwerbalizowal raz a dobrze co krytykujesz w tym tekscie?

KyRol   17 #9 08.09.2013 22:26

"chetnie odnioslbym sie do krytyki, ale naprawde nie wiem czego ona dotyczy... chodzi ci o to, ze jednak hackowalem?"

Ciężko mówić o kimś, na temat tego co kto robi, nie widząc go.

"w twoim linku znalazlem cos takiego"

Nie w moim, sam kliknąłeś dalej, mi chodziło o krótką definicję. No ale skoro raczyłeś się zagłębić w szczegóły, to prędzej można powiedzieć, że crackerzy nadają złe znaczenie temu terminowi: http://pl.wikipedia.org/wiki/Haker_%28bezpiecze%C5%84stwo_komputerowe%29

"Hakerzy skupieni w społeczności hakerskiej używają terminu cracker dla odróżnienia od siebie przestępców, z kolei crackerzy terminu haker używają na określenie włamywaczy sieciowych."

"Jakbys byl tak mily i zwerbalizowal raz a dobrze co krytykujesz w tym tekscie?"

Za miłego na DP nie uchodzę. W najlepszym razie za szczerego. W jakim kontekście i dlaczego używasz słowa hacker w tytule swojego wpisu? Co mają znaczyć te dwa zdania zestawione ze sobą? że niby abuse jest czymś lżejszym od hackingu? That's all

tfl   8 #10 08.09.2013 22:47

"Ciężko mówić o kimś, na temat tego co kto robi, nie widząc go. "

say what?!

W tytule jest hacking. Nie hacker. Roznica jak miedzy pieprzem, a sam wiesz czym.

uwazam, ze metoda, ktora pokazalem nie jest hackingiem, nie trzeba, by ja zastosowac wiedzy tajemnej albo nawet "szerokiej wiedzy technologicznej". Podstawy tylko. Ale za to mozna byc pociagnietym do odpowiedzialnosci tak samo, jak za wlamanie sie do wysoce strzezonej instytucji.

KyRol   17 #11 08.09.2013 23:18

Nie odniosłeś się do dalszej części pytania:

"Nie będę niczego jednak hackował, sensu stricte. Ja tylko... lekko nadużyję."

Co mają znaczyć te dwa zdania zestawione ze sobą? że niby abuse jest czymś lżejszym od hackingu? Z tej konstrukcji wręcz wynika, że hacking nosi znamiona wręcz przestępstwa (podawałeś też paragraf)...

tfl   8 #12 09.09.2013 07:23

Ja sie nie odnioslem... A wyzej to co jest?

"uwazam, ze metoda, ktora pokazalem nie jest hackingiem, nie trzeba, by ja zastosowac wiedzy tajemnej albo nawet "szerokiej wiedzy technologicznej". Podstawy tylko. Ale za to mozna byc pociagnietym do odpowiedzialnosci tak samo, jak za wlamanie sie do wysoce strzezonej instytucji."

Mimo braku nadziei poprosze raz jeszcze - powiedz w koncu raz a dobrze, o co ci chodzi...

djDziadek   16 #13 09.09.2013 08:10

Coś się troszkę zapętliliście w tych pokrzykiwaniach :)
Krótko i na temat: EA pozwoliła na wykorzystanie aplikacji zewnętrznych do zarządzania tymi danymi?
TAK - każdy może stworzyć swoją apkę i mieszać.
NIE - nikomu nie wolno mieszać z zewnątrz i każdy który to robi łamie prawo.
Nie ważne jak by tego nie nazwać: hacking, cracking czy sracking - jest to przestępstwo - koniec kropka.
Od adwokata i jego umiejętności żonglerki semantycznej zależy potem wyrok w sprawie - co nie zmienia faktu złamania prawa - HAWK.

rm7   4 #14 09.09.2013 09:50

Zaraz, EA dało dostęp do swojego interfejsu, pokazało przykładową aplikację, co ich obchodzi jak go używamy, przez ich aplikację, czy własną? Oczywiście, jeżeli w regulaminie, na który się zgodziliśmy, zakazali tego, to nam nie wolno, ale jeżeli nic o tym nie pisali, to o co chodzi?
djDziadek: Ponoć co nie jest zabronione, jest dozwolone. Wolisz, by było zgodne z prawem tylko to, na co pozwala prawo?

djDziadek   16 #15 09.09.2013 10:30

Nie, chodziło mi raczej o bezsensowne dyskusje dotyczące różnic semantycznych w różnym nabywaniu przestępstwa.
Kiedyś po kradzieży samochodu było magiczne prawne określenie, które brzmiało: "krótkotrwałe użytkowanie" a które zwalniało złodzieja z odpowiedzialności po szybkim zatrzymaniu od momentu kradzieży pojazdu.
W powyższej dyskusji w komentarzach jest analogia do tego (usuniętego na szczęście) przepisu.

KyRol   17 #16 09.09.2013 10:47

@djDziadek: równie dobrze można wrzucić do jednego worka pojęcia i odwrócić takie jak wirus i antywirus. Wychodząc z waszego założenia, wedle waszej definicji, nie ma różnicy w terminach wirus i antywirus. Ważne, że coś takiego istnieje i ważne, że co by to nie było robi szkodę. Tak więc na podstawie cytatu "Nie będę niczego jednak hackował, sensu stricte. Ja tylko... lekko nadużyję.", można stworzyć kolejny "Nie będę niczego infekował, ja tylko lekko zawirusuję".

Jeśli chodzi o znaczenie tego zdania z perspektywy crackera, który jest definicyjnym opryszkiem, nie ma niczego niepoprawnego w tym sformowaniu. Natomiast chcąc się wypowiedzieć z perspektywy człowieka, który nie stoi na bakier z prawem, bądź z perspektywy hackera, jest to nadużycie na szkodę hackerów. Tyle ode mnie EOT, bo widzę, że dyskusja na ważny temat w myśl znaczenia branży IT jest wam niepotrzebna i wam się najwidoczniej lepiej żyje w nieświadomości. Nie będę nadgorliwy, czytający komentarze dojdą do własnych wniosków. EOT.

kostek135   8 #17 09.09.2013 21:06

Hmm tak dla rozluźnienia dyskusji. Prawdopodobnie gdzieś istnieje jakiś Azjata, który szybciej klika niż twój potencjalny program. Wystarczy popatrzeć na turnieje starcrafta :P