@matteo.pisani.91Matteo Pisani
A játékokat ’91 óta szétszedő
“Ü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
Létrehozd ingyenes fiókodat az egyéni olvasási élmény feloldásához.