Yash-Patil-1/mobilesentry
GitHub: Yash-Patil-1/mobilesentry
一款覆盖 Android 与 iOS 的综合移动应用安全测试框架,提供从静态逆向分析到 Frida 动态 Hook、流量拦截及 OWASP 合规审计的全流程能力。
Stars: 1 | Forks: 0
# MobileSentry 📱🔒
**移动应用安全测试框架** — 一款用于 Android (APK) 和 iOS (IPA) 应用安全分析、静态/动态分析、流量拦截以及包含绕过技术的自动化 OWASP Mobile Top 10 检查的综合工具包。
## 功能
### 阶段 1 — APK Analyzer ✅
- **APK 反编译** — 通过 apktool 反编译 APK,并提供目录树可视化
- **Manifest 分析** — 提取包名、版本、SDK 级别、debuggable 标志、allowBackup、网络安全配置、签名信息
- **权限分析** — 列出所有声明的权限,按严重性分类(dangerous/normal/signature/custom)并统计数量
- **组件枚举** — 枚举 Activities、services、receivers 和 content providers,包含导出状态和 intent-filter 检测
- **安全错误配置检查** — 8 项自动化检查:
- Debuggable 标志检测
- 备份开启漏洞
- 缺失网络安全配置
- 过低的 minSdkVersion 目标
- 不必要的导出组件
- 过度请求权限
- 敏感权限组合(Camera+Mic, Location+Background 等)
- **硬编码机密检测** — 23 种 regex(正则表达式)模式扫描反编译源码,查找:
- AWS keys、GitHub tokens、Slack tokens、JWT tokens
- Firebase URLs、Google API keys
- 密码、连接字符串、私钥
- OAuth secrets、API keys 等
- **统计信息** — 文件数量、DEX 类、native 代码检测、代码混淆检测、分析耗时
- **JSON 导出** — 完整的结构化报告,便于与其他工具集成
- **丰富的终端输出** — 带颜色区分的严重性徽章、格式化表格、面板和进度指示器
### 已完成阶段
| 阶段 | 模块 | 状态 |
|-------|--------|--------|
| 1 | APK Analyzer | ✅ 完成 |
| 2 | IPA Analyzer | ✅ 完成 |
| 3 | 静态分析引擎 (OWASP Mobile Top 10) | ✅ 完成 |
| 4 | SSL Pinning Bypass (Frida) | ✅ 完成 |
| 5 | Root/Jailbreak 检测绕过 (Frida) | ✅ 完成 |
| 6 | 流量拦截 (MITM, HAR 分析, TLS) | ✅ 完成 |
| 7 | 动态分析 | ✅ 完成 |
| 8 | 代码混淆检测 | ✅ 完成 |
| 9 | 报告生成 | ✅ 完成 |
## 安装说明
### Python 包
```
# Clone 仓库
git clone https://github.com/Yash-Patil-1/mobilesentry.git
cd mobilesentry
# 创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装 MobileSentry(推荐)
pip install -e .
# 或安装包含额外依赖的版本
pip install -e ".[analyze]" # For APK analysis (androguard)
pip install -e ".[all]" # All extras
# 验证是否正常工作
mobilesentry --help
```
### 系统依赖
**APK Analyzer** 需要:
- **apktool** — 用于 APK 反编译(机密扫描)
- **Java Runtime** — apktool 必需
**IPA Analyzer** 需要:
- **plutil** — 用于 plist 转换的 macOS 实用工具(或进行平滑处理)
- **unzip** — 用于解压 IPA(ZIP 归档)
- **file** — 用于 Mach-O 二进制文件检测
- **otool** — 可选,用于加密检测(仅限 macOS)
```
# Ubuntu/Debian
sudo apt install apktool default-jre unzip file
# macOS
brew install apktool
```
## 使用说明
### Frida — SSL Pinning Bypass 脚本生成
```
# 列出所有可用的 bypass 技术
mobilesentry frida list
# 仅列出 Android 技术
mobilesentry frida list android
# 仅列出 iOS 技术
mobilesentry frida list ios
# 生成所有 SSL bypass 脚本(双平台)
mobilesentry frida generate
# 仅生成 Android 脚本
mobilesentry frida generate android
# 仅生成 iOS 脚本
mobilesentry frida generate ios
# 指定自定义输出目录
mobilesentry frida generate all --output ./my_frida_scripts
```
生成的脚本按平台分类:
```
frida_scripts/
├── android/
│ ├── ssl_universal_android.js # 🌟 Best — hooks SSLContext, OkHttp, WebView, TrustKit
│ ├── ssl_okhttp_android.js # 🎯 Targeted — OkHttp3/4 CertificatePinner
│ ├── ssl_trustmanager_android.js # ✅ Good — Custom TrustManager injection
│ ├── ssl_webview_android.js # 🎯 Targeted — WebView SSL error bypass
│ ├── ssl_flutter_android.js # ✅ Good — Flutter SSL bypass (Dart + native)
│ └── ssl_xamarin_android.js # 🎯 Targeted — Xamarin.Android SSL bypass
└── ios/
├── ssl_universal_ios.js # 🌟 Best — NSURLSession, AFNetworking, TrustKit
├── ssl_afnetworking_ios.js # 🎯 Targeted — AFSecurityPolicy bypass
├── ssl_alamofire_ios.js # 🎯 Targeted — Alamofire ServerTrustManager
├── ssl_trustkit_ios.js # 🎯 Targeted — TrustKit library bypass
├── ssl_flutter_ios.js # ✅ Good — Flutter iOS SSL bypass
└── ssl_nsurlsession_ios.js # ✅ Good — Pure NSURLSession/NSURLConnection
```
结合 Frida 快速使用:
```
# Attach 到正在运行的 Android 应用
frida -U com.target.app -l frida_scripts/android/ssl_universal_android.js
# Spawn 并注入 Android 应用
frida -U -f com.target.app -l frida_scripts/android/ssl_universal_android.js --no-pause
# Spawn 并注入 iOS 应用
frida -U -f com.target.app -l frida_scripts/ios/ssl_universal_ios.js
```
### Frida — Root/Jailbreak 检测绕过脚本生成
```
# 列出所有可用的 root/jailbreak bypass 技术
mobilesentry frida root-bypass list
# 仅列出 Android 技术
mobilesentry frida root-bypass list android
# 仅列出 iOS 技术
mobilesentry frida root-bypass list ios
# 生成所有 root/jailbreak bypass 脚本(双平台)
mobilesentry frida root-bypass generate
# 仅生成 Android root bypass 脚本
mobilesentry frida root-bypass generate android
# 仅生成 iOS jailbreak bypass 脚本
mobilesentry frida root-bypass generate ios
# 指定自定义输出目录
mobilesentry frida root-bypass generate all --output ./my_bypass_scripts
```
生成的脚本按平台分类:
```
bypass_scripts/
├── android/
│ ├── root_universal_android.js # 🌟 Best — Hooks File.exists, Runtime.exec, System.getProperty, Build.TAGS,
│ │ ProcessBuilder, native access/stat, RootBeer, Superuser, Magisk
│ ├── root_magisk_android.js # 🎯 Targeted — Magisk-specific bypass (paths, env, mounts, Zygisk)
│ ├── root_rootbeer_android.js # 🎯 Targeted — RootBeer library bypass (all methods + native lib)
│ └── root_safetynet_android.js # 🎯 Targeted — SafetyNet/Play Integrity API bypass
└── ios/
├── root_universal_ios.js # 🌟 Best — Hooks NSFileManager, stat/access/open, fork/system, dlopen,
│ canOpenURL, sysctl, proc_info, sandbox, NSTask
├── root_cydia_ios.js # 🎯 Targeted — Cydia/Substrate app & library detection bypass
├── root_liberty_ios.js # 🎯 Targeted — Libhooker/rootless jailbreak bypass (Dopamine, Xina)
└── root_rootful_ios.js # 🎯 Targeted — Rootful jailbreak bypass (unc0ver, checkra1n)
```
结合 Frida 快速使用:
```
# Attach 到正在运行的 Android 应用
frida -U com.target.app -l bypass_scripts/android/root_universal_android.js
# Spawn 并注入 iOS 应用
frida -U -f com.target.app -l bypass_scripts/ios/root_universal_ios.js
```
### Frida — 运行时监控脚本生成与 Trace 分析(动态分析)
```
# 列出所有可用的运行时监控技术
mobilesentry frida dynamic list
# 仅列出 Android 技术
mobilesentry frida dynamic list android
# 仅列出 iOS 技术
mobilesentry frida dynamic list ios
# 生成所有运行时监控脚本(双平台)
mobilesentry frida dynamic generate
# 仅生成 Android 监控脚本
mobilesentry frida dynamic generate android
# 仅生成 iOS 监控脚本
mobilesentry frida dynamic generate ios
# 指定自定义输出目录
mobilesentry frida dynamic generate all --output ./my_monitor_scripts
# 分析捕获的 trace 文件
mobilesentry frida dynamic trace trace.json
```
生成的脚本按平台分类:
```
monitor_scripts/
├── android/
│ ├── monitor_universal_android.js # 🌟 Best — method calls, file I/O, crypto, DB, network, permissions
│ ├── monitor_method_tracer_android.js # ✅ Good — lightweight sensitive API tracing (Telephony, Accounts, Location, Camera, WebView)
│ ├── monitor_crypto_android.js # 🎯 Targeted — Cipher, KeyGenerator, MessageDigest, KeyStore, Signature
│ ├── monitor_database_android.js # 🎯 Targeted — SQLiteDatabase, Room, ContentResolver queries
│ ├── monitor_file_io_android.js # 🎯 Targeted — File, RandomAccessFile, Context directories, FileObserver
│ └── monitor_network_android.js # 🎯 Targeted — HttpURLConnection, OkHttp, WebSocket, DownloadManager
└── ios/
├── monitor_universal_ios.js # 🌟 Best — NSFileManager, NSUserDefaults, Keychain, NSURLSession, CLLocation
└── monitor_method_tracer_ios.js # ✅ Good — UIDevice, UIApplication, AVCaptureDevice, CNContactStore, WKWebView, CommonCrypto
```
结合 Frida 快速使用:
```
# Attach 到正在运行的 Android 应用并捕获 trace 输出
frida -U com.target.app -l monitor_scripts/android/monitor_universal_android.js 2>&1 | tee trace.json
# Spawn 并注入应用
frida -U -f com.target.app -l monitor_scripts/android/monitor_universal_android.js --no-pause 2>&1 | tee trace.json
# 分析捕获的 trace
mobilesentry frida dynamic trace trace.json
```
`DynamicAnalyzer` 会生成包含以下内容的综合报告:
- 事件类型细分(method_calls, file_io, crypto, db_query, network, permission)
- 被调用最多的方法及其调用次数
- 行为安全发现(加密调用量、敏感文件、SQL 注入风险、HTTP 请求)
- 敏感 API 使用清单
- 调用图可视化(节点和边)
### 代码混淆检测
```
# 列出所有可用的混淆检测技术(Android + iOS)
mobilesentry obfuscation list
# 分析 APK 的混淆情况
mobilesentry obfuscation analyze app.apk
# 分析 IPA 的混淆情况
mobilesentry obfuscation analyze app.ipa
# 将结果导出为 JSON
mobilesentry obfuscation analyze app.apk --json
```
各平台的混淆检测技术:
**Android(8 种技术):**
| 技术 | 严重性 | 描述 |
|-----------|----------|-------------|
| ProGuard/R8 | 🟡 中危 | 标准的类/方法/字段重命名、代码精简、mapping.txt 检查 |
| DexGuard | 🔴 高危 | 商业混淆 — 字符串加密、类加密、防篡改 |
| 字符串加密 | 🔴 高危 | 基于 XOR/AES 的字符串解密、char[] 构建、解密 helper |
| 隐藏反射 | 🔴 高危 | Class.forName(), Method.invoke(), DexClassLoader 动态分发 |
| Obfuscator-LLVM | 🔴 严重 | Native (.so) 代码混淆 — 控制流平坦化、虚假控制流、指令替换 |
| Packer/DEX 保护 | 🔴 严重 | UPX 壳、DEX 加密、DexClassLoader payload、反调试 |
| 资源混淆 | 🔵 低危 | 缩短或随机化的资源名称和 ID |
| 算术混淆 | 🟡 中危 | 通过表达式进行常量编码、XCH 链 |
**iOS(6 种技术):**
| 技术 | 严重性 | 描述 |
|-----------|----------|-------------|
| 符号混淆 | 🔴 高危 | 随机简短的函数/类符号名,阻止反汇编 |
| ObjC 元数据混淆 | 🔴 高危 | 混淆的类名、selectors、protocol 元数据 |
| 字符串加密 (iOS) | 🔴 高危 | 加密的 cstrings,在 ARM64 中逐字符解密 |
| OLLVM (iOS) | 🔴 严重 | LLVM 级别的控制流平坦化、虚假控制流、指令替换 |
| 控制流平坦化 | 🔴 高危 | 函数控制流图 (CFG) 的 switch-dispatch 平坦化模式 |
| 防 Hooking/防调试 | 🟡 中危 | ptrace(), sysctl(), dladdr() 调试器/钩子检测 |
### 流量拦截 — MITM 代理设置与分析
```
# 生成所有 mitmproxy addon 脚本(full、minimal、auth)
mobilesentry traffic setup
# 仅生成包含设备配置指南的全功能 addon
mobilesentry traffic setup full --guide
# 生成专注于认证的 addon
mobilesentry traffic setup auth
# 自定义输出目录
mobilesentry traffic setup all --output ./my_mitmproxy
```
生成的 addons 按类型分类:
```
mitmproxy_config/
├── mobilesentry_addon.py # 🌟 Full — Real-time security analysis + HAR capture
├── mobilesentry_minimal_addon.py # 📦 Minimal — Lightweight HAR capture only
├── mobilesentry_auth_addon.py # 🔑 Auth — OAuth/OIDC/token focused capture
└── DEVICE_SETUP.md # 📋 Device configuration guide
```
拦截流量:
```
# 使用 full addon 启动 mitmproxy
mitmproxy -s mitmproxy_config/mobilesentry_addon.py
# 或使用 mitmdump 进行无头捕获
mitmdump -s mitmproxy_config/mobilesentry_addon.py
# 将设备代理配置为 :8080
# 安装 CA 证书:在设备上打开 http://mitm.it
```
### 流量分析 — HAR 文件安全分析
```
# 分析捕获的 HAR 文件以发现安全问题
mobilesentry traffic analyze capture.har
```
分析检查包括:
- HTTPS 与 HTTP 的比率
- 缺失的安全标头(HSTS, CSP, XFO 等)
- Cookie 安全属性(Secure, HttpOnly, SameSite)
- 认证标头类型(Bearer, Basic, API keys)
- URL 和响应体中的敏感数据暴露
- TLS 版本和密码分析
- 弱加密算法检测(RC4, DES, 3DES 等)
### TLS 证书分析
```
# 分析来自捕获流量的 TLS 证书
mobilesentry traffic certs capture.har
```
证书分析检查:
- 过期日期及距离过期的天数
- 自签名证书检测
- 通配符证书检测
- 已弃用的 TLS 版本(SSLv3, TLSv1.0, TLSv1.1)
- 弱加密套件检测
- 证书链长度
### 完整的 APK 分析
```
mobilesentry apk analyze app.apk
```
### 结合 JSON 导出的分析
```
mobilesentry apk analyze app.apk --json
```
### 快速获取 APK 信息
```
mobilesentry apk info app.apk
```
### 仅反编译 APK
```
mobilesentry apk decompile app.apk
```
### 扫描硬编码机密
```
mobilesentry apk secrets app.apk
```
### IPA 分析
```
# 完整 IPA 分析
mobilesentry ipa analyze app.ipa
# 快速 IPA 信息
mobilesentry ipa info app.ipa
# 将 IPA 解压为 .app bundle
mobilesentry ipa decompile app.ipa
# 扫描硬编码的 secrets
mobilesentry ipa secrets app.ipa
```
### 统一报告生成
将多个分析器的结果合并为一个 HTML、JSON 或 Markdown 报告。
```
# 根据 APK 分析的 JSON 文件生成 HTML 报告
mobilesentry report --apk ./mobilesentry_output/com.example_analysis.json --format html
# 合并 APK + OWASP + 混淆结果
mobilesentry report --apk ./output/com.example_analysis.json --owasp ./output/com.example_owasp.json --obfuscation ./output/com.example_obfuscation.json
# 生成 JSON 报告(用于 CI/工具集成)
mobilesentry report --apk ./result.json --format json
# 生成 Markdown 报告(用于文档)
mobilesentry report --apk ./result.json --format md --output ./REPORT.md
```
生成的 HTML 报告包含:
- 带风险评分(0–100)的执行摘要
- 严重性分布柱状图
- 按严重性排序的所有发现(严重 → 信息)
- 详细的 APK 元数据部分
- 详细的 IPA 元数据部分
- OWASP 类别细分
- 混淆检测结果
- 动态分析摘要
- 流量分析概览
- 深色主题、响应式布局、可折叠部分
### 帮助
```
mobilesentry --help
mobilesentry apk --help
mobilesentry ipa --help
```
## 示例输出
### APK 元数据
```
┌─────────────────────────────────────────────────────┐
│ APK Metadata │
├──────────────────────┬──────────────────────────────┤
│ Package │ com.example.app │
│ Version │ 2.1.0 (42) │
│ Min SDK │ 26 │
│ Target SDK │ 34 │
│ Size │ 12.4 MB │
│ Debuggable │ ✅ No │
│ Allow Backup │ ⚠️ Enabled │
│ Network Security │ ⚠️ Missing │
│ Signed │ ✅ Yes │
│ Signature │ APK Signature Scheme v2 │
└──────────────────────┴──────────────────────────────┘
```
### 权限分析
权限按严重性以不同颜色标识:
- 🔴 **DANGEROUS** — 敏感数据访问权限(Camera, Location, SMS 等)
- 🟠 **SIGNATURE** — 系统级权限
- 🔵 **UNKNOWN** — 自定义或未公开的权限
- ✅ **NORMAL** — 低风险权限(Internet, Network 等)
### 安全问题
每个问题都显示在一个带边框的面板中,包含:
- 严重性徽章(CRITICAL/HIGH/MEDIUM/LOW)
- 漏洞解释描述
- 可操作的修复建议
### 机密检测
硬编码的机密信息以表格形式显示,包含严重性、类型、截断的值、文件路径和行号。
## 架构
```
mobilesentry/
├── mobilesentry/
│ ├── __init__.py # Package metadata
│ ├── __main__.py # Python -m entry point
│ ├── cli.py # CLI with argparse + Rich formatting
│ ├── apk_analyzer.py # Android APK analysis engine
│ ├── ipa_analyzer.py # iOS IPA analysis engine
│ ├── static_analyzer.py # OWASP Mobile Top 10 static analysis
│ ├── ssl_pinning.py # Frida SSL pinning bypass script generation
│ ├── root_bypass.py # Frida root/jailbreak detection bypass script generation
│ ├── traffic_intercept.py # MITM proxy setup, HAR analysis, TLS cert analysis
│ ├── dynamic_analyzer.py # Runtime monitoring script gen + trace analysis
│ ├── obfuscation_detect.py # Code obfuscation detection (ProGuard, OLLVM, packers, etc.)
│ └── config.py # Configuration constants
├── pyproject.toml # Package config + ruff rules
├── README.md
└── LICENSE
```
### APK 分析流水线
```
APK File
│
▼
androguard (APK loading)
│
├── Parse AXML Manifest ──► Package, Version, SDK, Permissions, Components
│
├── Security Checks ──► Debuggable, Backup, Exported Components, Permissions
│
▼
apktool (Decompilation)
│
└── Source Scanning ──► 23 regex patterns for hardcoded secrets
│
▼
JSON + Rich Terminal Output
```
### IPA 分析流水线
```
IPA File
│
▼
unzip (Extraction)
│
├── Parse Info.plist ──► Bundle ID, Version, Min OS, SDK, Permissions
│
├── Find .app Bundle ──► Frameworks, Entitlements, Binary
│
├── Binary Analysis ──► Architectures, PIE, ARC, Stack Canary, Encryption
│
├── SDK Detection ──► 65+ known frameworks matched
│
├── Security Checks ──► ATS, File Sharing, Permissions, Entitlements
│
└── Source Scanning ──► 23 regex patterns for hardcoded secrets
│
▼
JSON + Rich Terminal Output
```
## 安全检查
### APK 安全检查
| 检查项 | 描述 | 严重性 |
|-------|-------------|----------|
| Debuggable 应用 | `android:debuggable="true"` 允许附加调试器 | 🔴 高危 |
| 开启备份 | `android:allowBackup="true"` 允许 ADB 数据外泄 | 🟡 中危 |
| 缺失网络配置 | 无 `networkSecurityConfig` = 平台默认的明文策略 | 🔵 低危 |
| 过低的 minSdkVersion | 目标 API 级别过时,缺乏安全特性 | 🟡 中危 |
| 导出的组件 | 组件可被其他应用在无权限的情况下访问 | 🟡 中危 |
| 过多的权限 | 请求了 10 个以上的 dangerous 权限 | 🟡 中危 |
| 敏感组合 | Camera+Mic, Location+Background 等 | 🔵 低危 |
### IPA 安全检查
| 检查项 | 描述 | 严重性 |
|-------|-------------|----------|
| ATS 被禁用 | `NSAllowsArbitraryLoads` 开启了明文 HTTP | 🔴 高危 |
| 不安全的 HTTP 例外 | 允许特定域名通过 HTTP 加载 | 🟡 中危 |
| 开启文件共享 | `UIFileSharingEnabled` 通过 USB 暴露 Documents | 🟡 中危 |
| 缺失 PIE | 二进制文件非位置无关(易受 ROP 攻击) | 🔴 高危 |
| 缺失 ARC | 无自动引用计数(存在内存漏洞) | 🟡 中危 |
| 缺失 Stack Canary | 无栈溢出保护 | 🔴 高危 |
| 缺失加密 | 二进制文件未经过 FairPlay 加密(更易被逆向工程) | 🟡 中危 |
| 高风险 Entitlements | 调试器附加、动态库注入、执行未签名代码 | 🔴 高危 |
| 过多的权限 | 5 个以上的高风险权限(camera, mic, location 等) | 🟡 中危 |
## 许可证
MIT License — 详见 [LICENSE](LICENSE)
## 作者
**Yash Patil** — 网络安全分析师 | 渗透测试工程师
- GitHub: [@Yash-Patil-1](https://github.com/Yash-Patil-1)
- LinkedIn: [Yash Patil](https://www.linkedin.com/in/yash-patil-997357330)
标签:JS文件枚举, 云安全监控, 云资产清单, 安全测试, 攻击性安全, 目录枚举, 移动安全, 逆向工具, 逆向工程, 静态分析