QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION...

23
QARK

Transcript of QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION...

Page 1: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

QARK

Page 2: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

WHO are we?

Penetration Testers at LinkedIn

• Staff Information Security Engineer

Tony Trummer

• Senior Information Security Engineer

Tushar Dalvi

Page 3: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

APK Structure

APK resources.arsc

Pre-compiled resources;

binary xml

/res

Resources not in resources.arsc

Images

Layouts

Android

Manifest.xml

Permissions

Component exporting

Name, version, etc

classes.dex

Dalvik Bytecode

/META-INF

MANIFEST.MF

CERT.RSA

CERT.SF

/lib

Processor specific, compiled C/C++

libraries

/assets

Fonts, file resources

Loaded via Asset Manager

Page 4: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

REVERSING APKs Get

Manifest • apktool d foo.apk

Unzip APK

• change apk to zip; unzip foo.zip

Dalvik Bytecode • dex2jar classes.dex

Java Bytecode

• JD-GUI; Save all classes

Java Class files

Page 5: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

Activity

OnCreate()

OnStart()

OnResume()

OnPause()

OnStop()

OnDestroy()

OnRestart()

Service

OnCreate()

OnBind()

OnStartCommand()

OnUnbind()

OnDestroy()

Provider

.query()

.update()

.delete()

.insert()

Receiver

.OnReceive()

COMPONENTS

Page 6: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

COMMUNICATION

APK

WebViews

Intents

Network Requests

Deeplink URLs

Binder

AIDL

Page 7: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

ANDROID ISSUES

Many sources – all the web bugs ++

SSL/TLS fail – no ssl/tls & cert validation

Lots of old devices – slow updating

client-side fail – no one will ever know…

Page 8: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

WHAT IS QARK?

Quick Android Review Kit

An improvement on other ideas/tools

Lots of (horribly written) Python

A pinch of innovation

An auditing and attack framework

Page 9: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

QARK MOTIVATION

We’re lazy Our boss is lazy

Developers are extremely lazy

and ignore warnings

We don’t like hate repeating

bugs

We have lots of apps to protect

Lots of small dev shops

(aka no security)

Page 10: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

QARK’s mission

Raise the bar for Android security

Knowledge sharing

Free SCA with validation

Community involvement

Motivate Google?

Page 11: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

UNDER THE HOOD

Parsing: PLYJ, BeatifulSoup, Minidom

REVERSING: Procyon, JD-CORE,dex2jar, apktool

Code: Python

Tools & Building: ANDROID SDK

Page 12: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

DATA ACQUISITION

Automates APK retrieval

Decompresses APK

Converts AndroidManifest.xml to text

Parses AndroidManifest.xml

Page 13: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

PARSE STRUCTURE

Identifies permissions issues, exported components, supported versions, etc.

Parses Java classes

Maps Manifest to classes

Locates “entry point” methods

Looks for sources of user-supplied data

Page 14: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

SOURCE TO SINK

FOLLOW POTENTIALLY TAINTED INPUT

LOOK FOR MODIFIERS

RECORDS ANY “SINKS” ENCOUNTERED

Page 15: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

REVIEW COMMS

Combines the information gathered with manifest details for later use

Examines WebView configurations and provides templated HTML files for validation of vulnerabilities

Looks for vulnerabilities originating from within the app, inspecting Broadcast, Sticky and Pending Intents

Page 16: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

FINAL CHECKS Looks for WORLDREADABLE and WORLDWRITEABLE files

Looks for tapjacking defenses

Looks for X.509 certificate validation issues

Creates a “deliverable” HTML report of findings

Page 17: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

DEMO TIME !!

Page 18: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

UNIQUE FEATURES

Multiple decompilers to provide better results

Builds an APK for manual testing

swiss-army knife style set of functionalities

creates ADB commands to exploit discovered vulnerabilities

custom exploit APK facilitates point-and-click pwnage

Page 19: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

QARK Is (NOT) YET

A Forensics Tool

A DYNAMIC ANALYSIS TOOL

PERFECT

FINISHED

Page 20: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

FUTURE PLANS Dynamic analysis functionality

Contribute to improve libraries and tools

Handle obfuscated code

Smali inspection

Native code support

Ask for your help

Page 21: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

WHERE TO GET QARK?

LinkedIn’s Git repo

https://github.com/linkedin/qark

Page 22: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

ACKNOWLEDGEMENTS

MWR Labs for Drozer (inspiration)

Rafay Blaloch, et al, for the WebView exploits

NVisium for the TapJacking code

The authors and maintainers of all the opensource projects used in QARK

Jason Haddix, Sam Bowne, et al, for supplying some vulnerable APKs

Page 23: QARK - Black Hat | Homeapktool Code: Python Tools & Building: ANDROID SDK. DATA ACQUISITION Automates APK retrieval Decompresses APK Converts AndroidManifest.xml to text Parses AndroidManifest.xml.

CONTACT INFO

www.secbro.com

•  www.linkedin.com/in/tonytrummer @SecBro1

Tony Trummer

•  www.linkedin.com/in/tdalvi @tushardalvi

Tushar Dalvi