All skills
hardw00t avatar

/ios-pentest

@f9bb3b2
by Hardik Mehtahardw00t/ai-security-arsenal104 stars
15

iOS mobile application penetration testing with Frida and Objection on jailbroken or non-jailbroken devices. Use for static + dynamic analysis of IPAs, SSL pinning / jailbreak / biometric bypass, keychain & local-storage extraction, network interception, and OWASP MASTG iOS assessments. Triggers on requests to pentest iOS apps, analyze IPAs, bypass iOS security controls, or produce MASTG-aligned findings.

Use this Skill: https://skilld.dev/gh/hardw00t/ai-security-arsenal/ios-pentest

This session only. Nothing lands on disk.

SKILL.md

β‰ˆ105 tokens always: the name and description. β‰ˆ2.3k when used: this file. β‰ˆ13k more on demand in 23 files.

iOS Mobile Application Penetration Testing

Thin router for an iOS app security assessment. Full OWASP MASTG coverage (recon β†’ static β†’ dynamic β†’ network β†’ storage β†’ crypto β†’ auth β†’ reporting). Detailed runbooks live under workflows/ and methodology/; load them only when needed.

When to Use

  • New iOS application security assessment (IPA + installed app).
  • Bypass SSL pinning, jailbreak detection, biometric, anti-debug.
  • Extract and triage keychain / NSUserDefaults / files / SQLite.
  • Intercept and tamper HTTPS / gRPC / WebSocket traffic.
  • OWASP MASTG / MASVS compliance testing.
  • Analyze a decrypted or encrypted Mach-O binary.

Trigger Phrases

"pentest iOS app", "test this IPA", "bypass SSL pinning iPhone", "extract keychain", "MASTG iOS", "iOS jailbreak bypass", "analyze .ipa", "test iPhone app".

When NOT to Use This Skill

  • Android APK analysis β†’ use android-pentest.
  • Generic web API testing for the backend β†’ use web-pentest / api-pentest.
  • iOS source-code review (you have the repo) β†’ use secure-code-review with iOS language packs.
  • macOS desktop app analysis β†’ use macos-pentest.

Decision Tree

target acquired?
β”œβ”€β”€ no binary yet β†’ workflows/ipa_decryption.md
└── yes
    β”œβ”€β”€ need HTTPS visibility? β†’ workflows/ssl_pinning_bypass.md
    β”œβ”€β”€ app exits on jailbroken device? β†’ workflows/jailbreak_detection_bypass.md
    β”œβ”€β”€ hunting credentials/tokens? β†’ workflows/keychain_extraction.md
    β”œβ”€β”€ testing login / biometric? β†’ workflows/auth_testing.md
    └── full engagement β†’ workflows/complete_assessment.md

Parallelism Hints

Run concurrently (independent I/O, no shared state):

  • class-dump -H App.app/App -o headers/
  • otool -L App.app/App and otool -hv App.app/App
  • strings -a App.app/App | grep ...
  • plutil -p App.app/Info.plist
  • Objection enumeration in a separate spawn.

Must run sequentially (shared Frida session / spawn state):

  • Frida --no-pause spawn β†’ wait for bypass script to land β†’ drive app β†’ then attach further scripts.
  • Objection ios sslpinning disable β†’ then any traffic-dependent command.
  • ideviceimagemounter β†’ then frida-ps -U.
  • Keychain dump requires app launched at least once post-install.

Sub-Agent Delegation

Spawn a sub-agent when you can crisply isolate a scope:

  • Static-binary sub-agent β€” give it the decrypted App.app/, it runs class-dump + otool + strings + framework inventory in parallel, returns a structured summary of classes of interest, hardcoded secrets, and insecure API usage.
  • Keychain-extraction sub-agent β€” give it <bundle_id>, it runs objection ... keychain dump --json, classifies each entry by accessibility/ACL, emits findings per schemas/finding.json.
  • Optional: network-capture sub-agent driving Burp via proxy API while the main agent drives the UI.

Do not split Frida spawn + instrumentation across sub-agents β€” the Frida session is stateful and tied to one process.

Reasoning Budget

Use extended thinking for:

  • Interpreting decompiled Objective-C / Swift (Hopper / Ghidra / IDA output).
  • Designing custom Frida hooks when universal bypass fails.
  • Reasoning about cryptographic flow (key origin β†’ cipher β†’ storage).
  • MASVS severity triage when multiple subtle issues compound.

Skip extended thinking for:

  • Running canned Frida / Objection scripts from scripts/.
  • Parsing ios keychain dump --json output (pattern match).
  • otool / class-dump invocation and output collection.
  • File downloads, device enumeration, SSH pulls.

Multimodal Hooks

Mobile MCP (@anthropic/mobile-mcp --ios) provides iOS simulator / device UI automation:

  • Jailbreak-detection modal β€” screenshot the warning pre-bypass, then post-bypass absence, as evidence.screenshot.
  • Biometric prompt β€” capture Face ID / Touch ID sheet to prove the gate exists, then confirm bypass entered the protected screen.
  • App-switcher snapshot leak β€” screenshot the snapshot cache entry showing sensitive data on backgrounding.
  • WebView auth flow β€” capture the login redirect chain visually for SSO findings.

~/.claude/mcp.json:

{"mcpServers": {"mobile-mcp": {"command": "npx", "args": ["-y", "@anthropic/mobile-mcp", "--ios"]}}}

Structured Output

Emit every finding as JSON conforming to schemas/finding.json. iOS-specific fields: affected.bundle_id, affected.ios_version, affected.device_udid, affected.jailbroken, mastg_id, evidence.frida_pid, evidence.keychain_dump, evidence.screenshot.

Workflow Index

Workflow File
Full assessment runbook workflows/complete_assessment.md
SSL pinning bypass workflows/ssl_pinning_bypass.md
Jailbreak-detection bypass workflows/jailbreak_detection_bypass.md
Keychain extraction & triage workflows/keychain_extraction.md
IPA decryption / acquisition workflows/ipa_decryption.md
Auth & biometric testing workflows/auth_testing.md

Methodology Index

Area File
Recon methodology/recon.md
Static analysis methodology/static_analysis.md
Dynamic analysis methodology/dynamic_analysis.md
Network testing methodology/network_testing.md
Data storage methodology/data_storage.md
Crypto testing methodology/crypto_testing.md
Auth testing methodology/auth_testing.md

Payloads Index

File Purpose
payloads/jailbreak_detection_paths.txt Common files/schemes iOS apps probe for jailbreak
payloads/url_scheme_tests.txt URL scheme / deep-link test vectors

Frida Script Index (scripts/)

Script Purpose
ssl_pinning_bypass.js Universal SSL/TLS pinning bypass
jailbreak_bypass.js Jailbreak detection bypass
biometric_bypass.js Touch ID / Face ID bypass
keychain_hooks.js Keychain operation monitoring
crypto_hooks.js Cryptographic operation tracing
method_tracer.js Generic Objective-C method tracer

References Index

File Purpose
references/ios_vulns.md iOS vuln classes, severity tables, MASVS map
references/troubleshooting.md Frida / pinning / proxy issue triage
references/frida_ios_snippets.md Reusable Frida code snippets
references/bounty_patterns_2024_2026.md Post-2023 bounty TTPs (URL-scheme / Universal-Link hijack, WebView deep-link XSS, Keychain IAM-token insecurity)
checklists/owasp_mastg_ios.md Full MASTG iOS checklist
templates/finding_report.md Markdown finding template

Examples

File Purpose
examples/initial_setup.md First-contact blueprint
examples/ssl_bypass_run.md Pinning-bypass blueprint
examples/keychain_dump.md Keychain dump & triage blueprint

Tools

Tool Purpose Install
Frida / frida-tools Dynamic instrumentation pip install frida-tools (β‰₯ 16.6)
Objection Mobile exploration REPL pip install objection (β‰₯ 1.11)
libimobiledevice Device communication brew install libimobiledevice
ios-deploy App deploy brew install ios-deploy
ideviceinstaller App install / list brew install ideviceinstaller
class-dump ObjC header extraction brew install class-dump
frida-ios-dump FairPlay decryption github.com/AloneMonkey/frida-ios-dump
Burp Suite HTTPS interception PortSwigger
Hopper / IDA / Ghidra Binary RE Vendor / GitHub
Mobile MCP UI automation + screen capture npx @anthropic/mobile-mcp --ios

Prerequisites Quickcheck

Run before every engagement β€” fail fast if the lab is broken.

idevice_id -l               # at least one UDID listed
ideviceinfo | grep ProductVersion
frida-ps -U                 # frida-server reachable
objection -g <bundle_id> explore --startup-command 'ios info binary; exit'

Jailbroken setup: OpenSSH + Frida (Sileo repo build.frida.re) + AppSync Unified + Filza. Non-jailbroken fallback: patch IPA with objection patchipa to inject Frida Gadget, or mount the developer disk image with ideviceimagemounter.

Last Validated

2026-04. Frida β‰₯ 16.6, Objection β‰₯ 1.11, iOS 15–17 targets. For iOS 18+ jailbreak options shift to userspace-only (Dopamine/palera1n rootless) β€” SSH path is /var/jb/usr/bin/ssh and Frida server lives at /var/jb/usr/sbin/frida-server.

Source: SKILL.md on GitHub

2 alerts16d4 checks Β· Risk CRITICAL
  • Gen Agent Trust Hub16d

    iOS penetration testing toolkit for security professionals. The skill provides methodologies, workflows, and Frida scripts for analyzing mobile applications on jailbroken or stock devices. It utilizes standard industry tools and well-known community repositories for its tasks.

  • Socket16d

    11 alerts: gptSecurity, gptAnomaly

  • Snyk16d

    Risk: LOW Β· No issues

  • Runlayer7mo

    3/9 files flagged

Signed by skilld at f9bb3b2. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 months ago.

Steadyupdated 6 months ago

README badge

README badge for hardw00t/ai-security-arsenal/ios-pentest