Hogyan hackeltem meg a modern automatákat

author
4 minutes, 43 seconds Read
Eredetileg közzétette: Matteo Pisani 2018. október 10. 192,920 olvasott

“Üt és rúg” a legszélesebb európai forgalmazó cég kötegelt applikációja.

PREFACE

Vitathatatlan, hogy az automaták kultikus tárgyak. A hackerek finom falatkái, mindig. Kezdetben csak érmékkel működtek offline, majd az NFC- kulcsos/kártyás modellek kezdtek elterjedni. Ha azt mondom “COGES” biztos vagyok benne, hogy valakinek jobb idők jutnak eszébe. De… Néhány év alatt a dolgok gyökeresen megváltoztak. Az ember elvonja a figyelmét, és egy pillanattal később azt látja, hogy a világot felváltják az internethez kapcsolódó dolgok…

TÖRTÉNET

Egy nap úgy döntöttem, hogy megszakítom a denevérbarlangban való fűszerezést, és egyenesen a szülővárosomba megyek napozni, így elmentem az egyetemre, hogy köszöntsek egy öreg professzort.

“Menj, igyál egy kávét!” – mondta- és elkezdtünk csevegni, miközben végigsétáltunk a főfolyosón.

Amikor megérkeztünk…

Én: “Hadd fizessek, van érmém!”.
Ő: “

BLE + NFC

Agy:

HOT-POT

Lélek: “Mmm… A virtuális pénztárcák király dolgok…”

Kiváló.

HOT-POT

Lélek: “Mersz belehackelni!”

~$ Fehér kalapos belső hang: “csak vállveregetés, ha nincs bug bounty jutalom”.
~$ Szürke kalapos belső hang: “ok, ezt csak oktatási céllal csinálom”.
~$ Fekete kalapos belső hang: “gyerünk ember, csesszük meg azt a HEAP-ot, nagyszerű Jupiter!”.

Később aznap…

Pwnie expressz.

ANALIZIS

Nem kell mondanom, hogy felkaptam a piszkos rootolt Android okostelefonomat (USB Debugging Enabled), telepítettem a célzott alkalmazást a Play Store-ból és kidobtam az eredeti *.apk-t a laptopomra az adb segítségével.

# adb pull /data/app/com.sitael.vending-1/base.apk ./Argenta.apk

A *.apk-t dekompiláltam az apktool

# apktool d ./Argenta.apk -o ./Argenta

és kinyertem a Java forrásokat a jadx

# jadx ./Argenta.apk 

Először a *.apk hibakereshetővé az AndroidManifest.xml fájl szerkesztésével, a application <tag>

tulajdonság android:debuggable="true" hozzáadásával a application <tag>

Ezután újraépítettem a *.apk

# apktool b ./Argenta

a keytool

# keytool -genkey -v -keystore Argenta.keystore -alias Argenta -keyalg RSA -keysize 2048 -validity 10000

val új kulcsot készítettem a *.apk-t a jarsignerrel a generált kulcs segítségével

# jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore Argenta.keystore Argenta.apk Argenta

végezetül zip-eltem, hogy futtatható legyen

# zipalign -v 4 Argenta.apk Argenta-signed.apk

és telepítettem a végleges *.apk

Futtattam az alkalmazást az okostelefonon, és a logcat segítségével elkezdtem megnézni a logokat a csomag neve alapján szűrve

# adb logcat --pid=`adb shell pidof -s com.sitael.vending`

Nem találtam semmi különöset, így elkezdtem átfésülni a forráskódokat szaftos információkat keresve.

A AndroidManifest.xml fájlt jobban átnézve, találtam utalásokat a RushOrm-ra

Az első kulcsszavas keresés tehát db_name

Cool. Elindítottam a Root Explorert a telefonon keresve a argenta.db

Találtam. Így a laptopomra húztam adb

# adb pull /data/data/com.sitael.vending/databases/argenta.db ./

és megpróbáltam megnyitni a DB Browser for SQLite

nyilvánvalóan, jelszóval védett volt

REVERSE-ENGINEERING

visszaléptem a forráskódokhoz, megnéztem RushAndroidConfig.java

ahol megtaláltam az adatbázis konfigurálásához használt módszereket.
A figyelmemet a this.encryptionKey = getDeviceId(context);

megkötöttem a definícióját, és…

megállapítottam, hogy a célzott alkalmazás a telefon IMEI-jét (*#06#) használta az SQLite adatbázis titkosítási kulcsaként.

Abrakadabra.

Boom baby.

Pár másodpercnyi vizsgálódás után, Megnyitottam a UserWallets táblát

és szerkesztettem a walletCredit mezőt a változásokat írva

majd visszatoltam az adatbázist a pumpált hitelekkel a telefonra

# adb pull ./argenta.db /data/data/com.sitael.vending/databases/argenta.db

VERDICT

Eközben, miközben úgy éreztem magam, mint “Robin Hood” (nosztalgikus és kifejezett utalás az Age Of Empires cheat kódjára a +1000 aranyért), kifejlesztettem egy Android segédprogramot a célzott App adatbázisának gyors dumpolására/visszaállítására/meghamisítására menet közben.

ezután újra visszamentem az egyetememre, hogy végre teszteljem a Hack

Dear diary…

CONCLUSION

Nulla kredites számláról tudtam:

> Felfújni az alkalmazás hitelét.
> Vásárolni dolgokat.
> A megmaradt kreditet frissíteni.
> Visszamenni a nulla kredites állapotba.
> Újra felfújni a kreditet.
> Kezdd elölről.

Az összes fordított forrás makrovizsgálatával hatalmas adag tiszta kódot találtam – elhomályosítás nélkül -, ami azt jelentette, hogy egyáltalán nem fogadtak el nagy ellenintézkedéseket a felhasználói adatok védelme és az alkalmazás biztonságossá tétele érdekében.

Egy hónappal ezelőtt…

A fehér kalapos belső hangom felvette a telefont, és felhívta a szégyen mögött álló céget, hogy jelentse a sebezhetőséget. Finoman javasoltam nekik, hogy dobják el a jelenlegi architektúrát, és fejlesszenek ki egy jobbat és biztonságosabbat a semmiből.

Hókuszpókusz mumus.

Tagek

Csatlakozz a Hacker Noonhoz

Létrehozd ingyenes fiókodat az egyéni olvasási élmény feloldásához.

Similar Posts

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.