kankburhan/iosHunt

GitHub: kankburhan/iosHunt

一款端到端的 iOS 渗透测试自动化工具,将静态分析、Frida 动态插桩、AI 驱动自主渗透和实时漏洞验证整合为单条命令流水线,帮助安全研究人员高效发现并验证 iOS 应用漏洞。

Stars: 1 | Forks: 0

# iOSHunt **单条命令实现 iOS 渗透测试流水线 — 达到漏洞悬赏标准的漏洞检测,附带实时漏洞验证与自动复现** `ioshunt` 是一款综合性的 CLI 工,旨在实现 iOS 应用程序安全评估的整个生命周期自动化。从下载 IPA 到带有**运行时证据捕获**的 AI 驱动自主渗透测试,它处理了一切事务,让你可以专注于发现漏洞。 ## 功能特性 (v1.15.0) ### 1. 自动化流水线 - **下载**:从 App Store 获取 IPA(处理身份验证和国家/地区选择)。 - **注入**:自动插入 `FridaGadget.dylib`。 - **重签名**:使用你的开发者配置文件对应用进行重签名。 - **安装**:通过 `ios-deploy` 或 `ideviceinstaller` 部署到已连接的设备。 - **非越狱侧载 (新增)**:采用分层安装器,支持 `ideviceinstaller` (libimobiledevice)、`ios-deploy` 以及 AltStore 降级回退方案。 ### 2. 静态分析 (26 阶段侦察引擎 + 17 个专用检测器) - **机密扫描**:检测硬编码密钥、令牌和私有数据(12+ 种模式,并附带熵分析)。 - **配置缺陷**:检查 `Info.plist` (ATS, 文件共享) 和授权机制 (`get-task-allow`)。 - **二进制安全**:验证 PIE、ARC、Stack Canaries 和加密状态。 - **数据流分析**:从源(机密信息)到汇(日志记录、网络、存储)的污点追踪。在真实应用上可追踪超过 42K+ 个数据流。 - **加密问题**:弱算法、不安全的随机数生成、ECB 模式检测。 - **代码注入**:SQL 注入、XSS、格式化字符串和反序列化漏洞。 - **高级检测器**:Keychain API 滥用、日志数据泄露、授权配置错误、不安全的网络配置。 - **漏洞悬赏检测器 (v1.15.0 新增)**:WebView XSS、生物识别绕过、剪贴板泄露、隐私清单、已弃用 API、快照保护、SDK 供应链扫描。 - **攻击链检测 (新增)**:识别可以串联起来以达到最大影响的漏洞组合。 - **报告**:支持 JSON、Markdown 和 HTML 报告,并提供完整的污点图可视化。 ### 3. AI 驱动分析 - **AI 评估**:将报告发送给 AI 进行深度漏洞分析和修复建议。 - **多提供商**:兼容 OpenAI (GPT-4o)、Anthropic (Claude)、Ollama、Groq 以及任何兼容 OpenAI 的 API。 - **OWASP MASVS 映射**:自动化分类评估结果。 ### 4. AI 自动渗透测试 (新增) 完全自主的 AI 驱动渗透测试。AI 代理将编排整个评估过程: - **MCP 服务器模式**:作为 MCP 工具服务器连接到 Claude Desktop — Claude 将化身为你的 AI 渗透测试员。 - **独立模式**:运行 `ioshunt autopentest` 以启动带有工具调用功能的独立 AI 代理循环。 - **19 种工具**:侦察、结果分析、Frida 脚本生成、实时验证、设备端复现、证据捕获、非越狱侧载、报告等。 - **代理循环**:AI 决定下一步分析什么,深入挖掘发现结果,生成 PoC,验证实时 API,在设备上复现,并撰写最终报告。 - **多 API 支持**:兼容 Claude API (原生工具调用)、GPT-4 (函数调用) 或任何兼容 OpenAI 的端点。 ### 5. 动态分析 (运行时) - **Frida 集成**:附带自动设备检测功能,可附加到正在运行的进程。 - **绕过机制**:SSL Pinning、生物识别、越狱检测、iXGuard/反调试。 - **取证**:转储 Keychain、Cookies 和 NSUserDefaults。 - **监控**:实时加密操作、HTTP 头、URL scheme、NSCoding 和 Keychain 监控。 - **自定义脚本**:用于自定义 Frida 脚本的插件系统。 ### 6. 实时漏洞验证 (新增 — 第 27 阶段) 针对真实服务主动探测发现结果以确认可利用性 — 不再需要凭空猜测。 - **API 密钥验证**:针对 Google、Stripe、GitHub、Slack、Mapbox、SendGrid、OpenAI、Firebase 的特定提供商探测。 - **URL/端点探测**:访问暴露的 URL 并检查响应中是否包含敏感数据泄露。 - **状态跟踪**:每项发现结果都会被标记为 `CONFIRMED`、`DEAD` 或 `UNREACHABLE`。 - **证据**:为每项发现保存原始 HTTP 响应,以便写入最终报告。 ### 7. 设备端自动复现 (新增 — 第 28 阶段) 静态发现结果会在连接的设备上进行实时复现 — 通过 FridaGadget 实现对非越狱设备的友好支持。 - **类别感知 Hook**:secret/url → network,keychain → SecItem*,storage → NSUserDefaults/NSFileManager,crypto → CCCrypt/MD5/PBKDF,url_scheme → openURL。 - **标准信号**:从 Frida 输出中解析出的 `[REPRO_HIT]` 标记会判定 `Finding.Reproduced=true`。 - **证据捕获**:屏幕截图 (`idevicescreenshot`)、网络捕获 (`rvictl` + `tcpdump`)、Frida 交互记录。 - **打包输出**:将每个会话的证据目录自动打包为单个 `.tar.gz` 文件以便交付。 ### 8. 非越狱侧载 (新增 — 第 29 阶段) 适用于原生 iOS 的分层安装器 — 无需越狱。 - **主要方式**:`ideviceinstaller` (libimobiledevice)。 - **降级回退链**:`ios-deploy` → AltStore/SideStore。 - **配对助手**:一键式 `sideload pair` 流程,处理“信任”提示。 - **设备管理**:列出设备、列出已安装的应用、按 bundle ID 卸载。 ### 9. 实用工具 - **环境检查**:验证环境健康状况和依赖项。 - **更新**:二进制文件自我更新。 - **清理**:工作区清理。 - **配置**:管理 AI API 凭证和设置。 ## 安装说明 ### 前置条件 - macOS (运行 `codesign`, `security` 所需) - Go 1.24+ - `frida`, `objection`, `ideviceinstaller`, `ios-deploy` - libimobiledevice 套件:`idevice_id`, `idevicepair`, `ideviceinstaller`, `idevicescreenshot` - `rvictl` + `tcpdump` — 用于 pcap 捕获 (随 Xcode 附带) - AltStore/SideStore (可选,作为备用的侧载方法) ``` # 通过 Homebrew 安装 libimobiledevice + ideviceinstaller brew install libimobiledevice ideviceinstaller ios-deploy ``` ### 快速安装 (通过 go install) ``` # 安装最新版本 go install github.com/kankburhan/iosHunt@latest # 验证安装 ioshunt --help ``` ### 从源码构建 ``` git clone https://github.com/kankburhan/iosHunt.git cd iosHunt go install # 或者直接从 repo 安装 go install github.com/kankburhan/iosHunt@master ``` ## 运行 Naabu ### 完整流水线 运行完整的工作流 (下载 -> 注入 -> 重签名 -> 安装 -> 附加): ``` ioshunt com.example.app ``` ### 静态分析 ``` ioshunt recon com.example.app ioshunt report com.example.app --format html ``` ### AI 驱动的漏洞评估 ``` # 配置 AI provider ioshunt config set ai_api_key sk-xxxx ioshunt config set ai_model gpt-4o ioshunt config show # 使用 AI 分析最新扫描 ioshunt analyze com.example.app ``` ### AI 自动渗透测试 (独立模式) ``` # 配置 AI(推荐使用 Anthropic Claude 以获得最佳 tool-use) ioshunt config set ai_base_url https://api.anthropic.com/v1 ioshunt config set ai_api_key sk-ant-xxxx ioshunt config set ai_model claude-sonnet-4-5-20241022 # 启动自主 pentest ioshunt autopentest com.example.app # 包含更多迭代 ioshunt autopentest com.example.app --rounds 20 # 覆盖 model ioshunt autopentest com.example.app --model gpt-4o ``` ### AI 自动渗透测试 (Claude Desktop MCP) 将 iOSHunt 作为 MCP 服务器连接到 Claude Desktop,以进行交互式 AI 渗透测试。 **1. 添加到 Claude Desktop 配置中** (`~/.claude/claude_desktop_config.json`): ``` { "mcpServers": { "ioshunt": { "command": "ioshunt", "args": ["mcp"] } } } ``` **2. 重启 Claude Desktop**,然后询问: ``` "Perform a full security assessment of com.example.app" "Find all hardcoded API keys in the AirAsia app and check if they're live" "Generate Frida scripts to bypass SSL pinning and monitor keychain access" "Create a professional pentest report for the latest scan" ``` **可用的 MCP 工具 (19):** | 工具 | 描述 | |------|-------------| | `ios_recon` | 完整的 26 阶段静态分析 | | `ios_download_ipa` | 从 App Store 下载 IPA | | `ios_get_findings` | 按类别/严重程度查询发现结果 | | `ios_get_app_info` | 应用元数据与二进制安全 | | `ios_generate_frida_script` | AI 生成的 Frida 脚本 | | `ios_attach_frida` | 运行时插桩 | | `ios_dump_runtime` | Keychain/Cookies/默认值提取 | | `ios_check_device` | 设备连接检查 | | `ios_generate_report` | 多格式报告生成 | | `ios_inject_and_resign` | Frida gadget 注入 + 重签名 | | `ios_install_app` | 设备端安装 | | `ios_pentest_status` | 会话状态与下一步操作 | | `ios_search_strings` | 应用二进制文件中的模式搜索 | | `ios_exploit_verify` | 可利用性验证 | | `ios_live_verify` | **新增** — 实时探测发现结果,标记为 CONFIRMED/DEAD/UNREACHABLE | | `ios_reproduce_finding` | **新增** — 通过 Frida 类别 Hook 在设备上自动复现发现结果 | | `ios_capture_evidence` | **新增** — 屏幕截图 / 网络抓包 (rvictl+tcpdump) / 打包为 tar.gz | | `ios_sideload` | **新增** — 通过 libimobiledevice 回退链进行非越狱安装 | | `ios_auto_hunt` | **新增** — 完整流水线:侦察 → 验证 → 复现 → 证据打包 | ### 非越狱完整流水线 (推荐用于原生设备) 针对非越狱设备的端到端工作流 — 配对一次,后续即可完全自动化: ``` # 1. 准备设备(出现提示时在屏幕上点击“Trust”) ioshunt sideload pair # 2. 运行静态分析 ioshunt recon com.target.app # 3. 注入 FridaGadget + 重新签名 ioshunt inject com.target.app ioshunt resign com.target.app # 4. Sideload 修补后的 IPA ioshunt sideload install -i target_resigned.ipa --launch # 5. 完整 autohunt:实时验证 → 设备端复现 → evidence bundle ioshunt autohunt com.target.app --skip-recon --duration 30 --netcap ``` ### 实时漏洞验证 针对真实服务主动探测硬编码的机密信息和 URL: ``` # 验证所有 HIGH+ 发现 ioshunt livetest com.target.app # 验证所有严重级别,限制为 50 条 ioshunt livetest com.target.app --severity LOW --max 50 # 输出到自定义目录 ioshunt livetest com.target.app --output-dir ./evidence/live ``` ### 设备端复现 附加针对发现结果类别量身定制的 Frida Hook,以在运行时确认问题: ``` # 复现所有 HIGH+ 发现(默认) ioshunt reproduce com.target.app # 复现单个 category ioshunt reproduce com.target.app --category keychain --duration 30 # 通过 ID 复现特定发现 ioshunt reproduce com.target.app --id FIND-0042 --verbose # Spawn 应用而不是附加 ioshunt reproduce com.target.app --spawn ``` ### 非越狱设备管理 ``` ioshunt sideload list # List connected devices ioshunt sideload pair # Pair device (tap Trust first) ioshunt sideload install -i app.ipa --launch # Install + launch ioshunt sideload apps # List installed user apps ioshunt sideload uninstall -b com.target.app # Uninstall by bundle ID ``` ### 全自动狩猎 (autohunt) 将所有阶段串联在一起的单条命令: ``` # 完整运行:recon + 实时验证 + 设备端复现 + pcap + bundle ioshunt autohunt com.target.app --netcap # 跳过 recon(重用上次报告) ioshunt autohunt com.target.app --skip-recon # 仅限 HIGH/CRITICAL,每个复现脚本 45 秒 ioshunt autohunt com.target.app --severity HIGH --duration 45 # 针对特定设备 UDID ioshunt autohunt com.target.app --device 00008101-XXXXXXXXXXXX ``` ### 运行时分析 ``` # 附加 SSL Pinning 和 Jailbreak Bypass ioshunt attach "App Name" --ssl --bypass # 监控 Crypto 操作和 Headers ioshunt attach "App Name" --crypto --headers # 监控 Keychain 和 URL Schemes ioshunt attach "App Name" --keychain-monitor --url-scheme-monitor ``` ### 取证 ``` ioshunt dump keychain com.example.app ioshunt dump cookies com.example.app ioshunt dump defaults com.example.app ``` ### 维护 ``` ioshunt doctor # Check environment ioshunt update # Update tool ioshunt clean # Clean workspace ``` ## 架构 ``` ioshunt ├── cmd/ # CLI commands (Cobra) │ ├── root.go # Main pipeline orchestrator │ ├── recon.go # Static analysis command │ ├── analyze.go # AI analysis command │ ├── autopentest.go # AI auto-pentest command │ ├── mcp.go # MCP server command │ ├── attach.go # Frida attachment │ ├── dump.go # Forensic extraction │ ├── livetest.go # NEW — Live exploit verification CLI │ ├── reproduce.go # NEW — On-device reproduction CLI │ ├── sideload.go # NEW — Non-JB sideload CLI │ ├── autohunt.go # NEW — Full autonomous hunt pipeline │ ├── report_loader.go # NEW — Shared helper: loadLatestReport() │ └── ... ├── core/ # Core modules │ ├── recon.go # 26-phase static analysis engine + 17 detectors (2200+ LOC) │ ├── dataflow.go # Taint tracking & data flow analysis │ ├── mcp.go # MCP server implementation │ ├── mcp_runtime.go # NEW — 5 new MCP tool implementations │ ├── autopentest.go # Autonomous AI pentest engine │ ├── livetest.go # NEW — Live API key / URL probing engine │ ├── evidence.go # NEW — Evidence capture (screenshot, netcap, bundle) │ ├── reproduce.go # NEW — Frida-based finding reproduction engine │ ├── sideload.go # NEW — Non-JB device installer (libimobiledevice) │ ├── ai.go # AI integration (OpenAI-compatible) │ ├── report.go # Report generation (JSON/MD/HTML) │ ├── frida.go # Frida runtime instrumentation │ └── ... └── assets/ # Frida scripts ├── ssl_bypass.js ├── crypto_monitor.js ├── auto_repro_network.js # NEW — URLSession / CFURLRequest hooks ├── auto_repro_keychain.js # NEW — SecItem* hooks ├── auto_repro_storage.js # NEW — NSUserDefaults / NSFileManager / fopen ├── auto_repro_crypto.js # NEW — CCCrypt / MD5 / PBKDF hooks ├── auto_repro_url_scheme.js # NEW — AppDelegate / SceneDelegate openURL └── ... ``` ## 命令参考 | 命令 | 描述 | |---------|-------------| | `ioshunt ` | 完整流水线 (下载 → 注入 → 重签名 → 安装 → 附加) | | `ioshunt recon ` | 静态分析 (26 阶段) | | `ioshunt analyze ` | AI 漏洞评估 | | `ioshunt autopentest ` | AI 自主渗透测试 (代理循环) | | `ioshunt autohunt ` | **新增** — 完整流水线:侦察 → 实时验证 → 复现 → 证据收集 | | `ioshunt livetest ` | **新增** — 针对真实服务实时探测发现结果 | | `ioshunt reproduce ` | **新增** — 通过 Frida Hook 在设备上自动复现发现结果 | | `ioshunt sideload ` | **新增** — 非越狱设备管理 (list/pair/install/uninstall/apps) | | `ioshunt mcp` | 为 Claude Desktop 启动 MCP 服务器 | | `ioshunt attach ` | Frida 运行时附加 | | `ioshunt dump ` | 取证数据提取 | | `ioshunt report ` | 生成格式化的报告 | | `ioshunt download ` | 从 App Store 下载 IPA | | `ioshunt config show\|set` | 管理配置 | | `ioshunt doctor` | 环境健康检查 | | `ioshunt update` | 自我更新 | | `ioshunt clean` | 清理工作区 | ## 贡献 欢迎贡献代码!请开启一个 Issue 或提交一个 Pull Request。 ## 许可证 MIT
标签:Bug Bounty, Docker支持, EVTX分析, Frida, Ghidra, iOS安全, IPA分析, Sideload, 云安全监控, 云资产清单, 人工智能驱动的安全, 加密漏洞, 可自定义解析器, 密钥泄露检测, 提示注入防御, 搜索语句(dork), 攻击链分析, 日志审计, 源代码安全, 漏洞利用验证, 目录枚举, 移动安全, 网络安全, 自动化安全评估, 越狱绕过, 逆向工程, 隐私保护, 静态分析