Download White Paper: Pentesting Android Apps on Mac

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
White Paper: Pentesting
Android Apps on Mac
by
Adrian Pastor
Public Information
MINERVA Information Security Inc - 37 N Orange Ave Ste 500, Orlando, FL 32801, USA
MINERVA Information Security Ltd - Prama House, 267 Banbury Rd, Oxford OX2 7HT, UK
19-Jul-15
www.minerva-is.net – Public Information
2
Table of Contents
Executive Summary ...................................................................................... 3
Introduction .................................................................................................... 4
Android SDK Setup....................................................................................... 4
First Emulator Run ....................................................................................... 6
Importing Self-signed CA Certificate ...................................................... 7
Emulator Restart ........................................................................................ 13
Cleaning Up .................................................................................................. 14
Acknowledgments ...................................................................................... 15
About MINERVA .......................................................................................... 15
Works Cited ................................................................................................. 16
Tools Mentioned .......................................................................................... 16
19-Jul-15
www.minerva-is.net – Public Information
3
Executive Summary
Mobile application penetration testing has experienced a significant increase in
demand over the last few years. This is due to the ever-growing number of
smartphone users worldwide who use apps to consume products and services
from the comfort of their thumbs. By 2016, the number of smartphone users is
predicted to reach 2.16 billion (eMarketer); that’s almost 30% of the world’s
population predicted for 2016 (GeoHive). Of all the different smartphone
operating systems, Android continues to have the greatest market share,
accounting for more than 50% of the market share worldwide as of 2015
(McGrath).
Demand for mobile app pentesting is likely to continue to grow as merchants and
service providers continue to push critical functionality to their apps. This includes
transmitting, processing, and storing personally-identifiable information (PII),
cardholder and bank account data.
Being able to read and modify messages transmitted by the mobile app in scope
for security testing is one of the most important prerequisites for a successful
engagement. The technical procedures documented in this paper are written for
developers and pentesters who need to accomplish such task. The author
assumes that the app in scope was developed for the Android operating system
and that the tester is a Mac user with no access to an Android handset.
19-Jul-15
www.minerva-is.net – Public Information
4
Introduction
The method documented in this paper assumes the tester is a Mac OS X user
who has installed either the free or professional edition of Burp Suite. It has been
optimized to meet the following requirements:
•
No Integrated Development Environment (IDE) such as Android Studio or
Eclipse is installed
•
Only limited storage capacity is available to set up the testing
environment
•
Tester has no budget to purchase additional software
•
Tester has no access to an Android handset
•
There is limited time to set up the testing environment
The scope of this paper is limited to interception of unencrypted and encrypted
communications of Android apps using the Burp intercepting proxy. Local app
security checks such as application decompiling and debugging were considered
out of scope. The procedures below can also be used as guidance when other
proxies such as Proxy.app or ZAP are used. Windows users are recommended to
read Kunjan Shah’s excellent paper on the subject (Shah).
Android SDK Setup
Make sure you have the latest version of Java Runtime Environment (JRE) and
Java Development Kit (JDK) from www.oracle.com installed, which at time of
writing is version 8:
$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
$ javac -version
javac 1.8.0_45
Install stand-alone SDK tools for Mac from developer.android.com. E.g. androidsdk_r24.3.3-macosx.zip. Unzip the file into your directory of preference, home in
our case:
19-Jul-15
www.minerva-is.net – Public Information
5
Next, install Platform-tools, Build-tools, SDK Platform, and the ARM EABI v7a (or
newer if available) System Image using the SDK manager. If you don’t have the
latest version of JDK you won’t see these packages as available on the SDK
Manager:
$ ~/android-sdk-macosx/tools/android
Click Install button and accept license for each package selected:
19-Jul-15
www.minerva-is.net – Public Information
6
Before we can run the emulator we need to create an Android Virtual Device
(AVD). First, list the target platforms available. Only one should be shown in our
case since we only installed one System Image (ARM EABI v7a):
First Emulator Run
List available targets:
$ ~/android-sdk-macosx/tools/android list targets
Available Android targets:
---------id: 1 or "android-22"
Name: Android 5.1.1
Type: Platform
API level: 22
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854,
WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : default/armeabi-v7a
We can now create an AVD. If your target ID is not 1, replace the value below as
needed:
19-Jul-15
www.minerva-is.net – Public Information
7
$ ~/android-sdk-macosx/tools/android create avd -n testavd -t 1
Importing Self-signed CA Certificate
Next we need to import Burp’s self-signed CA certificate as a trusted root into
the AVD. Make sure your OS X browser (not the emulator’s) is configured to use
Burp as a proxy (loacalhost:8080 by default). Visit http://burp/cert and save
‘cacert.der’ file:
Next, convert the downloaded DER-encoded certificate to ASCII PEM format:
$ openssl x509 -inform der -in cacert.der -out cacert.crt
Then we need to create an SD card. The SD card will be used by the AVD to
access the converted certificate (cacert.crt):
$ ~/android-sdk-macosx/tools/mksdcard -l testsdcard 9M ~/androidsdcard
Confirm SD card has been created successfully:
$ file ~/androidsdcard
/Users/user/androidsdcard: x86 boot sector, code offset 0x5a, OEM-ID "MSWIN4.1", Media
descriptor 0xf8, sectors 18432 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 143, reserved3
0x800000, serial number 0x1b044206, label: " SDCARD"
19-Jul-15
www.minerva-is.net – Public Information
8
We can finally run the emulator (the emulator is likely to take a while to load the
virtual device):
$ ~/android-sdk-macosx/tools/emulator -avd testavd -sdcard ~/androidsdcard
19-Jul-15
www.minerva-is.net – Public Information
9
Make sure that netcat (nc) is allowed to receive incoming connections by your OS
X firewall:
On your OS X terminal, run the following command on the directory where
‘cacert.crt’ is located. It will serve the Burp’s CA certificate using netcat:
$ nc -vv -l 1111 < cacert.crt
Back on your Android adb shell, type the following command, where 10.1.2.3 is
the IP address of your MAC (W)LAN interface:
root@generic:/ # nc 10.1.2.3 1111 > /sdcard/cacert.crt
If you haven’t waited long enough for the emulator to load the AVD, you will
receive the following permission error when trying to save the certificate to the
SD card. The solution is to simply wait a bit longer and try both of the above
netcat commands again:
/system/bin/sh: can't create /sdcard/cacert.crt: Read-only file system
19-Jul-15
www.minerva-is.net – Public Information
10
On the Android emulator, go to Install certificate Settings / Security / Credential
storage / Install from SD card:
19-Jul-15
Select ‘cacert.crt’:
www.minerva-is.net – Public Information
11
19-Jul-15
Set PIN if prompted:
www.minerva-is.net – Public Information
12
19-Jul-15
www.minerva-is.net – Public Information
13
Confirm that Burp’s CA certificate has been successfully installed under Settings
/ Security / Credential storage / Trusted credentials / User:
Emulator Restart
Restart emulator with proxy settings enabled to use Burp:
$ ~/android-sdk-macosx/tools/emulator -avd testavd -sdcard ~/androidsdcard -http-proxy
http://localhost:8080
On your OS X terminal, install APK of app in scope for your pentest:
$ ~/android-sdk-macOS X/platform-tools/adb install ~/my-app.apk
Congratulations, you should now be able to see traffic from your Android app on
Burp, including HTTPS traffic:
19-Jul-15
www.minerva-is.net – Public Information
Cleaning Up
Remove APK and SD card once the pentest has ended:
$ ~/android-sdk-macosx/platform-tools/adb shell 'pm list packages -f' |grep -i yourappname
$ ~/android-sdk-macosx/platform-tools/adb uninstall apppackagename
$ rm ~/androidsdcard
14
19-Jul-15
www.minerva-is.net – Public Information
15
Acknowledgments
The author would like to thank Jan Fry and Monsy Carlo for their kind feedback.
About MINERVA
MINERVA is a boutique cybersecurity consultancy providing tailored services that
align with your business goals. We identify security threats and help clients
mitigate the associated risks.
In today’s rapidly evolving world no two businesses are alike and we believe that
no two security assessments should be either. Our consultants have all worked
with organisations across a wide range of industries from tech start-ups to those
listed on the FTSE 100 and Fortune 500. Our broad experience, along with our
desire to understand your business objectives, allows for the development of a
personalized security approach that can safeguard your information and
reputation.
MINERVA is a privately-owned, vendor-neutral company with no external
investors, and no sales targets. This allows us more time to focus on your needs
and provide a quality service.
19-Jul-15
www.minerva-is.net – Public Information
16
Works Cited
eMarketer. 2 Billion Consumers Worldwide to Get Smart(phones) by 2016. 11
December 2014. <http://www.emarketer.com/Article/-/1011694>.
GeoHive. Population of the entire world, yearly, 1950 - 2100. 7 July 2015
<http://www.geohive.com/earth/his_history3.aspx>.
Shah, Kunjan. Penetration Testing Android Applications. 2010.
<http://tinyurl.com/p2zrolc>.
McGrath, Felim. Android mobile now has huge lead over iOS. 10 June 2015.
<http://tinyurl.com/opkql94>.
Tools Mentioned
Android SDK tools <http://developer.android.com/sdk/index.html#Other>
Burp <https://portswigger.net/burp/download.html>
Java JRE and JDK <http://oracle.com/technetwork/java/javase/downloads/>
Proxy.app <http://www.proxyapp.io>
ZAP <https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project>