23
QARK

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

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

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