agentsclimarketplace

Mobile pentest

Skill hypnguyen1209/offensive-claude/skills/mobile-pentest

Use when pentesting an Android/iOS app — Frida 17 instrumentation, SSL-pinning & root/jailbreak bypass, Android 14/15 CA injection, exported-component/content-provider abuse, deep-link/WebView chains, biometric bypass, Flutter/React-Native REFrom its SKILL.md

Install
npx -y skills add hypnguyen1209/offensive-claude --skill mobile-pentest

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • runs commandsInstructs the agent to run 8 commands, including `adb shell pm path com.target.app` and 7 more.

SKILL.md

10.7 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it

Mobile Application Penetration Testing

When to Activate

  • Android/iOS application security assessment, bug-bounty mobile triage, or app-store reconnaissance
  • Need to intercept TLS traffic (SSL/cert pinning, Android 14/15 Conscrypt-APEX trust store, Flutter/RN stacks)
  • Bypass root/jailbreak or biometric-gating controls during dynamic analysis
  • Enumerate and exploit exported components, content providers, deep links, and WebViews
  • Extract secrets from insecure storage (SharedPrefs, SQLite, Keychain, Keystore) and reverse hybrid apps

Technique Map

TechniqueATT&CKCWEReferenceScript
Lab build + Frida 17 server/gadgetT1635CWE-1188references/environment-interception.md-
Android 14/15 Conscrypt-APEX CA injectionT1521.001CWE-295references/environment-interception.mdscripts/android_ca_inject.sh
SSL/cert-pinning bypass (Java TM/OkHttp/native)T1521.001CWE-295references/environment-interception.mdscripts/universal_unpin.js
Root detection bypass (RootBeer/native stat)T1633.001CWE-693references/environment-interception.mdscripts/universal_unpin.js
Exported activity/service/receiver abuseT1626.001CWE-926references/android-component-attacks.mdscripts/manifest_attack_surface.py
Content-provider SQLi / path traversal (CVE-2025-48609)T1409CWE-22, CWE-89references/android-component-attacks.mdscripts/component_fuzz.sh
Task hijacking / StrandHogg / TapTrap (USENIX '25)T1517CWE-1021references/android-component-attacks.mdscripts/manifest_attack_surface.py
Deep-link / intent-redirect / scheme hijackT1635, T1577CWE-939references/webview-deeplink-exploitation.mdscripts/component_fuzz.sh
WebView JS-interface RCE + file:// theftT1577CWE-749references/webview-deeplink-exploitation.mdscripts/component_fuzz.sh
OAuth custom-scheme callback interceptionT1635CWE-940references/webview-deeplink-exploitation.md-
Insecure storage (SharedPrefs/SQLite/external)T1409CWE-312references/insecure-storage-crypto.mdscripts/manifest_attack_surface.py
Keystore/Keychain misuse + dumpingT1634CWE-522references/insecure-storage-crypto.mdscripts/ios_bypass_suite.js
Biometric bypass (BiometricPrompt/LAContext)T1634CWE-287references/insecure-storage-crypto.mdscripts/ios_bypass_suite.js
iOS jailbreak + JB-detection bypassT1635CWE-693references/ios-offensive.mdscripts/ios_bypass_suite.js
IPA decrypt / class-dump / URL-scheme abuseT1409, T1635CWE-200references/ios-offensive.mdscripts/ios_bypass_suite.js
Flutter RE / reFlutter pinning bypassT1521.001CWE-295references/crossplatform-re-instrumentation.mdscripts/hermes_triage.py
React Native Hermes bytecode decompileT1640CWE-656references/crossplatform-re-instrumentation.mdscripts/hermes_triage.py

Quick Start

# ---- ANDROID ----
# 0. Pull + statically triage the APK (manifest, secrets, exported surface, framework ID)
adb shell pm path com.target.app                              # locate split APKs
adb pull /data/app/.../base.apk .
python3 scripts/manifest_attack_surface.py base.apk -o surface.json
jadx -d src base.apk &  apktool d base.apk -o decoded

# 1. Frida 17: match server to host tools; push + run
frida --version                                              # e.g. 17.x  -> use matching server
adb push frida-server-17.x-android-arm64 /data/local/tmp/frida-server
adb shell "su -c 'chmod 755 /data/local/tmp/frida-server && /data/local/tmp/frida-server &'"

# 2. Trust Burp CA on Android 14/15 (APEX is immutable -> Zygote namespace bind-mount)
bash scripts/android_ca_inject.sh 9a5ba575.0 cacert.pem      # see reference for cert hashing

# 3. Spawn target with universal unpinning + root-detection bypass
frida -U -f com.target.app -l scripts/universal_unpin.js --no-pause

# 4. Hit the exported attack surface from surface.json
bash scripts/component_fuzz.sh com.target.app surface.json

# ---- iOS ----
frida-ios-dump -o app.ipa com.target.app                     # decrypt + pull (jailbroken)
frida -U -f com.target.app -l scripts/ios_bypass_suite.js --no-pause   # JB + pinning + biometric + keychain

# ---- HYBRID ----
file decoded/assets/index.android.bundle                     # "Hermes JavaScript bytecode" => RN
python3 scripts/hermes_triage.py base.apk                    # detect Flutter/RN, drive reFlutter/hermes-dec

OPSEC & Detection (summary)

TechniqueTelemetry / IOCDetection (Sigma / app-side)OPSEC note
Frida instrumentationfrida-server/gadget ports (27042), re.frida.server, suspicious maps regions, named pipes linjectorApp scans /proc/self/maps for frida, checks D-Bus port, thread gum-js-loop; Play IntegrityUse frida-gadget renamed lib, custom port frida-server -l 0.0.0.0:1337, magisk-hide / Shamiko
CA injection (APEX)New trust anchor in process trust store; cert CN mismatch on pinned hostsNetwork Security Config <trust-anchors> excludes user store; pinning catches itMount lives only in Zygote ns, vanishes on Zygote crash — re-inject; nothing written to /system
SSL-pinning bypassTLS handshake to proxy IP; cert chain not app-pinned certApp-side pin failure callbacks fire (if logged); telemetry SDK sees proxy certHook before first request; for Flutter prefer reFlutter patch over runtime to avoid crash loops
Root/JB bypassgetprop ro.debuggable, su binaries, magisk paths queriedRootBeer/iXGuard SDK reports; SafetyNet/Play Integrity attestation server-sideBypass client checks only; server-side attestation (Play Integrity / DeviceCheck) is unaffected
Exported component abuseam start/startservice/broadcast from adb; foreign UID intentApp logs unexpected caller UID; Binder.getCallingUid() checksUse on-device malicious app for realism; adb leaves shell history
Content-provider traversalcontent query with ../; openFile on out-of-dir pathFileProvider canonical-path check; CVE-2025-48609 patched Mar 2026 SPLURL-encode ..%2f to dodge naive filters; read-only first
TapTrap / task hijackTransparent activity transition, taskAffinity overlap, animationScale abuseTapTrap fixed Dec 2025 SPL; check targetSdk, taskAffinity=""Zero-permission; works <Dec-2025 patch; user study: 100% missed at least one variant
Keychain/Keystore dumpkeychain_dumper, frida memory scrape, SecItemCopyMatching hooksKeychain items with .biometryCurrentSet resist hooking; SE-backed keys unextractableJB device dumps keychain plaintext regardless of ACL; flag SE vs SW keys in report
Biometric bypassLAContext evaluatePolicy / BiometricPrompt callback hookOnly works on boolean-result pattern, NOT SecAccessControl-gated cryptoReport root cause: auth result not bound to a crypto/keychain operation

Deep Dives

  • references/environment-interception.md — Rooted/jailbroken lab, Genymotion/AVD, Magisk+Shamiko, Frida 17 breaking changes (bridge removal, frida-pm, frida-compile), gadget mode for non-root, Android 14/15 Conscrypt-APEX CA injection via Zygote namespace bind-mount, universal SSL-pinning bypass (Java TrustManager/OkHttp/Network Security Config/native BoringSSL), root-detection bypass.
  • references/android-component-attacks.md — Manifest attack-surface enumeration, exported activity/service/broadcast/provider exploitation, content-provider SQLi & path traversal (CVE-2025-48609 MmsProvider), intent:// redirection to non-exported components, task hijacking (StrandHogg 1.0/2.0 CVE-2020-0096) and TapTrap animation-driven tapjacking (USENIX Security '25), drozer + adb workflows.
  • references/webview-deeplink-exploitation.mdaddJavascriptInterface RCE, setAllowUniversalAccessFromFileURLs/file:// local-file theft, deep-link → WebView open-redirect/XSS chains, intent:// browsable-activity pivots, OAuth custom-scheme callback hijack (RFC 8252), iOS URL-scheme & Universal Link abuse, one-click browser-to-WebView exploitation.
  • references/insecure-storage-crypto.md — Android SharedPreferences/SQLite/internal+external storage, Android Keystore misuse (non-hardware-backed keys, no setUserAuthenticationRequired), iOS Keychain ACLs & keychain_dumper, NSUserDefaults/plist leaks, biometric bypass (BiometricPrompt CryptoObject vs result-only, LAContext evaluatePolicy), hardcoded secrets & Firebase/S3 misconfig, MASVS-STORAGE mapping.
  • references/ios-offensive.md — Jailbreak tooling matrix (palera1n checkm8 A8–A11/T2 iOS 15–18.x, Dopamine A8–A16 iOS 15–16.6.1, Dopamine HideJailbreak), JB-detection bypass (Frida stat/fopen/dlopen hooks + Shadow), IPA decryption (frida-ios-dump/bagbak), class-dump/Swift demangling, entitlements & URL-scheme analysis, Frida-version pinning gotchas.
  • references/crossplatform-re-instrumentation.md — Flutter Dart-stack interception (reFlutter libflutter.so patch of ssl_crypto_x509_session_verify_cert_chain, iptables/proxydroid fallback), React Native Hermes bytecode RE (hermes-dec, hbctool patch/reassemble, hermes-decomp, CatalystInstanceImpl.loadScriptFromAssets Frida hook), native .so JNI/JNI_OnLoad analysis in Ghidra/IDA.

What ships with it: 12 files

91.0 KB alongside SKILL.md, 6 of them executable

Gives 0 of the 12 instructions most security skills give in ~2.4k tokens

Counted across 666 of the 889 authors here whose files we hold, read 2026-09-06

  • Use parameterized queries for database accessin 82 of 666, across 79 files
  • Hash passwords with BCryptin 55 of 666, across 39 files
  • Implement rate limiting for public endpointsin 48 of 666, across 34 files
  • Use environment variables for secretsin 35 of 666
  • Scan dependencies for vulnerabilitiesin 35 of 666, across 24 files
  • Validate and sanitize all user inputin 35 of 666, across 32 files
  • Add security headers to all responsesin 34 of 666, across 20 files
  • Validate all external input at the system boundaryin 26 of 666, across 25 files
  • Use parameterized queries to prevent SQL injectionin 25 of 666, across 13 files
  • Store secrets in Vault or environment variablesin 25 of 666, across 10 files
  • Run containers as a non-root userin 21 of 666, across 18 files
  • Validate all input using Bean Validationin 19 of 666, across 5 files

Said here and by no other author read

  • Locate split APKs using adb
  • Pull APK files from the device
  • Triage APK manifest and exported surface
  • Match Frida server version to host tools
  • Push Frida server to device temporary directory
  • Inject CA certificates for Android 14 and 15

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.