Zabezpieczenia aplikacji na Androida złamane... w banalny sposób

24.08.2010 11:28, Autor: Wojciech Kowasz (Docent), Kategoria: News
NewsImage

Nie dalej jak miesiąc temu informowaliśmy o nowych, restrykcyjnych zabezpieczeniach antypirackich dla płatnych aplikacji w Android Market. Jak widać ich złamanie nie zajęło wiele czasu, a co więcej okazuje się, że nie należą one do szczególnie wyrafinowanych...

Licensing Service for Android, bo tak nazywa się trzon nowych zabezpieczeń, to usługa mająca zachęcić deweloperów do tworzenia płatnych aplikacji i sprzedawania ich za pośrednictwem Android Market użytkownikom smartfonów z systemem Google. Zabezpieczenia polegają na okresowym łączeniu się aplikacji z serwerami Google i potwierdzaniu swojej oryginalności - bez takiej autoryzacji piracka aplikacja po prostu nie uruchomi się. Okazało się jednak, że takie zabezpieczenie w bieżącym kształcie nie jest wiele warte. Dlaczego?

Tak łatwe złamanie zabezpieczenia było możliwe, bo zdecydowana większość aplikacji na Androida tworzona jest w Javie. Java z kolei - jak tłumaczy haker, sprawca całego zamieszania - aby umożliwić kompatybilność z wieloma platformami kompilowana jest w taki sposób, że dekompilacja napisanej w niej aplikacji nie przysparza najmniejszych problemów. Gołym, choć sprawnym okiem można przeanalizować kod, który musi zostać zmodyfikowany w celu złamania zabezpieczenia zaprojektowanego przez Google. Nie będziemy zamieszczać linków do gotowych instrukcji, ale by zobrazować istotę problemu można powiedzieć w skrócie: proces ogranicza się do zamiany miejscami statusów aplikacji: "licencjonowana" i "nielicencjonowana".

Google jeszcze nie wydał oficjalnego komentarza do tej sprawy. Trudno nie oprzeć się wrażeniu, że firma trochę ośmieszyła się proponując zabezpieczenie, które okazało się tak proste do złamania... Autor opisywanej metody zwraca uwagę, że usługa sprawdzająca licencję jest zewnętrznym komponentem, a nie częścią systemu i dlatego trzeba ją dołączać do aplikacji czyniąc w ten sposób zabezpieczenie łatwym celem hakerów. Gdyby Android posiadał wbudowane mechanizmy licencyjne, ich złamanie byłoby zapewne znacznie bardziej skomplikowane.

r   e   k   l   a   m   a

Komentarze (54)  

Avatar
oxio (niezalogowany) | 24.08.2010 11:42#1

Tak się kończy używanie Javy. Dobrze, że inni nie popełnili tego samego błędu.

Avatar
revvv (niezalogowany) | 24.08.2010 11:44#2

tam chyba nie można używać jakiś zaciemniaczy? Nie wiem proguard?

Avatar
(Kell) (niezalogowany) | 24.08.2010 11:44#3

WTF? Zabezpieczenie zahardkowowane w Javie?

Avatar
qrs123 (niezalogowany) | 24.08.2010 11:55#4

pokażcie mi system, zabezpieczenia które nie zostały złamane i nie można ich złamać...

AvatarUżytkownik jest nieaktywny
PLI52KA | 24.08.2010 12:05#5

Aha, pobieram wersję próbną płatnego programu, zmieniam status aplikacji na "licencjonowana" i cieszę się programem na wieki bez płacenia.

Avatar
sl00d (niezalogowany) | 24.08.2010 12:21#6

@revvv jak najbardziej - tylko proguard'a nie osadzisz w prosty sposob z eclipse, trzeba uzywac do tego ant...

ciekawostka jest tylko to, jak ten czlowiek "na oko" lokalizuje kawalek kodu odpowiedzialny za zabezpieczenie, tym bardziej ze w opisie zabezpieczenia jest podane ze mozna to w roznych momentach wywolywac i uzywac, faktem jest, ze te same wywolania beda mialy ten sam ciag bajtow - ale po przepuszczeniu przez proguarda to juz nie bedzie takie oczywiste...

szybsza metoda bylaby lokalizacja biblioteki i podmiana jej na wlasna spatchowana wersje - co jest jak najbardziej do wykonania - wystarczy zdekodowac plik dex, podmiana, i znowu zakodowac (pisze ogolnikowo bo nie chce naprowadzac na narzedzia do tego sluzace... a specjalnie interesuje sie tematem, bo szukam metody zabezpieczenia sie wlasnie przed taka zabawa we wlasnych programach)...

AvatarUżytkownik jest nieaktywny
Krzychek | 24.08.2010 12:22#7

@PLI52KA
No nie do końca tak to działa :)
Jeżeli dobrze rozumiem... to ściągamy licencjonowaną aplikację, aby ją złamać zmieniamy z "licencjonowana" na "nielicencjonowana" i wtedy cały proces autoryzacji przez serwery Marketu jest pomijany, bo po co niby sprawdzać aplikację freeware :D

AvatarUżytkownik jest nieaktywny
DiversePl | 24.08.2010 12:30#8

@qrs123
System od PS3

Avatar
Dejdara (niezalogowany) | 24.08.2010 12:32#9

@ DiversePl
Już złamano PS3

Avatar
revvv (niezalogowany) | 24.08.2010 12:32#10

@DiversePl
złamano go parę dni temu. Jak na ironię już w wersjach pozbawionych możliwości instalacji linuks którą rzekomo usunięto z powodu obawy o zabezpieczenia.

AvatarUżytkownik jest nieaktywny
Garhuy | 24.08.2010 12:35#11

@qrs123 (niezalogowany)
To błąd w javie nie w androidzie...

AvatarUżytkownik jest nieaktywny
ziggurad | 24.08.2010 12:35#12

system od PS3?
Jeśli mi się zdaje złamany w zeszłym tygodniu ;)

Avatar
hahahahaaaaa (niezalogowany) | 24.08.2010 12:38#13

ziggurad -> nie, źle ci się zdaje, nie doszło do złamania, ukradziono program sony, który wyłącza zabezpieczenia.

Avatar
adafaga (niezalogowany) | 24.08.2010 12:41#14

@ziggurad
dobrze ci sie zdaje ps3 zlamane :]

Avatar
kashiash (niezalogowany) | 24.08.2010 12:42#15

zigg zdaje ci sie

AvatarUżytkownik jest nieaktywny
kkthx | 24.08.2010 12:47#16

@qrs123
#7

System którego zabezpieczenia NIE ZŁAMANA TO... B A D A O S
Bada OS nie da się złamać...

AvatarUżytkownik jest nieaktywny
Sajbi | 24.08.2010 12:51#17

ile zabezpieczeń tyle sposobów by je obejść :)

Avatar
vladonator (niezalogowany) | 24.08.2010 12:53#18

ps3 zlamane zostalo juz dawno, ale tydzien temu pojawily sie jakies dzyngle na usb pozwalajace na pirackie gry(znaczy tak mi sie wydaje, pewien nie jestem)

AvatarUżytkownik jest nieaktywny
bolszy188 | 24.08.2010 12:56#19

A czego wy chcecie od tej Javy. A od kiedy to c czy c++ nie można zdekompilować ?. Tutaj Google dało ciała po całości tak jak tylko można. A jeśli ktoś twierdzi że c++ nie można zdekompilować to chyba jest takim developerem który napisał hello world a może nawet tego nie uczynił.

Google dało ciała po całości

AvatarUżytkownik jest nieaktywny
bolszy188 | 24.08.2010 12:58#20

@kkthx bo nikt nie próbował jeszcze poczekaj chwilkę poco łamać coś co ma dosłownie jeden telefon śmiech to tak jak by pisać trojany pod linuxa nie warto niecały procent rynku światowego bezsens.

AvatarUżytkownik jest nieaktywny
an.szop | 24.08.2010 12:58#21

@DiversePl
LOL.

Ale, jeśli mówiąc/pisząc system masz na myśli całość sprzęt + system, to jak najbardziej masz rację. Aczkolwiek am system tutaj ma najmniej do gadania. Tutaj działa sprzetowy hypervisor.

Tak samo jest w XBox360 - lecz dzięki temu, że MS umieścił przez głupotę sprawdzanie nośnika czy oryginalny w pamięci czytnika dvv, którego to działanie nie jest kontrolowane przez ten właśnie hypervisor zezwolił na modyfikacje, która umożliwia uruchomienie kopii gier. Lecz zauważ, że do tej pory nie złamali także i tutaj zabezpieczeń konsoli jeśli chodzi o wgrywanie dowolnych rzeczy jak to miało w pierwszym Xboksie.


Pozdrawiam

AvatarUżytkownik jest nieaktywny
StawikPiast | 24.08.2010 12:58#22

ech, to niech ktos rozszyfruje dysk tego brazylijskiego maklera, zaszyfrowany jest truecryptem. prosze spece od zabezpieczen, zlemcie je.

AvatarUżytkownik jest nieaktywny
bolszy188 | 24.08.2010 12:59#23

TrueCrypt też jest już złamany było na DP

AvatarUżytkownik jest nieaktywny
an.szop | 24.08.2010 13:01#24

@bolszy188
A widziałeś kod skompilowany Javy i np C++?
Pewnie nie. Dlatego też tak napisałeś.

Kod języków zarządzanych jest bajecznie prosto zdekompilować porównując do kodu niezarządzanego.

Pozdrawiam

Avatar
drkn (niezalogowany) | 24.08.2010 13:04#25

@Garhuy - to nie błąd Javy tylko źle napisane zabezpieczenie ...

Avatar
kukuczka (niezalogowany) | 24.08.2010 13:15#26

Zabezpieczenia Syncrosoftu były swego czasu (przed kilka dobrych lat) nie do złamania. No ale w końcu niejaki AiR dał im radę :D

Avatar
peter. (niezalogowany) | 24.08.2010 13:17#27

I znowu dyskusja niedouczonych ignorantów.

Podany "błąd" to feature kodu zarządzanego (Java, C#).

Każdy średni programista wie, że do releasu kod "oczyszcza" się używa się narzędzi typu obfuscator. Zresztą, każdy kod, łącznie z C++ można zdebugować i zdekompilować. Tak tworzy się cracki i keygeny.

Avatar
dz (niezalogowany) | 24.08.2010 13:20#28

@revvv

Hmm, proguard czy yguard nie za bardzo by się sprawdziły,
gdyż kod pośredni który uzyskujemy na Daviku nie jest
w pełni kompatybilny z JDK Oracle (niegdyż Suna).

Ale zawsze warto spróbować :)

Avatar
daqwid2727 PL (niezalogowany) | 24.08.2010 13:29#29

kkthx : bo tam jeszcze nie ma zabezpieczeń?

AvatarUżytkownik jest nieaktywny
Xirdus | 24.08.2010 13:35#30

@Malanowski
twoje freeware akurat na styk zmieściło się na moim monitorze 1680x1050 :P

@Topic
Dobre zabezpieczenie to sprzętowe zabezpieczenie; wszystkie inne prędzej czy później zostaną złamane.

AvatarUżytkownik jest nieaktywny
Zonix | 24.08.2010 13:55#31

@Garhuy
To błąd w mechanizmie aplikacji, który sprawdzał czy aplikacja jest płatna. Nie jestem ekspertem ale chyba takie rzeczy powinny być szyfrowane.

A że Google zabezpieczyło je w taki sposób, to złamanie tego dla specjalistów było tak proste jak włamanie do domu z kluczem pod wycieraczką.

AvatarUżytkownik jest nieaktywny
kwirynus | 24.08.2010 14:03#32

Łamanie zabezpieczeń to normalność. Ważna jest szybkość łatania.

Avatar
Gość44 (niezalogowany) | 24.08.2010 14:05#33

@PLI52KA nie tak to działa, ale ja nie o tym. Ja o tym, że nie bardzo rozumiem, jak można się cieszyć z tego, że się coś ukradło? Przecież to dowód głupoty - kradniesz, zostaniesz okradziony. Ludzie, uczcie się fizyki w podstawówce, bo potem Wasze życie jest takie... pomieszane.

Jeszcze raz - życie to energia i podlega takim samym prawom, jak każda inna forma energii. Jeśli coś emituję, to do do mnie wraca. Słowem - chcę dostać w mordę? Atakuję kogoś! Chcę zostać okradziony? Okradam kogoś. Chcę zostać zabity - zabijam. Chcę aby inni mi płacili za moją pracę? Płacę innym za ich pracę. W mordę, jakie to proste i jak trudne dla niektórych za razem. :/

Avatar
Raid (niezalogowany) | 24.08.2010 14:07#34

Posiadacze telefonów się cieszą, a developerzy zgrzytają zębami. Jak to możliwe, że firma z wielomiliardowym budżetem nie potrafi zapewnić najmniejszej ochrony developerom? Kręcą na siebie bicz.

AvatarUżytkownik jest nieaktywny
loki7777 | 24.08.2010 14:16#35

Czy ps3 jest zlamane to sie jeszcze okaze - bo nikt tego w domu jeszcze nie ma. I na piratach nikt nie pogra bo trzeba miec oryginal aby zrzucic na dysk ps3.

AvatarUżytkownik jest nieaktywny
bolszy188 | 24.08.2010 14:31#36

@wozniak.daniel tak widziałeś a czy ja napisałem że w c++ jest łatwiej zdekompilować bo wydaje mi się że NIE.

Tak czy inaczej zabezpieczenie godne Google jak na gości którzy mają najlepsze zespoły nie popisali się.

Avatar
Sprawucha (niezalogowany) | 24.08.2010 14:44#37

Walka z hakerami to jak walka z wiatrakami, każde zabezpieczenie da się w jakiś sposób złamać lub ominąć

AvatarUżytkownik jest nieaktywny
an.szop | 24.08.2010 14:49#38

@bolszy188
"A czego wy chcecie od tej Javy. A od kiedy to c czy c++ nie można zdekompilować ?. Tutaj Google dało ciała po całości tak jak tylko można. A jeśli ktoś twierdzi że c++ nie można zdekompilować to chyba jest takim developerem który napisał hello world a może nawet tego nie uczynił."
Tutaj sugerujesz, że program napisany w C++ (oczywiście niezarządzany) jest tak samo prosto zdekompilować jak i Java.
Rozmawiamy tutaj o Javie a Ty zaraz przechodzisz do ataku na C++ z niewiadomo jakiego powodu. W/w tekstem sugerujesz mało obeznanym, że właśnie w jednym i drugim przypadku jest tak samo zdekompilować kod.
Ja dopisałem właśnie do tego Twojego tekstu, iż programy napisane w Javie są dużo prostsze w dekompilacji niż C/C++.


@peter. (niezalogowany)
Cracki i keygeny tworzy się nie z zdekompilowanego kodu! A tylko analizując kod asemblera. A w przypadku zarządzanego języka kod zdekompilowany otrzymujemy wręcz ten sam jaki był pisany -> czyt:
Napisany w Java -> skompilowany -> plik wykonywalny -> dekompilacja -> kod Java.
Gdzie po niezarządzanych np.:
Napisany w C++ -> skompilowany -> plik wykonywalny -> (nie ma jako tako dekompilacji) jest tylko czytanie kodu asemblera.

I tutaj jest właśnie największa różnica pomiędzy kodem zarządzanym a niezarządzanym (poza milionami innych)

Pozdrawiam.

AvatarUżytkownik jest nieaktywny
PLI52KA | 24.08.2010 15:16#39

@Gość44
Mi nie chodzi się o cieszenie się z kradzieży, tylko chciałem pokazać coś w rodzaju wykorzystania "luki", a poza tym nawet dokładnie jej nie zrozumiałem.

Avatar
Marekkk123 (niezalogowany) | 24.08.2010 15:27#40

Widać telefon z Androidem nie może żyć bez internetu :/
Będąc w roamingu i nie mając dostępu do wifi to aby legalnie korzystać z aplikacji będzie trzeba zapłacić za dane pakietowe :/

Avatar
revvv (niezalogowany) | 24.08.2010 15:48#41

Proszę sobie spróbować zdekompilować kod c/c++ (szczególnie z agresywnymi metodami optymalizacji) życzę powodzenia w odczytaniu tego szybko i wyciągnięcie właściwych wniosków z takiego kodu.

Avatar
L0L3k (niezalogowany) | 24.08.2010 16:31#42

Jesli plik .jar jest certyfikowany/podpisany to nie ma mozliwosci modyfikacji pakietu by potem dzialal, wiec opisany sposob jest prosty, ale nie bedzie dzialal z podpisanymi pakietami .jar o ile pozniej nie zostanie sfalszowany podpis cyfrowy, by jakims cudem dzialal. A moze Android nie weryfikuje podpisow pakietow .jar?

Avatar
drkn (niezalogowany) | 24.08.2010 16:57#43

@L0L3k - rozpakowujesz, zmieniasz, podpisujesz swoim certyfikatem, dodajesz go do root certs maszyny (zakładam że jak masz roota to nie problem) i zabezpieczenie znika ;)

Avatar
Appple (niezalogowany) | 24.08.2010 17:46#44

Oj, przeciez GOOOGLE to taka CACY FIRMA. A reszta to BLEeeee

Avatar
Anonim (niezalogowany) | 25.08.2010 4:26#45

To nie google, to Java. Google jezeli mogl opopelnic tu jakis blad to byl to wybor javy , nic wiecej. Programow w C/C++ malo kto dekompulije bo po prostu sie nie oplaca - kod asma jest kilkadziesiat razy wiekszy niz kod programu wynikowego. Szukanie procedury/kodu w asmie zakrawa na probe szukania rozbitej awionetki w dzungli amazonskiej, gdzie w przypadku javy masz podane jak na tacy.

AvatarUżytkownik jest nieaktywny
bolszy188 | 25.08.2010 9:40#46

@wozniak.daniel my MASTER napisałem "A od kiedy to c czy c++ nie można zdekompilować ?", nie napisałem nigdzie ze to będzie łatwe a jeśli masz problemy z rozumieniem tekstu to może faktycznie za dużo w c klepiesz :P

AvatarUżytkownik jest nieaktywny
an.szop | 25.08.2010 11:28#47

@bolszy188
Nie napisałeś tego w prost.
Ale zasugerowałeś swoją wypowiedzią odpowiadając na zarzuty, że Java jest bardzo prosta w dekompilacji. (zaznaczam tutaj, że to nie Java a bytecode skompilowany z Java (czy jakiekolwiek innego zarządzanego języka - nawet C++/CLI).
Broniąc tutaj Javy w sposób jaki Ty to zrobiłeś, jednoznacznie sugeruje, iż C/C++ jest taka samo prosty w dekompilacji (pomijając już to, że dekompilacja C/C++ jest praktycznie niemożliwa, a w najlepszym przypadku nie tak jasno jak zarządzane).
A jeśli tego nie chciałęś zasugerować. To następnym razem uważaj jak składasz zdania.


Ano i klepie chyba za dużo już w tym C. Ale wręcz przeciwne. Pomaga to w rozumowaniu bardzo dobrze każdego tekstu. Taka natura tego języka, że czyta się też co jest pomiędzy, a nie tylko na spodzie.


Pozdrawiam

AvatarUżytkownik jest nieaktywny
an.szop | 25.08.2010 11:35#48

@bolszy188
To jest Twoja wypowiedź:
"A czego wy chcecie od tej Javy. A od kiedy to c czy c++ nie można zdekompilować ?. "


Pozdrawiam

AvatarUżytkownik jest nieaktywny
an.szop | 25.08.2010 11:37#49

@ do redakcji @
Przydałaby się jakaś prosta forma edycji. Chociaż do 5 min od napisania posta.
Przecież, to nie jest takie ciężkie w implementacji ;)


Pozdrawiam

AvatarUżytkownik jest nieaktywny
an.szop | 25.08.2010 11:41#50

@bolszy188
"A jeśli ktoś twierdzi że c++ nie można zdekompilować to chyba jest takim developerem który napisał hello world a może nawet tego nie uczynił"

Już Ci pisałem. Spróbuj sobie zdekompilować kod C++. Życzę Ci jak @revvv (niezalogowany) powodzenia.


Chciałem jeszcze zauważyć, iż developer, nie musi być programistą (tak i piszę tu o developrze od aplikacji). Także nie musi wiedzieć nic na temat dekompilacji kodu. Ale za to programista może być developerem.

Pozdrawiam

AvatarUżytkownik jest nieaktywny
Zonix | 25.08.2010 12:15#51

Czytając co poniektórych można by pomyśleć że łatwość dekompilacji to jakaś wada. Już były tu wspominane sposoby jak to zabezpieczyć.

Heh i jeszcze ciekawe kto napisał ten dekompilator napisał bo jak Google to tak jak na drzwiach zostawić kartkę "klucz pod wycieraczką".
Disassembler jest hostowany na Google Code ;)
http://code.google.com/p/smali/

Avatar
L0L3k (niezalogowany) | 25.08.2010 12:49#52

@drkn Zadzialaloby o ile certyfikaty nie sa zapisane w pamieci stalej komorki i jednoczesnie jest dostep do root'a oraz Android pozwala na uruchomienie .jar podpisanego jakims obcym podpisem/certyfikatem.
Zazwyczaj tylko midlety podpisane oficjalnym certyfikatem maja dostep do pewnych funkcji urzadzenia (w tym pewnie funkcji licencyjnych i dostepu do sieci bez kazdorazowego potwierdzania przy uruchomieniu).
Nawet jesli tworcy Android pozostawili taka luke, to szybko mozna to naprawic za pomoca podpisywania .jar-ek oficjalnym certyfikatem AndroidMarket i zabronienie uruchamiania licencjonowanych midletow niepodpisanych lub podpisanych przez kogos innego. Oczywiscie wtedy ktos zmodyfikuje kod Android OS by dalo sie to ominac i podmieni sobie system operacyjny na komorce. ;)
Kazde zabezpieczenie mozna obejsc.

AvatarUżytkownik jest nieaktywny
Dimatheus | 28.08.2010 14:13#53

Hej,

Wygląda to na totalną fuszerkę - coś w stylu sztuki dla sztuki... :) Teraz Google będzie musiało zmyć tę skazę poprzez dopracowany i porządny system sprawdzania legalności oprogramowania. Tyle że przyjdzie na nie pewnie nieco poczekać.

Pozdrawiam,
Dimatheus

Avatar
sraka kasi (niezalogowany) | 01.06.2011 16:05#54

nie zlamano ps3 i prawdopodobnie sie to nie wydarzy

Dodaj komentarz

Zasady publikowania komentarzy
Autor
Treść
 
Polecamy
Testujemy: Manta Smart TV Box

Internet w telewizorze
Spotkajmy się na HotZlocie!

13-15 07 2012, Zamek na Skale
Huawei E583C

Test przenośnego routera 3G
Recenzja Samsung NP530U4B

Ultabook z nadwagą
Top programy
  •  
Top programy ostatnie 7 dni
  •  
Top programy ostatnie 30 dni
  •  
Skanery antywirusowe
skaner av