Logo
Mobile App Pentesting

Android Application Penetration Testing Methodology

Android Application Penetration Testing Methodology

Short answer: Android penetration testing methodology follows five phases — reconnaissance and setup, static analysis, dynamic analysis, network traffic interception, and reporting — each mapped to the OWASP Mobile Application Security Verification Standard (MASVS) to ensure full coverage of the attack surface.

TL;DR: A rigorous Android pentest is not a tool dump; it is a structured methodology that moves from reconnaissance through static and dynamic analysis to traffic interception, producing findings mapped to OWASP MASVS controls before any report is written.

Key Takeaways - Always work in a dedicated test environment — rooted Android emulator or physical device — under a signed scope agreement. - Static analysis (APK decompilation, manifest review, source code inspection) exposes issues that runtime testing misses. - Dynamic analysis (runtime behavior, hooking with Frida) catches logic flaws and runtime data exposure that static analysis cannot see. - OWASP MASVS divides controls into MASVS-STORAGE, MASVS-CRYPTO, MASVS-AUTH, MASVS-NETWORK, MASVS-PLATFORM, and MASVS-CODE — structure your findings around these. - 75% of mobile applications contain at least one security flaw according to multiple 2024–2025 research reports (Zimperium Global Mobile Threat Report 2024), which is why methodology-driven testing matters more than quick scans.

Why methodology beats tool-first testing

Why methodology beats tool-first testing

A common trap in Android pentesting is opening a terminal, running MobSF, and calling the scan a pentest. Automated scanners miss business-logic issues, insecure deep-link handling, and runtime bypass flaws. A methodology-first approach ensures you cover the entire OWASP MASVS control set, not just what a scanner flags.

Research consistently shows the problem is widespread. Multiple 2024–2025 security reports find that 75% of applications contain at least one security flaw (Zimperium Global Mobile Threat Report 2024) and 92% of analyzed mobile work apps use weak or flawed cryptographic methods (Infosecurity Magazine). Thorough methodology is what separates a meaningful engagement from a checkbox exercise.

The OWASP Mobile Application Security Testing Guide (MASTG) is the authoritative test procedure reference. Read it before any engagement.

Phase 1 — Reconnaissance and environment setup

Phase 1 — Reconnaissance and environment setup

Understand the target application

Before touching the APK, gather context: - What does the app do? What data does it process? - Does it use a backend API? Cloud storage? Third-party SDKs? - What is the declared minimum and target Android SDK version? - Is this a consumer app, enterprise app, or banking/fintech app? Risk profile differs.

Review the Google Play Store listing, privacy policy, and any available developer documentation. This shapes which MASVS controls are highest priority.

Set up your test environment

You need one of: - A physical Android device with an unlocked bootloader and custom recovery (preferred for hardware-backed key testing) - A rooted Android emulator — Android Studio's AVD works for most cases; Genymotion offers more flexibility for older API levels

Install these core tools before the engagement begins:

Tool Purpose
ADB (Android Debug Bridge) Device communication, APK install, logcat
Apktool APK decompilation and repackaging
jadx Java/Kotlin decompilation to readable source
MobSF Automated static and dynamic analysis
Frida Dynamic instrumentation and runtime hooking
Burp Suite HTTP/HTTPS traffic interception
objection Frida-based runtime exploration CLI

Extract the APK

If you have the APK from the client, use it directly. Otherwise pull it from a device:

adb shell pm list packages | grep <appname>
adb shell pm path <package.name>
adb pull /data/app/<package.name>-<hash>/base.apk ./target.apk

Phase 2 — Static analysis

Phase 2 — Static analysis

Static analysis examines the app without executing it. It covers four areas: manifest review, code review, resource inspection, and binary protection checks. For a detailed comparison of both approaches, see static vs dynamic analysis.

Manifest review

The AndroidManifest.xml declares permissions, activities, services, broadcast receivers, and content providers. Misconfigurations here are frequently exploitable.

apktool d target.apk -o target_decoded/
cat target_decoded/AndroidManifest.xml

Look for: - Exported components (android:exported="true") that do not require permissions - Overly broad permissions (READ_CONTACTS, ACCESS_FINE_LOCATION) not justified by functionality - android:debuggable="true" in a release build - android:allowBackup="true" — enables ADB backup of app data - android:usesCleartextTraffic="true" — permits HTTP

Code review with jadx

Decompile the APK to Java/Kotlin source for manual review:

jadx -d target_source/ target.apk

Priority targets in the decompiled source: - Hardcoded secrets: API keys, tokens, passwords, private keys embedded in strings - Cryptographic implementations: Look for ECB mode, MD5/SHA-1 for password hashing, insecure random number generation - SQL queries: Concatenated strings in database calls indicate SQL injection risk - WebView configuration: setJavaScriptEnabled(true), addJavascriptInterface(), and setAllowFileAccess(true) combinations - Log statements: Log.d() or Log.e() calls that output sensitive data in production builds

Binary protection checks

Check whether the app has basic binary hardening: - Is the APK signed with a v2 or v3 signature scheme? - Does the app implement certificate pinning? - Is root detection present? - Is obfuscation applied (ProGuard/R8)?

MobSF automates many of these checks and produces a structured report. Use it as a starting point, not a finish line. For installation and workflow details, see the MobSF and Apktool guide.

Android pentest phases and percentage of total engagement time recommended A horizontal bar chart showing five Android pentest phases with recommended time allocation: Recon and setup 15%, Static analysis 25%, Dynamic analysis 30%, Traffic interception 20%, Reporting 10%. Android pentest — recommended time allocation by phase Recon & setup 15% Static analysis 25% Dynamic analysis 30% Traffic interception 20% Reporting 10% Based on OWASP MASTG engagement guidance and practitioner estimates.
Figure 1. Recommended time allocation across Android pentest phases. Dynamic analysis typically requires the most active effort.
Phase Recommended time allocation Primary MASVS domain
Recon and setup 15% All
Static analysis 25% MASVS-CODE, MASVS-CRYPTO, MASVS-STORAGE
Dynamic analysis 30% MASVS-AUTH, MASVS-PLATFORM, MASVS-STORAGE
Traffic interception 20% MASVS-NETWORK
Reporting 10% All

Phase 3 — Dynamic analysis

Dynamic analysis tests the app while it runs. This phase catches issues that static review cannot detect: runtime storage of sensitive data, authentication bypass, and session management flaws.

Runtime data inspection

Once the app is running on your test device, inspect what it writes to disk:

# Check shared preferences
adb shell run-as <package.name> ls shared_prefs/
adb shell run-as <package.name> cat shared_prefs/<filename>.xml

# Check the SQLite databases
adb shell run-as <package.name> ls databases/

# Watch live log output for sensitive data leakage
adb logcat | grep -i "password\|token\|secret\|key"

Sensitive data written in plaintext to shared preferences, external storage, or SQLite is a direct MASVS-STORAGE finding.

Runtime instrumentation with Frida

Frida lets you hook into running app methods, inspect arguments and return values, and bypass runtime defenses like root detection and SSL pinning:

# Start Frida server on device (requires root)
adb push frida-server /data/local/tmp/
adb shell chmod 755 /data/local/tmp/frida-server
adb shell /data/local/tmp/frida-server &

# List running processes
frida-ps -U

# Attach and run a script
frida -U -f <package.name> -l bypass-ssl-pinning.js

Use objection for a higher-level CLI over common tasks: SSL pinning bypass, root detection bypass, memory dumping, and activity exploration.

objection -g <package.name> explore

Android's intent system is a frequent source of vulnerabilities. Test exported activities and broadcast receivers directly via ADB:

# Launch an exported activity with crafted intent data
adb shell am start -n <package.name>/<activity.name> \
  -d "deeplink://action?param=../../etc/passwd"

# Send a broadcast to an exported receiver
adb shell am broadcast -a <custom.action> \
  --es "data" "injected_value"

Phase 4 — Network traffic interception

Setting up Burp Suite as a proxy

Configure your Android device's WiFi proxy to point to your Burp listener (default: 8080). Install the Burp CA certificate on the device to intercept HTTPS.

On Android 7+, user-installed CA certificates are not trusted by app network security configurations by default. You have two options: 1. Root the device and install the Burp cert to the system certificate store 2. Patch the APK to add <certificates src="user"/> to the network security config, repackage with Apktool, and sign with a new keystore

Testing for certificate pinning bypass

If the app implements certificate pinning, Burp interception will fail. Test whether pinning is in place, then bypass it for analysis:

# Use the objection SSL pinning bypass
objection -g <package.name> explore
android sslpinning disable

# Or use a Frida script
frida -U -f <package.name> -l frida-ssl-bypass.js

Analyze intercepted traffic for: - Plaintext HTTP requests carrying sensitive data - Authentication tokens sent in URL parameters rather than headers - Weak or missing security headers - Verbose error responses leaking backend information

Phase 5 — Reporting

Mapping findings to OWASP MASVS

Every finding should reference the relevant MASVS control from the OWASP MASVS. This makes the report immediately actionable for developers and gives clients a recognized benchmark.

MASVS domain Example finding
MASVS-STORAGE Sensitive data written in plaintext to shared preferences
MASVS-CRYPTO AES-ECB mode used for data encryption
MASVS-AUTH Broken authentication bypass via exported activity
MASVS-NETWORK SSL pinning absent; traffic interceptable with user CA
MASVS-PLATFORM Exported content provider accessible without permission
MASVS-CODE Hardcoded API key in strings.xml

Report structure

A professional pentest report includes: 1. Executive summary (non-technical, risk-focused) 2. Scope and methodology 3. Findings table with severity (Critical/High/Medium/Low/Informational), CVSS score, and MASVS reference 4. Per-finding detail: description, evidence (screenshots, command output), impact, remediation 5. Appendix: tools used, testing timeline

If you are building toward a professional mobile security practice, ThreatBlock's mobile app pentesting course walks through Android and iOS engagements end-to-end with hands-on labs. For certifications, salary ranges, and career milestones, see the Android and iOS pentesting career roadmap.

Frequently asked questions

What is Android penetration testing methodology?

Android penetration testing methodology is a structured, phase-by-phase approach to assessing the security of Android applications. It covers reconnaissance and environment setup, static analysis of the APK and source code, dynamic analysis of runtime behavior, network traffic interception and analysis, and structured reporting mapped to OWASP MASVS controls.

Do I need a rooted device for Android pentesting?

Root access is not strictly required for static analysis, but dynamic analysis and traffic interception on modern Android versions (7+) are significantly harder without it. A rooted physical device or a rooted Android emulator gives you the ability to install system CA certificates, run Frida server, and access app-private storage directories.

What is OWASP MASVS and why does it matter for Android testing?

The OWASP Mobile Application Security Verification Standard (MASVS) defines security controls for mobile applications across six domains: storage, cryptography, authentication, network communication, platform interaction, and code quality. It provides a recognized framework to scope an engagement, structure findings, and communicate risk in terms clients and developers understand.

How is Android pentesting different from web app pentesting?

Android pentesting requires platform-specific skills: APK decompilation, Android manifest analysis, ADB-based device interaction, Frida instrumentation, and understanding of Android's inter-process communication (intents, content providers, broadcast receivers). Web pentesting primarily focuses on HTTP requests. Both disciplines share network traffic analysis and authentication testing, but the attack surface and toolset differ considerably.


ThreatBlock's mobile app pentesting course covers Android and iOS security testing hands-on.

About the author: Samaksh is Lead Instructor at ThreatBlock and holds the OSCP, CRTP, CRTO, and CEH certifications, with hands-on experience in penetration testing and red teaming. Read more on the author page · Editorial policy.

← Back to all articles
{{ toast }}