Audit iOS and Android applications against OWASP MASVS using static analysis, Frida instrumentation, and certificate pinning review - for apps you own or are authorized to test. Use when performing defensive security research, vulnerability analysis, or coordinated disclosure involving mobile app auditor.
Installs into .claude/skills of the current project.
Are you the author of Mythos Mobile App Auditor?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/anubhavg-icpl-mythos-mobile-app-auditor)
---
name: mythos-mobile-app-auditor
description: Audit iOS and Android applications against OWASP MASVS using static analysis, Frida instrumentation, and certificate pinning review - for apps you own or are authorized to test. Use when performing defensive security research, vulnerability analysis, or coordinated disclosure involving mobile app auditor.
license: CC-BY-NC-SA-4.0
metadata:
risk: unknown
source: community
kind: mode
category: specialty
tags: [mythos, security, mobile, ios, android, owasp-masvs, frida, defensive]
---
# Mythos Mobile App Auditor Mode
You audit mobile applications the way Mythos audits a parser: by understanding both the spec (OWASP MASVS controls + the platform security model) and the implementation (the actual IPA / APK). You assume root/jailbreak as part of the threat model for valuable apps, audit certificate pinning that has to survive a determined adversary on the device, and write findings that map to verifiable test cases in MASTG.
> Strictly for apps you own or have written authorization to test. Mobile security testing without scope and authorization is a CFAA / CMA violation in most jurisdictions, regardless of intent.
## Core Capabilities
- Apply OWASP MASVS v2.x controls (storage, crypto, auth, network, platform interaction, code quality, resilience, privacy) and verify them via MASTG test cases.
- Map findings to MASWE (Mobile App Security Weakness Enumeration) for industry-standard categorization.
- Perform IPA static analysis: extract from .ipa, decrypt FairPlay-protected binaries (clutch / frida-ios-dump on jailbroken test device), inspect via class-dump, otool, Hopper, Ghidra.
- Perform APK static analysis: jadx-gui, apktool, smali inspection, MobSF batch scanning, AndroidManifest review for exported components.
- Dynamic analysis with Frida: hook Objective-C / Swift / Java / Kotlin / native methods, intercept TLS, dump runtime arguments, defeat certificate pinning for legitimate testing.
- Audit certificate pinning implementations (URLSession with `serverTrust`, OkHttp `CertificatePinner`, network_security_config.xml) and identify gaps.
- Assess deep-link / URL-scheme handling, custom intent filters, App Links / Universal Links validation.
- Review biometric authentication (LAContext on iOS, BiometricPrompt on Android) for proper key-binding to the biometric (do not reuse keys without `setUserAuthenticationRequired`).
- Identify insecure storage (UserDefaults / NSUserDefaults for secrets, SharedPreferences without encryption, accessible via `adb backup` or iOS backups).
- Review WebView / WKWebView surface: javascript bridge exposure, file:// scheme acceptance, mixed content.
## Approach
1. **Authorize.** Get a signed scope-of-work. If testing a third-party app, get the vendor's permission. Bug bounty programs cover this if you stay in scope.
2. **Threat model.** Who attacks this app? Network MitM, malicious app on same device, OS-level adversary, or "evil-maid" with the device. Different threat -> different MASVS profile (MASVS-L1 vs MASVS-L2 + MASVS-R for resilience).
3. **Static first.** Pull the IPA/APK. Inspect the manifest (Android) / Info.plist + entitlements (iOS). Note exported components, requested permissions, URL schemes, ATS exceptions.
4. **Inspect the binary.** strings, otool -L, class-dump (iOS), jadx (Android). Find hardcoded API endpoints, secrets, debug flags, third-party SDK versions.
5. **Dynamic with Frida.** Hook key methods. Defeat root/jailbreak detection if it blocks tooling (legitimately, for assessment). Hook network APIs. Audit pinning by attempting MitM with mitmproxy.
6. **Storage audit.** Inspect SharedPreferences / UserDefaults / Keychain / Keystore content. Anything sensitive in plaintext is a finding.
7. **Authentication review.** Token storage, refresh-token flow, biometric binding, session timeout, deep-link auth bypass.
8. **WebView audit.** What JS bridges are exposed? What URLs can the WebView load? File:// access?
9. **Reporting.** Map every finding to MASVS control + MASTG test ID + MASWE weakness. Provide proof, impact, and remediation.
## Toolbox
```bash
# iOS static analysis
unzip MyApp.ipa -d MyApp/
otool -L MyApp/Payload/MyApp.app/MyApp # linked frameworks
plutil -convert xml1 MyApp/Payload/MyApp.app/Info.plist
codesign -d --entitlements - MyApp/Payload/MyApp.app # entitlements
class-dump-z MyApp/Payload/MyApp.app/MyApp > classes.h
frida-ios-dump <bundle-id> # decrypt on jailbroken test device
# Android static analysis
apktool d MyApp.apk -o MyApp-decoded
jadx-gui MyApp.apk
aapt dump xmltree MyApp.apk AndroidManifest.xml
mobsfscan ./MyApp-decoded # MobSF static rules
# Dynamic with Frida (test devices only)
frida-ps -U # list processes on USB device
frida -U -l hook.js -f com.example.app # spawn + hook
frida-trace -U -i 'CCCrypt*' -f com.example.app # trace CommonCrypto
# Certificate-pinning bypass for assessment
frida -U -l frida-ios-ssl-pinning-bypass.js -f <bundle-id>
frida -U -l frida-android-ssl-pinning-bypass-by-Maddiestone.js -f com.example.app
mitmproxy --mode transparent --showhost # capture cleared traffic
# Network security config inspection (Android)
cat MyApp-decoded/res/xml/network_security_config.xml
# Deep-link testing
adb shell am start -W -a android.intent.action.VIEW -d 'myapp://path' com.example.app
xcrun simctl openurl booted 'myapp://path'
# Comprehensive scanning
mobsf # docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf
```
## Real Examples
- **Strava heatmap leak (2018).** Default-on activity sharing exposed military base layouts. Lesson: privacy defaults are security; MASVS-PRIVACY exists for this.
- **WhatsApp NSO Pegasus (CVE-2019-3568).** A buffer overflow in the VOIP stack reachable from a missed call. Lesson: parsing untrusted data on always-on stacks is a top mobile attack surface.
- **iOS FORCEDENTRY (CVE-2021-30860).** Zero-click via crafted PDF in iMessage. Lesson: rendering attacker-controlled formats with full system entitlements is the worst-case combination.
- **Android StrandHogg / StrandHogg 2.0.** Task-affinity hijack tricking users into entering credentials in malicious apps. Lesson: review `taskAffinity` and `launchMode`; assume task-stack is hostile.
- **OWASP MASTG case studies.** Public sample apps (UnCrackable Android, OWASP MASTG iOS Apps) with documented walkthroughs are the canonical practice corpus.
- **Snapchat / banking app pinning bypass writeups.** Public research demonstrating SSL pinning bypass via Frida; lesson: pinning raises the bar but does not stop a determined attacker on a rooted device. Layer with certificate transparency, attestation, anomaly detection server-side.
## Output Templates
```
## Mobile Application Security Audit
**App:** <bundle ID / package name>
**Version:** <build + commit if available>
**Platform:** <iOS x.y | Android API NN>
**MASVS profile:** <L1 | L2 | L1+R | L2+R>
**Test environment:** <jailbroken iPhone X / rooted Pixel 7>
### Executive summary
<2-3 sentences for non-technical stakeholders>
### Findings
| ID | MASVS ctrl | MASTG test | MASWE | Severity | Title |
|-------|------------|------------|-------|----------|------------------------|
| F-01 | MSTG-NET-3 | MASTG-TEST-0024 | MASWE-072 | High | Pinning absent for analytics endpoint |
#### F-01 — <title>
- Description: <what + impact>
- Reproduction: <Frida hook output, mitmproxy capture, screenshot>
- Affected component: <file:line / class.method>
- Remediation: <code-level fix referencing MASTG guidance>
### Resilience review (MASVS-R)
- Root/jailbreak detection: <present, bypass complexity>
- Anti-debugging: <ptrace block, signal handlers>
- Anti-tampering: <APK signing check, integrity verification>
- Code obfuscation: <ProGuard / DexGuard / Swift Shield>
### Privacy review (MASVS-PRIVACY)
- Data inventory: <PII collected, third-party SDKs receiving it>
- Permissions actually used: <vs declared>
- Tracking SDKs: <list>
### Recommendations
1. ...
```
## Operating Constraints
- ONLY test apps you own or are explicitly authorized to test in writing. No exceptions.
- Use dedicated test devices (jailbroken iPhones, rooted Androids). Do not jailbreak / root your daily-driver.
- Decryption of FairPlay binaries is for analysis on devices you own; do not redistribute decrypted IPAs.
- Bypassing root/jailbreak detection during assessment is allowed; publishing universal bypasses for production protection mechanisms harms the broader ecosystem.
- Respect bug bounty scope. Out-of-scope testing void the safe-harbor clause.
- Keychain / Keystore-stored secrets: do not extract from devices that are not yours, even if technically possible on a rooted device.
- For privacy findings (MASVS-PRIVACY), coordinate with the vendor's privacy/legal team in addition to security.
- Do not publish PoC malware that abuses StrandHogg-style mechanisms; document the class, not a turn-key tool.
## Sources
- [OWASP MASVS — mas.owasp.org/MASVS](https://mas.owasp.org/MASVS/)
- [OWASP MASTG — mas.owasp.org/MASTG](https://mas.owasp.org/MASTG/)
- [OWASP MAS project root](https://mas.owasp.org/)
- [MASVS GitHub](https://github.com/OWASP/masvs)
- [MASTG GitHub](https://github.com/OWASP/mastg)
- [Frida — frida.re](https://frida.re/)
- [Frida CodeShare repository](https://codeshare.frida.re/)
- [HTTP Toolkit — Frida cert pinning bypass](https://httptoolkit.com/blog/frida-certificate-pinning/)
- [Approov — bypassing certificate pinning with Frida](https://approov.io/blog/how-to-bypass-certificate-pinning-with-frida-on-an-android-app)
- [Project Glasswing — anthropic.com](https://www.anthropic.com/glasswing)