mcpField
I
ios-pentest

ios-pentest

github.com/hardw00tSecurity10739 installsUpdated 28w ago
Repository

About ios-pentest

ios-pentest is a skill that routes iOS application security assessments through focused runbooks and methodology guides. It is intended for testers examining app binaries and installed apps, covering OWASP MASTG activities from reconnaissance through reporting.

Key features

  1. 01Runbooks across iOS assessment stages
  2. 02SSL pinning and jailbreak checks
  3. 03Keychain and app-storage analysis
  4. 04Network, authentication, and cryptography testing
  5. 05Structured findings with iOS-specific evidence

Use cases

  1. 01Assess an IPA and installed iOS app
  2. 02Investigate credentials in Keychain or app files
  3. 03Test HTTPS, gRPC, or WebSocket traffic
  4. 04Check OWASP MASTG and MASVS requirements

MCP support

The skill mentions Mobile MCP for iOS simulator or device UI automation and screenshot capture. It includes a Mobile MCP server configuration example.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/hardw00t/ai-security-arsenal --skill ios-pentest

After installing, type/ios-pentestin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

checklists/
owasp_mastg_ios.md
examples/
initial_setup.md
keychain_dump.md
ssl_bypass_run.md
methodology/
auth_testing.md
crypto_testing.md
data_storage.md
dynamic_analysis.md
network_testing.md
recon.md
static_analysis.md
payloads/
jailbreak_detection_paths.txt
url_scheme_tests.txt
references/
bounty_patterns_2024_2026.md
frida_ios_snippets.md
ios_vulns.md
troubleshooting.md
schemas/
finding.json
scripts/
biometric_bypass.js
crypto_hooks.js
jailbreak_bypass.js
keychain_hooks.js
method_tracer.js
ssl_pinning_bypass.js
templates/
finding_report.md
workflows/
auth_testing.md
complete_assessment.md
ipa_decryption.md
jailbreak_detection_bypass.md
keychain_extraction.md

Details

From the project README

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.

Comments

Markdown supported