AndroidRE

From base48
Jump to: navigation, search


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.

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í.

  1. Android Studio
  2. vytvoření první aplikace (app) / Building Your First App
  3. 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í.

  1. spuštění app / Running Your App
  2. emulátor / Run on the Emulator, Using the Emulator
  3. Android Debug Bridge / ADB
  4. fyzický zařízení, USB debugging / Run on a Real Device
  5. 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?

  1. struktura app / Android Application Modules
  2. Android application package / APK (fakt neexistuje oficiální link?)
  3. classes.dex / .dex file
  4. AndroidManifest.xml / App Manifest

Čtvrtý téma: základní apps pro Android

Apps pro Android, co nám pomůžou při reverzingu.

  1. Terminal Emulator
  2. File manager / Root Browser, Total Commander
  3. adbd Insecure (ADB daemon, běžící jako root)
  4. Proxy / ProxyDroid
  5. 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?

  1. /data/app path
  2. /data/data path
  3. /data/dalvik-cache path
  4. /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?

  1. dekompiler / jadx
  2. disassembler / smali

Sedmý téma: reverzing APK ručně

Jak jde ručně změnit APK soubor? Co máme za nástroje?

  1. backsmali, dexdump, IDA, ReDEX, Jarsigner
  2. 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#?

  1. Xamarin Studio
  2. Unity3D Game Engine

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

  1. 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
  2. rozbalte jej do nějakého adresáře, já ho budu označovat x
  3. 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
  4. zkopírujte všechny soubory z x/system kromě adresáře app do odpovídajících adresářů v /mnt
  5. (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.)
  6. odmountujte /mnt
  7. 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/