android-pentest
Android Mobile Application Penetration Testing
Thin router for full MASTG-aligned Android assessments via ADB + Frida + Mobile MCP. Load workflow / methodology / reference files on demand; do not attempt to memorise the whole skill up front.
When to Use
- Start a new Android app security assessment
- Bypass SSL pinning, root detection, anti-tamper, or biometric checks
- Extract/triage local storage (SharedPreferences, DBs, files, logs)
- Test exported activities, services, providers, receivers, deep links
- Hook crypto / auth / session / keystore at runtime
- Map a build to OWASP MASVS / MASTG for compliance evidence
- Produce structured findings + remediation guidance
Trigger Phrases
"pentest this Android app" • "security test the APK" • "bypass SSL pinning on " • "extract data from " • "test Android authentication" • "fuzz Android intents" • "MASTG testing for " • "mobile app security assessment"
When NOT to Use This Skill
- iOS apps → use
ios-pentest(if available) or generic mobile skill - Server-side API fuzzing of mobile backends → use
api-security/web-pentest - Decompiling Android malware for IR → use
malware-analysis, not this pentest-focused skill - Supply-chain / SCA on third-party SDKs → use
sca/dependency-audit - Cloud backend of the mobile app → use
cloud-pentest
Decision Tree
Do you have the APK or only package name?
├─ package only → get_app_info + pull_apk (parallel), then branch on protections
└─ APK on disk → static analysis first (jadx, apktool), then dynamic
└─ App runs? → frida_spawn → bypass_ssl → bypass_root → proxy
└─ App crashes on root? → see references/troubleshooting.md (Root detection)
└─ TLS still not decrypted? → workflows/ssl_pinning_bypass.md Methods 2→3
What's the objective?
├─ Full assessment → workflows/complete_assessment.md
├─ SSL pinning only → workflows/ssl_pinning_bypass.md
├─ Auth / session → workflows/auth_testing.md
├─ Deep links / IPC / fuzz → workflows/deeplink_intent_testing.md
├─ Crypto audit → workflows/crypto_analysis.md
└─ Data storage / exfil → workflows/data_exfiltration.md
Parallelism Hints
Run concurrently (independent, same device):
get_app_info+pull_apk+list_exported_componentsdump_databases+dump_shared_prefs+dump_internal_storage+dump_external_storage+get_logcat- Multiple
frida_run_scriptcalls against the same PID (crypto_hooks.js ∥ credential_hooks.js ∥ intent_monitor.js) - Static APK analysis (decompile, secrets scan) ∥ dynamic runtime hooks
Must be sequential:
frida_spawn→frida_bypass_ssl→frida_bypass_root(scripts need the PID and must attach before the app finishes its protection init)setup_proxybefore any traffic-capture or network workflowinstall_ca_certbeforesetup_proxyon a fresh devicecapture_traffic_start→ drive app →capture_traffic_stop
Sub-Agent Delegation
- Spawn a static-analysis sub-agent on the pulled APK (jadx decompile → secrets grep → manifest review → native-lib inventory) while the main agent runs dynamic Frida hooks. Rejoin before reporting.
- Spawn a per-component sub-agent when fuzzing many exported components: one agent per activity/provider/service batch; each owns its own Frida PID and logcat filter. Avoids cross-contamination of hook state.
- Spawn a reporting sub-agent to normalise findings into
schemas/finding.jsonand render templates once the main testing pass completes.
Reasoning Budget
- Extended thinking (high): triaging findings across evidence, classifying severity, writing CWE/MASTG mappings, designing custom Frida hooks for obfuscated classes, reverse-engineering native SSL-pinning paths.
- Low / no extended thinking: repetitive Frida hook runs, standard dumps, canned payload fuzzing, applying the universal SSL bypass, invoking known MCP tool sequences.
- Don't burn tokens reasoning about which universal bypass to try first — just run
frida_bypass_ssl(pid)and escalate on failure.
Multimodal Hooks
- Use Mobile MCP
get_screen_state+ screenshot for UI-driven auth flows (biometric prompts, OAuth redirects, MFA steps). Attach screenshots asevidence.screenshoton the finding. - Capture a screenshot at the point of bypass (e.g., authenticated home screen after biometric spoof) — visual evidence strengthens severity justification.
- For deep-link repros, screenshot the resulting activity to prove the unintended state is reachable.
Structured Output
All findings MUST validate against schemas/finding.json. Android-specific required/common fields:
package_name, app_version, target_sdk, device_id, frida_pid, mastg_id, masvs_control, component.{type,class_name,exported}, evidence.{logcat,frida_output,screenshot,pcap}.
Workflow Index
| Workflow | When |
|---|---|
| workflows/complete_assessment.md | End-to-end MASTG pass |
| workflows/ssl_pinning_bypass.md | Enable TLS interception |
| workflows/auth_testing.md | Login, session, biometric, JWT |
| workflows/deeplink_intent_testing.md | IPC fuzz, deep links, providers |
| workflows/crypto_analysis.md | Weak algos, hardcoded keys, keystore |
| workflows/data_exfiltration.md | Local storage + logcat leakage |
Methodology Index
| Document | Coverage |
|---|---|
| methodology/recon.md | Info gathering, attack-surface map |
| methodology/static_analysis.md | APK/smali/secrets review |
| methodology/dynamic_analysis.md | Runtime hooking, instrumentation |
| methodology/network_testing.md | Traffic, API, TLS verification |
| methodology/data_storage.md | Local storage, DBs, file perms |
| methodology/crypto_testing.md | Encryption and key management |
| methodology/auth_testing.md | Auth, session, biometric |
| methodology/client_side_injection.md | WebViews, deep links, providers |
Payloads Index
| File | Use |
|---|---|
| payloads/intent_injection.txt | Intent/IPC fuzz inputs |
| payloads/path_traversal.txt | File/provider path escapes |
| payloads/sql_injection.txt | Content provider SQLi |
| payloads/xss_payloads.txt | WebView XSS |
| payloads/xxe_payloads.txt | XML parsers in-app |
Examples Index
| Example | Scenario |
|---|---|
| examples/new_assessment.md | Kickoff blueprint for a new target |
| examples/data_storage_investigation.md | Enumerating local sensitive data |
| examples/auth_bypass.md | Biometric / session / JWT bypass |
References Index
| Document | Coverage |
|---|---|
| references/owasp_mobile_top10.md | OWASP Mobile Top 10 mapping |
| references/android_security_checklist.md | Testing checklist |
| references/frida_snippets.md | Reusable Frida one-liners |
| references/troubleshooting.md | Frida / SSL / root / ADB / SQLCipher fixes |
| references/bounty_patterns_2024_2026.md | Post-2023 bounty TTPs (deep-link hijack / App-Links bypass, WebView deep-link XSS, unprotected broadcast-receiver leakage) |
Checklists
| File | Purpose |
|---|---|
| checklists/owasp_mastg_full.md | Full MASTG compliance |
| checklists/quick_wins.md | Fast-vuln sweep |
| checklists/pre_engagement.md | Setup verification |
| checklists/report_items.md | Report completeness |
Templates
| Template | Purpose |
|---|---|
| templates/finding_template.md | Per-finding doc |
| templates/executive_summary.md | Management summary |
| templates/technical_report.md | Full technical report |
| templates/remediation_guide.md | Developer-facing fixes |
MCP Tool Reference
Device interaction
| Tool | Purpose |
|---|---|
get_screen_state() |
Current screen / UI tree |
tap_element(x,y) / long_press(x,y) |
Tap / long-press |
input_text(text) |
Type into focused field |
press_key(keycode) |
BACK=4 HOME=3 ENTER=66 |
swipe(x1,y1,x2,y2) |
Scroll, pattern unlock |
Frida instrumentation
| Tool | Purpose |
|---|---|
frida_spawn(pkg) / frida_attach(pkg) |
Start or attach |
frida_run_script(pid, script) |
Load JS hooks |
frida_bypass_ssl(pid) / frida_bypass_root(pid) |
Universal bypasses |
frida_hook_method(pid, class, method) |
Trace a single method |
frida_trace_crypto(pid) / frida_dump_credentials(pid) |
Canned traces |
frida_enumerate_classes(pid, pattern) |
Class discovery under obfuscation |
frida_memory_search(pid, pattern) |
Find secrets / keys in process memory |
Network
| Tool | Purpose |
|---|---|
setup_proxy(device, host, port) / clear_proxy(device) |
Proxy wiring |
install_ca_cert(device, path) |
Trust Burp CA (system store) |
capture_traffic_start(pkg) / capture_traffic_stop() |
PCAP |
Data extraction
| Tool | Purpose |
|---|---|
dump_databases(pkg) / dump_shared_prefs(pkg) |
SQLite + prefs |
dump_internal_storage(pkg) / dump_external_storage(pkg) |
Files |
get_logcat(pkg) |
Package-filtered logs |
Components
| Tool | Purpose |
|---|---|
list_exported_components(pkg) |
Attack surface |
launch_activity(pkg, activity, extras, data_uri) |
Deep link / intent |
send_broadcast(action, extras) |
Broadcast injection |
start_service(pkg, service, extras) |
Service abuse |
query_content_provider(uri) |
Provider SQLi / leakage |
fuzz_intent_extra(pkg, comp, key, payloads) |
Automated fuzz |
App management
| Tool | Purpose |
|---|---|
install_apk(path) / uninstall_app(pkg) |
Deploy / remove |
clear_app_data(pkg) |
Fresh state |
get_app_info(pkg) |
Metadata, permissions, SDK |
list_installed_apps() / pull_apk(pkg) |
Discovery / extraction |
Frida Script Library (scripts/)
ssl_pinning_bypass.js, root_bypass.js, crypto_hooks.js, credential_hooks.js, network_hooks.js, biometric_bypass.js, anti_tampering_bypass.js, intent_monitor.js, webview_hooks.js, dynamic_dex_hooks.js, keystore_hooks.js, method_tracer.js.
Tools
| Tool | Purpose | Install |
|---|---|---|
| ADB | Device comms | apt install adb (Android SDK platform-tools) |
| Frida / frida-tools | Dynamic instrumentation | pip install frida-tools (≥16.4) |
| Objection | Mobile exploration | pip install objection |
| apktool | APK decompile | apt install apktool (≥2.9) |
| jadx | Java decompile | github.com/skylot/jadx releases (≥1.5) |
| Burp Suite | Traffic interception | portswigger.net |
| Android Studio | Emulator, SDK | developer.android.com |
Setup scripts: setup/setup_pentest_env.sh, setup/setup_physical_device.sh, setup/setup_emulator.py, setup/frida_server_manager.py, setup/burp_cert_installer.sh, setup/check_environment.py.
MCP servers expected: android-pentest (Android Dynamic MCP), mobile-mcp (mobile-next for UI). Configure in ~/.claude/mcp.json.
Related Resources
Last Validated
2026-04 — minimum versions: Frida ≥16.4, apktool ≥2.9, jadx ≥1.5, Android platform-tools ≥35.
More from hardw00t/ai-security-arsenal
api-security
Comprehensive API security testing skill for REST, GraphQL, gRPC, and WebSocket APIs. This skill should be used when performing API penetration testing, testing for OWASP API Top 10 vulnerabilities, fuzzing API endpoints, testing authentication/authorization, and analyzing API specifications. Triggers on requests to test API security, pentest REST APIs, test GraphQL endpoints, analyze OpenAPI/Swagger specs, or find API vulnerabilities.
13ios-pentest
Comprehensive iOS mobile application penetration testing skill with Frida/Objection integration for jailbroken and non-jailbroken devices. This skill should be used when performing security assessments on iOS applications including static analysis, dynamic analysis, runtime manipulation, traffic interception, keychain analysis, and vulnerability identification. Triggers on requests to pentest iOS apps, test iPhone/iPad security, analyze IPAs, bypass security controls, or perform OWASP MASTG iOS assessments.
10container-security
Container and Kubernetes security assessment skill for Docker, Kubernetes, and container orchestration platforms. This skill should be used when scanning container images for vulnerabilities, auditing Kubernetes cluster security, testing container escape scenarios, reviewing Docker configurations, or performing container runtime security analysis. Triggers on requests to scan Docker images, audit Kubernetes security, test container configurations, or assess container orchestration security.
9iac-security
Infrastructure as Code security scanning skill for Terraform, CloudFormation, Kubernetes manifests, Helm charts, and ARM templates. This skill should be used when auditing IaC configurations for misconfigurations, scanning Terraform plans, validating Kubernetes security policies, checking cloud infrastructure compliance, or integrating security into CI/CD pipelines. Triggers on requests to scan Terraform, audit CloudFormation, check Kubernetes manifests, validate Helm charts, or find IaC security issues.
6sca-security
Software Composition Analysis: find vulnerable dependencies, correlate CVE/GHSA/OSV across ecosystems, generate CycloneDX/SPDX SBOMs, assess license compliance, and run reachability-aware triage to suppress unexploitable findings. Use when scanning package dependencies (npm, PyPI, Maven, Cargo, Go, RubyGems, Composer), reviewing PR lockfile diffs, generating SBOMs, auditing licenses, hunting malicious packages, or auditing the software supply chain. Triggers on requests to scan dependencies, check vulnerable packages, generate SBOM, license compliance, typosquat/dependency-confusion review, or reachability-based vuln triage.
6cloud-security
Multi-cloud security assessment skill for AWS, Azure, and GCP. This skill should be used when performing cloud security audits, scanning for misconfigurations, testing IAM policies, auditing storage permissions, and identifying privilege escalation paths. Triggers on requests to audit cloud security, scan AWS/Azure/GCP, check cloud misconfigurations, or perform cloud penetration testing.
6