AndroidRE
System(s):
Language(s):
Android se prosazuje a je o něm čím dál víc slyšet. Chceš vědět, co se děje při instalaci aplikace nebo jak snadno se dá (tvoje) aplikace reverznout a patchnout?
Workshop by měl volně pokračovat analýzou crackmes, který už jsou připravený. Pokud o to máš zájem, dej vědet.
Poslední workshop se konal 20. 5. 2015.
Contents
- 1 Předpoklady
- 2 Rozvrh
- 3 Workshop
- 3.1 Devátej workshop
- 3.2 První téma: Android Studio, SDK, první app
- 3.3 Druhý téma: Spuštění app, emulátor, zařízení
- 3.4 Třetí téma: konečně trocha reverzování: vnitřnosti skompilované app
- 3.5 Čtvrtý téma: základní apps pro Android
- 3.6 Pátý téma: app po instalaci, ODEX
- 3.7 Šestý téma: Dekompilace DEX do Java kódu, disassembling
- 3.8 Sedmý téma: reverzing APK ručně
- 3.9 Osmý téma: C#
- 3.10 Devátý téma: zachytávání HTTP(S) komunikace
- 3.11 Desátý téma: crackme
- 4 Histore workshopů
- 5 návod na přidání google play do image
Předpoklady
V současné době workshop postoupil k pokročilejším tématům. Původní předpoklady byly:
Vem si svůj počítač. Občas budeme potřebovat kompilovat, takže si na něho napřed nainstaluj Android Studio s SDK. Instalace může trvat dlouho. Pokud si ho nechceš instalovat a namísto toho používat příkazovou řádku, tak se to nejdřív nauč, protože kompilaci z příkazové řádky probírat nebudeme.
Pro začátek stačí, když budeš v Javě umět aspoň číst. Pokud tě k tomu nevyzvala instalace Android Studia, nainstaluj si Java SE JDK. Viz taky Requirements
Pokud máš zařízení s Androidem, vem ho s sebou. Stačí i nějaký starší kousek. Pokud nemáš, budeš používat emulátor, ten je v SDK. Ale bacha: emulátor je nesnesitelně pomalej, pokud nemáš v procáku Intel HAX (jestli máš, zjistíme na workshopu). V takovým případě je lepší pořídit si přímo zařízení, třeba starší telefon. Stačí si ho pořídit až po prvním workshopu po osobní konzultaci.
Rozvrh
Z každýho setkání si odneseš novou praktickou dovednost. Z toho důvodu jsou jenom stanovený témata, který určují, jak budeme postupovat. Během jednoho workshopu můžeme vyčerpat víc než jedno téma, nebo ho taky načnout jenom zčásti.
Potkáváme se pravidelně jednou za dva týdny.
Workshop
Cíl je dostat se co nejdřív k reverzování, od toho potom zpátky ke kódu, programování, implementaci.
Devátej workshop
Probereme desátý téma.
První téma: Android Studio, SDK, první app
Vytvoříme první aplikaci a zkusíme vytvořit podmínky pro její spuštění.
- Android Studio
- vytvoření první aplikace (app) / Building Your First App
- příprava na spuštění app / Running Your App
Druhý téma: Spuštění app, emulátor, zařízení
Jak první app spustit? Můžeme v emulátoru nebo na fyzickým zařízení.
- spuštění app / Running Your App
- emulátor / Run on the Emulator, Using the Emulator
- Android Debug Bridge / ADB
- fyzický zařízení, USB debugging / Run on a Real Device
- root vs. nonroot přístup na zařízení / Šikovný shrnutí a sušší Wikipedie
Třetí téma: konečně trocha reverzování: vnitřnosti skompilované app
Jaká je struktura app? Jak vypadá skompilovaná app? Co je to v ní navíc za podivný soubory?
- struktura app / Android Application Modules
- Android application package / APK (fakt neexistuje oficiální link?)
- classes.dex / .dex file
- AndroidManifest.xml / App Manifest
Čtvrtý téma: základní apps pro Android
Apps pro Android, co nám pomůžou při reverzingu.
- Terminal Emulator
- File manager / Root Browser, Total Commander
- adbd Insecure (ADB daemon, běžící jako root)
- Proxy / ProxyDroid
- Hex editor / Hex Editor
Pátý téma: app po instalaci, ODEX
Co se stane s APK po instalaci? Změní se nějak soubory?
-
/data/app
path -
/data/data
path -
/data/dalvik-cache
path -
/data/media/Android/obb/com.example.app
path: APK Expansion Files
Šestý téma: Dekompilace DEX do Java kódu, disassembling
Jaký máme k dispozici nástroje? Co dokážou?
Sedmý téma: reverzing APK ručně
Jak jde ručně změnit APK soubor? Co máme za nástroje?
- backsmali, dexdump, IDA, ReDEX, Jarsigner
- Signing Your Applications
Osmý téma: C#
Vedle Javy jsou appky pro Android psaný i v C#. Jak fungují na úrovni kódu pod pokličkou? Analyzují se hůř než appky psaný v Javě? A co malware napsanej v C#?
Devátý téma: zachytávání HTTP(S) komunikace
Jak se dá na Androidu zachytávat HTTP(S) komunikace? Dokážeme nějak zabránit MITM útoku?
Desátý téma: crackme
Dejte mi vědět, jestli máte zájem řešit Android crackmes. Mám jich několik nachystaných.
Histore workshopů
Většina slidů je ve stavu původního návrhu před workshopem (proto "draft"). Chtěl jsem je ještě dodatečně upravit a vylepšit, ale zatím nestíhám.
Slidy jsou PDF, ale musí být v ZIPu, wiki nedovoluje PDFka
První workshop
Slidy: AndroidRE1 draft
- Android Studio
- První aplikace
- Spuštění aplikace
Druhej workshop
Slidy: AndroidRE2
- Spuštění app
- APK soubor
- Emulátor a Google Play
- Android Debug Bridge: ADB
- Struktura app
Třetí workshop
Slidy: AndroidRE3 draft
- Apps pro Android
- Struktura app po instalaci
- DEX, ODEX, DEODEX, WTF
Čtvrtej workshop
Slidy: AndroidRE4 draft
- Dekompilace DEX pomocí jadx
- Disassembling DEX pomocí baksmali
- Dalvik bytecode
Pátej workshop
Tenhle jsem moc nevychytal, všechno se opakovalo v následujícím workshopu.
Šestej workshop
Slidy: AndroidRE6 draft
- Ruční modifikace APK
- baksmali, dexdump, IDA, ReDEX, jarsigner
- Přebalení APK
Sedmej workshop
Slidy: AndroidRE7
- C#/Java apps runtime
- Xamarin Studio
- Unity3D Game Engine
- C# "monotated" malware (teoreticky)
Osmej workshop
Slidy: AndroidRE8 draft
- Sledování HTTP(S) komunikace
- Fiddler
- ProxyDroid
- SSL pinning
návod na přidání google play do image
přes mount
- stáhněte si z http://goo.im google apps pro kitkat, případně pro verzi, kterou používáte. Pro kk je to http://goo.im/devs/gapps/gapps-kk-20140606-signed.zip
- rozbalte jej do nějakého adresáře, já ho budu označovat x
- přimountujte system.img z ~/Android/Sdk/system-images/android-19/default/x86/ (případně verzi, kterou používáte) příkazem mount -o loop system.img /mnt
- zkopírujte všechny soubory z x/system kromě adresáře app do odpovídajících adresářů v /mnt
- (zkopíroval sem ještě x/system/app/PlusOne.apk do odpovídajícího adresáře v /mnt, ale zdá se, že to je zbytečné, a možná i příčinou problému s Google+, bod 7.)
- odmountujte /mnt
- možná se setkáte s problémem, že bude vyskakovat okno, že Google+ se vysral. V tu chvíli ideálně nainstalujte Total Commander, a v nainstalovaných aplikacích vyberte Google+, a ten odinstalujte. Na funkčnost Google Play to nemá vliv (pro jistotu se předtím ještě do toho Google Play přihlašte / registrujte, to nemám otestovaný)
přímo APK soubory
Nevyzkoušeno: http://www.flinkd.org/2013/12/installing-google-play-on-the-android-emulator-api-18/