Agent Skill
2/7/2026

ios-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.

H
hardw00t
26GitHub Stars
1Views
npx skills add hardw00t/ai-security-arsenal

SKILL.md

Nameios-pentest
DescriptionComprehensive 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.

name: ios-pentest description: "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."

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

WorkflowFile
Full assessment runbookworkflows/complete_assessment.md
SSL pinning bypassworkflows/ssl_pinning_bypass.md
Jailbreak-detection bypassworkflows/jailbreak_detection_bypass.md
Keychain extraction & triageworkflows/keychain_extraction.md
IPA decryption / acquisitionworkflows/ipa_decryption.md
Auth & biometric testingworkflows/auth_testing.md

Methodology Index

AreaFile
Reconmethodology/recon.md
Static analysismethodology/static_analysis.md
Dynamic analysismethodology/dynamic_analysis.md
Network testingmethodology/network_testing.md
Data storagemethodology/data_storage.md
Crypto testingmethodology/crypto_testing.md
Auth testingmethodology/auth_testing.md

Payloads Index

FilePurpose
payloads/jailbreak_detection_paths.txtCommon files/schemes iOS apps probe for jailbreak
payloads/url_scheme_tests.txtURL scheme / deep-link test vectors

Frida Script Index (scripts/)

ScriptPurpose
ssl_pinning_bypass.jsUniversal SSL/TLS pinning bypass
jailbreak_bypass.jsJailbreak detection bypass
biometric_bypass.jsTouch ID / Face ID bypass
keychain_hooks.jsKeychain operation monitoring
crypto_hooks.jsCryptographic operation tracing
method_tracer.jsGeneric Objective-C method tracer

References Index

FilePurpose
references/ios_vulns.mdiOS vuln classes, severity tables, MASVS map
references/troubleshooting.mdFrida / pinning / proxy issue triage
references/frida_ios_snippets.mdReusable Frida code snippets
references/bounty_patterns_2024_2026.mdPost-2023 bounty TTPs (URL-scheme / Universal-Link hijack, WebView deep-link XSS, Keychain IAM-token insecurity)
checklists/owasp_mastg_ios.mdFull MASTG iOS checklist
templates/finding_report.mdMarkdown finding template

Examples

FilePurpose
examples/initial_setup.mdFirst-contact blueprint
examples/ssl_bypass_run.mdPinning-bypass blueprint
examples/keychain_dump.mdKeychain dump & triage blueprint

Tools

ToolPurposeInstall
Frida / frida-toolsDynamic instrumentationpip install frida-tools (≥ 16.6)
ObjectionMobile exploration REPLpip install objection (≥ 1.11)
libimobiledeviceDevice communicationbrew install libimobiledevice
ios-deployApp deploybrew install ios-deploy
ideviceinstallerApp install / listbrew install ideviceinstaller
class-dumpObjC header extractionbrew install class-dump
frida-ios-dumpFairPlay decryptiongithub.com/AloneMonkey/frida-ios-dump
Burp SuiteHTTPS interceptionPortSwigger
Hopper / IDA / GhidraBinary REVendor / GitHub
Mobile MCPUI automation + screen capturenpx @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.

Skills Info
Original Name:ios-pentestAuthor:hardw00t