mathis2001/APAIA

GitHub: mathis2001/APAIA

一款集成在 Claude Desktop 中的 Android 渗透测试 MCP 服务器,通过 ADB 和 JADX 实现自动化侦察、静态分析和漏洞利用验证。

Stars: 0 | Forks: 0

# 🤖 Android Pentest AI Assistant (APAIA) MCP Server Android Pentest AI Assistant (APAIA) 是一款专为渗透测试设计的 Claude Desktop MCP 服务器,旨在通过 ADB 和 JADX 提供 reconnaissance(侦察)和静态代码分析方面的帮助。 ## 前置条件 - Python 3.10+ - `adb` 在 PATH 中(Android SDK platform-tools) - `jadx` — https://github.com/skylot/jadx/releases - 已连接的 Android 设备或模拟器 - Claude Desktop ## 安装 ``` git clone https://github.com/mathis2001/APAIA cd APAIA python3 -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt ``` ## Claude Desktop 配置 **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows:** `%APPDATA%\Claude\claude_desktop_config.json` **Linux:** `~/.config/Claude/claude_desktop_config.json` ``` { "mcpServers": { "android-pentest": { "command": "/ABSOLUTE/PATH/APAIA/.venv/bin/python", "args": ["/ABSOLUTE/PATH/APAIA/server.py"], "env": { "JADX_PATH": "/usr/local/bin/jadx", "ANDROID_PENTEST_WORKDIR": "/tmp/android-pentest" } } } } ``` ## 工具参考 ### 🔍 设备和包 | 工具 | 描述 | |------|-------------| | `list_devices` | 已连接的 ADB 设备 | | `device_info` | 操作系统、架构、SELinux、root 状态 | | `list_packages` | 筛选条件:all/system/third-party | | `app_info` | 版本、SDK、路径、可调试状态 | ### 📦 APK + JADX 静态分析 | 工具 | 描述 | |------|-------------| | `pull_apk` | 从设备拉取 APK。支持分离式 APK。 | | `jadx_decompile` | 反编译:`manifest_only`(5秒,侦察用)或 `full`(30-300秒,源码) | | `jadx_get_manifest` | 查看解码后的 AndroidManifest.xml | | `jadx_list_files` | 浏览反编译后的文件(按路径/扩展名筛选) | | `jadx_read_file` | 读取指定的 Java/XML 文件 | | `jadx_search` | 在所有 Java 源码中搜索(密钥、URL、加密算法等) | | `jadx_status` | 显示已拉取/反编译的内容 | ### ⚡ 组件枚举(基于清单) | 工具 | 描述 | |------|-------------| | `list_exported_components` | 导出的 activities/services/receivers/providers — 从实际清单解析 | | `list_deeplinks` | URI schemes + 来自清单的 intent filter data | | `list_permissions` | 声明的 + 运行时授予的权限 | | `list_content_providers` | 带有 authorities、permissions、grantUriPermissions 的 providers | ### 📤 Intent 交互 | 工具 | 描述 | |------|-------------| | `send_intent` | am start/broadcast/startservice,带类型化的 extras | | `open_deeplink` | 在设备上打开 URI | ### 👆 UI 自动化 | 工具 | 描述 | |------|-------------| | `ui_tap` / `ui_swipe` | 触摸交互 | | `ui_input_text` | 输入到聚焦字段 | | `ui_keyevent` | ENTER=66, DEL=67, BACK=4, TAB=61 | | `ui_clear_field` | 全选 + 删除 | | `take_screenshot` | 屏幕截图保存为本地 PNG | | `dump_ui_hierarchy` | uiautomator XML 转储(查找坐标) | ### 🎯 PoC 攻击 | 工具 | 描述 | |------|-------------| | `poc_bruteforce_login` | UI 暴力破解,带成功/失败检测 | | `poc_fuzz_deeplinks` | 深度链接模糊测试,带 `{FUZZ}` 模板 | | `poc_intent_fuzzer` | 批量发送 intent,带不同 extras | | `poc_query_content_provider` | 未授权访问 + SQLi 测试 | ### 📋 运行时分析 | 工具 | 描述 | |------|-------------| | `capture_logcat` | 定时 logcat(按 tag/package 筛选) | | `list_app_files` | 浏览应用数据目录(run-as / root) | | `pull_app_file` | 从设备拉取文件 | ## 渗透测试工作流 ``` # 侦察 list_packages(filter='third-party') app_info('com.example.app') # 快速获取 + 解码(仅清单) pull_apk('com.example.app') jadx_decompile('com.example.app', mode='manifest_only') # 攻击面映射 list_exported_components('com.example.app') list_deeplinks('com.example.app') list_content_providers('com.example.app') list_permissions('com.example.app') # 完整源码分析(必要时) jadx_decompile('com.example.app', mode='full') jadx_search('com.example.app', pattern='API_KEY|secret|password', context_lines=5) jadx_search('com.example.app', pattern='setJavaScriptEnabled') jadx_search('com.example.app', pattern='MODE_WORLD_READABLE') jadx_search('com.example.app', pattern='SELECT.*FROM', file_filter='*.java') jadx_list_files('com.example.app', extension='java', path_filter='sources/com/example/auth') jadx_read_file('com.example.app', 'sources/com/example/LoginActivity.java') # 组件交互 open_deeplink('myapp://reset?token=INJECT') send_intent(action='com.example.ADMIN_ACTION', component='com.example/.AdminActivity') poc_query_content_provider(uri='content://com.example.provider/users') # UI PoC take_screenshot() # → find element positions dump_ui_hierarchy() # → get exact coordinates poc_bruteforce_login( username='admin@example.com', passwords=['admin','password','1234','test123'], username_coords=[540,800], password_coords=[540,960], submit_coords=[540,1100], success_indicator='Dashboard' ) # 运行时分析 capture_logcat(package='com.example.app', duration_seconds=10, level='D') list_app_files('com.example.app', path='/shared_prefs') pull_app_file(package='com.example.app', remote_path='/data/data/com.example.app/shared_prefs/prefs.xml', local_path='/tmp/prefs.xml') ``` ## 环境变量 | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `JADX_PATH` | `jadx`(来自 PATH) | jadx 二进制文件的绝对路径 | | `ANDROID_PENTEST_WORKDIR` | `~/.android-pentest` | APK 和反编译输出的工作目录 | ## 截图和视频记录 https://github.com/user-attachments/assets/c9c3da45-78d7-47f4-98ad-e9d7b46b0829 https://github.com/user-attachments/assets/3e67dbd4-9fc7-4f74-8eea-b91b97240e7d https://github.com/user-attachments/assets/250d6847-c490-42e8-86a0-6dfe8774ee63 Recon1 Recon2 Recon3 Recon4 manifest-audit
标签:ADB工具, Android安全审计, Android渗透测试, APK逆向, Bug Bounty, Claude Desktop, DAST, JADX反编译, Manifest分析, MCP服务器, meg, Python安全工具, 云资产清单, 代码审计工具, 信息安全, 可自定义解析器, 安全专业人员, 安全测试自动化, 应用安全测试, 恶意软件分析, 目录枚举, 移动安全, 移动应用渗透测试, 逆向工具, 逆向工程, 错误基检测, 静态代码分析