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
标签:ADB工具, Android安全审计, Android渗透测试, APK逆向, Bug Bounty, Claude Desktop, DAST, JADX反编译, Manifest分析, MCP服务器, meg, Python安全工具, 云资产清单, 代码审计工具, 信息安全, 可自定义解析器, 安全专业人员, 安全测试自动化, 应用安全测试, 恶意软件分析, 目录枚举, 移动安全, 移动应用渗透测试, 逆向工具, 逆向工程, 错误基检测, 静态代码分析