Mobile Application Security Testing (Static Code Analysis) of Android App

39
Mobile Application Security Testing 3 Angles to perform a successful security testing 1. Client Side Checks; 2. Dynamic / Runtime / Local Storage / DB / SD Checks & 3. Static Code Analysis (a.k.a Reverse Engg.) By : Abhilash @ IBM

Transcript of Mobile Application Security Testing (Static Code Analysis) of Android App

Page 1: Mobile Application Security Testing (Static Code Analysis) of Android App

Mobile Application Security Testing

3 Angles to perform a successful security testing 1. Client Side Checks;2. Dynamic / Runtime / Local Storage /

DB / SD Checks &3. Static Code Analysis (a.k.a Reverse

Engg.) By : Abhilash @ IBM

Page 2: Mobile Application Security Testing (Static Code Analysis) of Android App

Static Code Analysis

Why Static Code Analysis is required ?

In Lay-man terms Code analysis of ApK file….

Page 3: Mobile Application Security Testing (Static Code Analysis) of Android App

M1, M4, M5, M1 : Improper Platform Usage : Android Intents,

permissions M4 : Insecure Authorization : Identifying Session

keys, session mgmt. logicM5 – Insufficient Cryptography : covering

cryptographic keys (like Md5, SHA keys) and encryption logic

Page 4: Mobile Application Security Testing (Static Code Analysis) of Android App

M7, M8, M9,M10 M7 – Client Code Quality : like buffer overflows, format

string vulnerabilities, and various other code-level mistakes

M8 – Code Tampering : covers binary patching, local resource modification, method hooking and dynamic memory modification.

M9 – Reverse Engineering : analysis of  libraries, algorithms, and other assets.

M10 – Extraneous Functionality : Hidden backdoor functionalities , commented code (accidently left by developer)

Page 5: Mobile Application Security Testing (Static Code Analysis) of Android App

7/10 M’s are covered in Static Code Analysis

Which is >50%

Page 6: Mobile Application Security Testing (Static Code Analysis) of Android App

Fetching APK

For enterprise / intranet Applications Product Team Via Online

https://apkpure.com/ http://apps.evozi.com/apk-downloader/?id=com.v

ng.g6.a.zombiehttps://play.google.com/store/apps/details?id=c

om.vng.g6.a.zombie&hl=en

Page 7: Mobile Application Security Testing (Static Code Analysis) of Android App

Conversion of APK to Source Code

Manual via dex2jar/Apktool http://stackoverflow.com/questions/12732882/reverse-engineering-from-an

-apk-file-to-a-project

Via Online http://www.javadecompilers.com/apk

Apk files are nothing but zip files. Zip files contains resources and assembled java code But unzip will miss classes.dex and resources.arsc files

Page 8: Mobile Application Security Testing (Static Code Analysis) of Android App

ANDROID APP STRUCTURE

Page 9: Mobile Application Security Testing (Static Code Analysis) of Android App

Methods to perform Code Analysis

Manual Automated

Page 10: Mobile Application Security Testing (Static Code Analysis) of Android App

Manual Code Analysis

Page 11: Mobile Application Security Testing (Static Code Analysis) of Android App

Installing and Configuring Text Editors

Android Studio (or) Sublime Text

Why Sublime Text ?Goto Anything functionality Search of Key strokesQuick File Switching

Demo

Page 12: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 13: Mobile Application Security Testing (Static Code Analysis) of Android App

What needs to be looked :

Page 14: Mobile Application Security Testing (Static Code Analysis) of Android App

Samples - hardcoded passwords

Page 15: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 16: Mobile Application Security Testing (Static Code Analysis) of Android App

Samples - Encryption

Page 17: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 18: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 19: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 20: Mobile Application Security Testing (Static Code Analysis) of Android App

Automated Code Analysis

Page 21: Mobile Application Security Testing (Static Code Analysis) of Android App

MobSF (Mobile Security Framework) QARK (Quick Android Review Kit) ApkTool & Many more…… both commercial and open source

tools available…

*These are open source tools

Page 22: Mobile Application Security Testing (Static Code Analysis) of Android App

Installing and Configuring MobSF

Demo

Page 23: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 24: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 25: Mobile Application Security Testing (Static Code Analysis) of Android App

Installing and Configuring QARK

Demo

Page 26: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 27: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 28: Mobile Application Security Testing (Static Code Analysis) of Android App

Installing and Configuring ApkTool

Demo

Page 29: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 30: Mobile Application Security Testing (Static Code Analysis) of Android App
Page 31: Mobile Application Security Testing (Static Code Analysis) of Android App

Android Intents An intent is a Messaging

Object which can be used to

request an Action from an another App Component.

App Components can be Activities ; Services ; Broadcast Receivers ; Content Providers

2 types of Intents Explicit Implicit

Page 32: Mobile Application Security Testing (Static Code Analysis) of Android App

Some of the uses of Intents are

Start a Service Launch an Activity Display a web page Display List of Contacts Broadcast a Message and Many More …………………………….

Page 33: Mobile Application Security Testing (Static Code Analysis) of Android App

Doubt !!!Y intents are used Y not APIs ?

API IntentAPI calls are Synchronous Intent based calls are

Asynchronous

API calls are compile-time binding

Intent based calls are run-time binding

BUT …. Intents can similarly be used as APIs Explicit

Page 34: Mobile Application Security Testing (Static Code Analysis) of Android App

Implicit Intents Implicit intents are often used to activate components in other applications.

Doesn’t Specify the Component…

Page 35: Mobile Application Security Testing (Static Code Analysis) of Android App

Common Flaws

Dangerous to send/broadcast sensitive information / data across implicit intents Since unprivileged implicit intent can use the

same data Intercept your data

Malicious Injection at Broadcast Level Activity Level Service Launch

Page 36: Mobile Application Security Testing (Static Code Analysis) of Android App

Explicit Intents

An explicit intent is most commonly used when launching an activity (from another one) within the same application. 

Specifies the component

Page 37: Mobile Application Security Testing (Static Code Analysis) of Android App

Example

Page 38: Mobile Application Security Testing (Static Code Analysis) of Android App

Next Time

Playing around Intents Deep-drive in Intent Filters Malicious Intents Intent Spoofing and intent traffic analysis Prevention techniques

Self signing of Android app for reverse engg.

Page 39: Mobile Application Security Testing (Static Code Analysis) of Android App

Thankyou….