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文件枚举, 云安全监控, 云资产清单, 安全测试, 攻击性安全, 目录枚举, 移动安全, 逆向工具, 逆向工程, 静态分析