testing android security - jose manuel ortega candel - codemotion amsterdam 2016

88
Testing Android Security José Manuel Ortega @jmortegac AMSTERDAM 11-12 MAY 2016

Upload: codemotion

Post on 15-Jan-2017

404 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

Testing Android SecurityJosé Manuel Ortega @jmortegac

AMSTERDAM 11-12 MAY 2016

Page 3: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

AGENDA

▪ Development Cycle▪ Static and Dynamic Analysis▪ Components Security▪ Hybrid Automatic tools▪ Best Practices & OWASP

Page 4: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

DEVELOPMENT CYCLE

Page 5: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

WHITE BOX /BLACK BOX

✓✓✓

✓✓✓

Page 6: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

TESTING ANDROID SECURITY

Page 7: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

FORENSICS

Page 8: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

FORENSICS

▪▪

▪▪

▪▪

Page 9: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

STATIC ANALYSIS

✓✓✓✓✓✓✓

Page 10: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

CODE REVIEW / SOURCE CODE ANALYSIS

Page 11: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

ANDROID LINT

Page 12: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

ANDROID STUDIO INSPECT CODE

Page 14: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

ANDROID SONAR PLUGIN >RULES

Page 15: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

SONAR SECURITY

Page 17: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

QARK

▪ Quick Android Review Kit

▪ https://github.com/linkedin/qark

▪ Static code analysis tool

▪ Look for potential vulnerabilities

Page 18: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

QARK

▪ Identifies permissions and exported components(activities,services..) on Manifest

▪ Looks for WORLD_READABLE and WORLD_WRITABLE files

▪ Looks for X.509 certificates validation issues

Page 19: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

QARK

Page 20: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

QARK REPORT

Page 21: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

REVERSE ENGINEERING

▪ Decompile dalvik to smali▪ classes.dex in APK▪ APKTOOL▪ DEX2JAR▪ Java Decompiler

Page 22: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

APK STRUCTURE

Page 24: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

JADX-GUI

Page 25: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

APKTOOL

Page 26: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

DYNAMIC ANALYSIS TOOLS

Page 27: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

WIRESHARK

Page 28: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

BURP SUITE

▪ Intercepting network traffic▪ HTTP proxy tool▪ Able to intercept layer traffic and allows users to

manipulate the HTTP request and response

Page 29: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

DROZER

▪ https://labs.mwrinfosecurity.com/tools/drozer/▪ Find vulnerabilities automatically▪ Automate security testing▪ Interact with your Apps with debugging

disabled

Page 30: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

INSIDE DROZER

Page 31: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

DROZER

Page 32: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

DROZER PACKAGE INFO

▪ app.package.info

Page 33: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

DROZER COMMANDS

Page 34: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

DROZER CONTENT PROVIDERS

Page 35: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

FINDING SQL INJECTION IN CONTENT PROVIDERS

Page 36: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

EXPLOITING SQL INJECTION VULNERABILITY

Page 37: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

ANDROID MANIFEST

android:debuggable=true

android:exported=true

Page 38: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

ANDROID MANIFEST EXPORTED ATTRIBUTE

Page 39: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

COMPONENTS SECURITY

▪ AndroidManifest.xml▪ Activities▪ Content Providers▪ Services▪ Shared Preferences▪ Webview

Page 40: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

LOG INFORMATION

public static final boolean SHOW_LOG = BuildConfig.DEBUG;

public static void d(final String tag, final String msg) {if (SHOW_LOG)

Log.d(tag, msg);}

Page 41: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

THRID PARTY LIBRARIES

Page 42: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

VULNERABILITIES IN CORDOVA 3.5

Page 43: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

SECURITY IN CONTENT PROVIDERS

▪ Components provide a standardized interface for sharing data between applications

▪ URI addressing scheme▪ Can perform queries equivalent to SELECT,

UPDATE,INSERT, DELETE

Page 44: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

SQLCIPHER

▪ SQLCipher is a SQL extension that provides transparent AES encryption of database files

▪ 256-bit AES Encrypt SQLite database▪ http://sqlcipher.net/sqlcipher-for-android

Page 45: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

SECURED PREFERENCES

▪ https://github.com/scottyab/secure-preferences▪ Encrypt your app’s shared preferences

▪ Android Share Preferences wrapper that provides encryption for keys and values

Page 46: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

SECURED PREFERENCES

Page 47: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

DATA STORAGE

Page 48: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

PROTECTING DATA FILES

Page 49: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

SECURE COMMUNICATIONS

▪ Ensure that all sensitive data is encrypted

▪ Certificate pinning for avoid MITM attacks

Page 50: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

CERTIFICATES

SSLSocketFactory.ALLOW_ALLHOSTNAME_VERIFIER

TrustManager where checkServerTrusted() always returns true

Page 51: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

CERTIFICATE PINNING

Page 52: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

X.509 CERTIFICATES

Page 53: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

HTTPS Connection

Page 54: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

HTTPS Connection

Page 55: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

ENCRYPT NETWORK REQUESTS

▪ Best practice is to always encrypt network communications

▪ HTTPS and SSL can protect against MitM attacks and prevent casual sniffing traffic.

▪ Server certificate validity is checked by default

Page 56: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

VALIDATE SERVER CERTIFICATE

▪ https://www.ssllabs.com/ssltest

Page 57: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

CHECK CERTIFICATES TOOLS

▪ OpenSSL

▪ Keytool

▪ Jarsigner

Page 58: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

Runtime Permissions

▪ All permissions granted at install time▪ Dangerous permissions require user

confirmation▪ Prompt for dangerous permissions at

runtime▪ Granted/revoked by permission group▪ Managed per app, per user

▪ /data/system/users/0/runtime-permissions.xml

Page 59: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

Group permissions on Android M

Page 60: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

Permissions FLOW on Android M

Page 61: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

Permissions on Android M

Page 62: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

Permissions on Android M

Page 63: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

OBFUSCATION

▪ The obfuscator can use several techniques to protect a Java/Android application:

▪ change names of classes, methods, fields▪ modify the control flow▪ code optimization▪ dynamic code loading▪ change instructions with metamorphic technique

Page 64: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

PROGUARD

▪ File shrinker: detects and removes unused classes, fields, methods,and attributes

▪ Optimizer: optimizes bytecode and removes unused instructions

▪ Obfuscator: renames classes, fields, and methods using short meaningless names

Page 65: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

OBFUSCATION WITH PROGUARD

Page 67: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

HYBRID AUTOMATIC ONLINE TOOLS

▪ SandDroid▪ ApkScan▪ Visual Threat▪ TraceDroid▪ CopperDroid▪ APK Analyzer▪ ForeSafe▪ AndroTotal▪ NowSecure Lab

Page 68: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

VULNERABILTIY ANALYSIS

Page 69: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

HYBRID AUTOMATIC ONLINE TOOLS

▪ http://sanddroid.xjtu.edu.cn/#home

Page 70: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

SANDROID

Page 71: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

SANDROID

Page 74: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

NOWSECURE LAB

Page 75: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

NOWSECURE LAB

Page 76: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

BEST PRACTICES

▪ Don’t hardcode sensitive information▪ Don’t store sensitive information ▪ Don’t store at easily readable location like

memory card▪ Encrypt the stored data▪ Implement SSL

Page 77: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

BEST PRACTICES

▪ Protect the webserver against application layer attacks

▪ Prefer encryption over encoding or obfuscation▪ Sanitize inputs, use prepared statements

(protection against sql injection)

Page 78: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

BEST PRACTICES

Page 79: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

Android Secure Coding Checklist

▪ Use least privilege in request permissions▪ Don’t unnecessarily export components▪ Handle intents carefully▪ Justify any custom permissions▪ Mutually authenticate services▪ Use APIs to construct ContentProvider URIs▪ Use HTTPS▪ Follow best practices from OWASP project http://owasp.

org/index.php/OWASP_Mobile_Security_Project

Page 80: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

OWASP MOBILE TOP 10 RISKS

Page 81: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

OWASP MOBILE TOP 10 RISKS

Page 82: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

Open Android Security Assesment Methodology

Page 83: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

PENTESTING TOOLS / SANTOKU LINUX

ooo

Page 84: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

PENTESTING TOOLS / NOWSECURE

▪ https://www.nowsecure.com/resources/freetools/

Page 86: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

BOOKS

Page 87: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

BOOKS

Page 88: Testing Android Security - Jose Manuel Ortega Candel - Codemotion Amsterdam 2016

Thanks!

@jmortegac

AMSTERDAM 9-12 MAY 2016