android reverse-engineering - 0xff€¦ · android reverse-engineering review and modify closed...

35
Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Upload: others

Post on 23-Jun-2020

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Android reverse-engineering review and modify closed source apps

Magnus, Tech-Evangelist @ 0xFF

Page 2: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Why?

0xFF

Page 3: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

review/auditpatch/modify

exploit

0xFF

Page 4: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

0xFF

Page 5: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Disclaimer

0xFF

Page 6: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

APK

0xFF

Page 7: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

ManifestResources

Code

0xFF

Page 8: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

ManifestResources

Code

0xFF

Page 9: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

ManifestResources

Code

0xFF

Page 10: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

ActivitiesServices

Content providersIntents

0xFF

Page 11: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

demo

0xFF

Page 12: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Java/Kotlin > DEX > JIT/Dalvik > ARM/x86/etc

Java/Kotlin > DEX > OAT > ART > ARM/x86/etc

0xFF

Page 13: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

DEX > Smali

0xFF

Page 14: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

.class public LHelloWorld;

.super Ljava/lang/Object;

.method public static main([Ljava/lang/String;)V .registers 2

sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;

const-string v1, "Hello World!"

invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V

return-void.end method

0xFF

Page 15: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Data-types

https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields

0xFF

Page 16: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Instructions

https://source.android.com/devices/tech/dalvik/dalvik-bytecode0xFF

Page 17: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Smali registers

v0, v1, v2… - local registersp0, p1, p2… - method argument alias

(all 32-bit, so how to pass a 64-bit Long?)

0xFF

Page 18: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

.class public LHelloWorld;

.super Ljava/lang/Object;

.method public static main([Ljava/lang/String;)V .registers 2

sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;

const-string v1, "Hello World!"

invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V

return-void.end method

0xFF

Page 19: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Obfuscation

Ball.getColor() == a.a()

0xFF

Page 20: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

demo

0xFF

Page 21: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

debugging smali

0xFF

Page 22: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

grep is your friend

0xFF

Page 23: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

grep is your friend

grep -inr facebook.com --include=*.smali

-i ignores character case-n display line numbers-r recursive, search sub folders--include=*.smali only search files matching--color=always add coloring

0xFF

Page 24: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

grep is your friend – Trackers

facebook google.com firebase

urbanairship crashlytics bugfender

track* analytic* ads

0xFF

Page 25: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

grep is your friend – Privacy intrusive API calls

QueryIntentActivities getRunningAppProcesses

ActivityManager PackageManager WifiManager

SensorManager BluetoothAdapter

Address LocationManager

TelephonyManager AdvertisingIdClient0xFF

Page 26: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

grep is your friend – File I/O

file read write

directory sdcard

document

0xFF

Page 27: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

grep is your friend – Net I/O

http http:

connect socket uri address

post .com/.net loadUrl

0xFF

Page 28: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

grep is your friend – Scary stuff

loadLibrary native

install

addJavaScriptInterface

0xFF

Page 29: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

demo

0xFF

Page 30: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

OWASP Mobile Top 10

0xFF

Page 31: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Exploiting GoatDroid

0xFF

Page 32: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Tools used in this talk(free and open source)

ADBApkTool

uber-apk-signerApkStudio

IdeaIdeasmali

0xFF

Page 33: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Profiling tools(root required)

FridaIntrospyXposed

0xFF

Page 34: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

Automated tools

Mobile Security Framework (MobSF)

Quick Android Review Kit (QARK)

Drozer

0xFF

Page 35: Android reverse-engineering - 0xFF€¦ · Android reverse-engineering review and modify closed source apps Magnus, Tech-Evangelist @ 0xFF

ResourcesSmali/Smalideahttps://github.com/JesusFreke/smali/

Dalvik instructionshttps://source.android.com/devices/tech/dalvik/dalvik-bytecode

ADBhttps://developer.android.com/studio/releases/platform-tools

ApkStudiohttps://github.com/vaibhavpandeyvpz/apkstudio

OWASP Mobile Top 10https://www.owasp.org/index.php/Mobile_Top_10_2016-Top_10

0xFF

Thank [email protected]

@0xFFse https://0xff.se/