skills/ios-pentest/SKILL.md
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.
npx skillsauth add hardw00t/ai-security-arsenal ios-pentestInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
"pentest iOS app", "test this IPA", "bypass SSL pinning iPhone", "extract keychain", "MASTG iOS", "iOS jailbreak bypass", "analyze .ipa", "test iPhone app".
android-pentest.web-pentest / api-pentest.secure-code-review with iOS language packs.macos-pentest.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
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/Appstrings -a App.app/App | grep ...plutil -p App.app/Info.plistMust run sequentially (shared Frida session / spawn state):
--no-pause spawn → wait for bypass script to land → drive app → then attach further scripts.ios sslpinning disable → then any traffic-dependent command.ideviceimagemounter → then frida-ps -U.Spawn a sub-agent when you can crisply isolate a scope:
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.<bundle_id>, it runs objection ... keychain dump --json, classifies each entry by accessibility/ACL, emits findings per schemas/finding.json.Do not split Frida spawn + instrumentation across sub-agents — the Frida session is stateful and tied to one process.
Use extended thinking for:
Skip extended thinking for:
scripts/.ios keychain dump --json output (pattern match).otool / class-dump invocation and output collection.Mobile MCP (@anthropic/mobile-mcp --ios) provides iOS simulator / device UI automation:
evidence.screenshot.~/.claude/mcp.json:
{"mcpServers": {"mobile-mcp": {"command": "npx", "args": ["-y", "@anthropic/mobile-mcp", "--ios"]}}}
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 | 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 |
| 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 |
| 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 |
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 |
| 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 |
| 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 |
| 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 |
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.
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.
development
Software Composition Analysis: find vulnerable dependencies, correlate CVE/GHSA/OSV across ecosystems, generate CycloneDX/SPDX SBOMs, assess license compliance, and run reachability-aware triage to suppress unexploitable findings. Use when scanning package dependencies (npm, PyPI, Maven, Cargo, Go, RubyGems, Composer), reviewing PR lockfile diffs, generating SBOMs, auditing licenses, hunting malicious packages, or auditing the software supply chain. Triggers on requests to scan dependencies, check vulnerable packages, generate SBOM, license compliance, typosquat/dependency-confusion review, or reachability-based vuln triage.
development
Static Application Security Testing orchestration — run and compose Semgrep, CodeQL, Bandit, gosec, Brakeman, SpotBugs, ESLint; author custom rules; ingest SARIF; triage and rank findings by exploitability. Use this skill when asked to scan code for vulnerabilities, write Semgrep/CodeQL rules, triage SAST output, reduce false positives, or integrate SAST into CI/CD. Triggers on phrases like 'scan this code', 'write a Semgrep rule', 'triage these findings', 'SARIF', 'SAST in CI', or when a repo is handed over for a security review.
testing
Internal network and Active Directory penetration testing skill for corporate environments. Use when performing authorized internal network assessments, AD attack path analysis, lateral movement, privilege escalation, and post-exploitation across Windows/Linux estates. Covers BloodHound, Impacket, NetExec/CrackMapExec, Responder, Rubeus, mimikatz, certipy. Triggers on requests to pentest internal networks, attack AD, perform lateral movement, Kerberoast, DCSync, or escalate privileges.
tools
LLM and AI application security testing skill for prompt injection (direct, indirect, multimodal), system-prompt extraction, RAG poisoning, memory poisoning, MCP server injection, skill-file injection, agentic tool misuse, computer-use UI injection, and excessive agency. Authorization required — this skill tests AI systems you are explicitly permitted to assess. Triggers on requests to test LLM / AI-agent / RAG / MCP / computer-use security, perform prompt injection, extract system prompts, poison RAG or memory, audit agent tool use, or evaluate AI guardrails.