APP Pentest & Teardown Analyzer
用途
把"对一个 APP 做完整拆解"的工作流标准化:从静态拆包、SDK/域名梳理、IP→云厂商定位,到沙箱动态运行抓包、架构推导,最终产出 PRM 文档、行业调研与整改建议。本 skill 适用于竞品拆解、安全合规审计、供应链 SDK 排查、云资源溯源等场景。
输入与确认
开始任何分析前,先与用户确认以下信息(缺失时以问句一次性收齐):
- APP 包:
.apk/.aab/.ipa/ 应用宝下载链接 / 直接给包路径 - 平台:Android / iOS / 双端
- 测试账号:用户名+密码(用于动态遍历功能;否则只做静态+游客态动态)
- 业务域:APP 所在行业(金融/直播/电商/工具/游戏…),用于行业调研对标
- 合规边界:是否仅授权静态分析、能否进行动态抓包、是否允许上传到第三方扫描平台(VirusTotal、MobSF SaaS)
- 输出语言/形式:默认中文 Markdown PRM;可叠加架构图(mermaid/SVG)
没有授权 → 不要做动态抓包/反代。没有账号 → 跳过登录态功能遍历,明示"未覆盖功能"。
工作流(六阶段)
阶段0 准备环境 → 阶段1 静态拆包 → 阶段2 SDK与域名 → 阶段3 IP/云厂商 → 阶段4 安全评估 → 阶段5 沙箱动态 → 阶段6 PRM输出
每个阶段产物都落在 output/<app_name>_<date>/ 子目录,最终汇总到 PRM 报告。
阶段 0:环境准备
按需启用工具,缺失时引导安装:
- Android 静态:
apktool、jadx、aapt2、androguard(pip) - iOS 静态:
unzip(IPA本身是zip)、class-dump、otool、Hopper/Ghidra(可选) - 沙箱动态:模拟器(Android Studio AVD / Genymotion / iOS Simulator)、
Frida、Objection、mitmproxy或Charles - 网络:
dig、whois、nslookup、curl - 批量分析:
MobSF(本地 docker 部署优先)
参考脚本与命令清单见 references/tools.md。
阶段 1:静态拆包
Android:
scripts/static_unpack.sh <app.apk> output/<name>/static/
脚本会自动:解压资源、apktool d、jadx -d 反编译 dex、提取 AndroidManifest.xml 权限/组件/intent-filter、列出 lib/* 的 so、产出 manifest_summary.json。
iOS:解压 IPA→Payload/*.app/,读取 Info.plist、embedded.mobileprovision、Frameworks 目录、Mach-O 头部信息(otool -L 看依赖动态库)。
输出物:
static/manifest_summary.json—— 包名、版本、权限、四大组件、URL Schemestatic/strings.txt—— 所有字符串(grep 用)static/decompiled/—— 反编译源码或类清单
阶段 2:SDK 与域名识别
2.1 SDK 识别(必须含厂商与功能)
按"包路径前缀 + so 名 + 资源指纹"三路匹配,输出统一表格。匹配规则与速查表见 references/sdk_catalog.md(覆盖 200+ 主流 SDK:腾讯/阿里/字节/Google/Meta/Firebase/Bugly/友盟/极光/MobTech/声网/融云/微信支付/支付宝SDK 等)。
scripts/detect_sdks.py output/<name>/static/ -o output/<name>/sdks.json
输出字段固定:
| 字段 | 说明 | |---|---| | sdk_name | SDK 名称 | | package | 命中包名/库名 | | vendor | 提供厂商(如 腾讯、字节跳动、Google) | | category | 功能分类(推送/统计/IM/支付/广告/直播/地图/热修/风控) | | capability | 提供能力简述 | | version | 解析到的版本(无则 unknown) | | risk_note | 已知风险(数据采集面、合规问题) |
2.2 域名提取
scripts/extract_domains.py output/<name>/static/ -o output/<name>/domains.txt
策略:strings 抽取 + 正则 https?://[a-z0-9.-]+、[a-z0-9-]+\.[a-z]{2,},去重,过滤 schema.org/w3.org 等噪声白名单(见 references/noise_domains.txt)。
阶段 3:域名 → IP → 云厂商归属
scripts/resolve_and_locate.py output/<name>/domains.txt -o output/<name>/network_assets.csv
脚本按域名做:dig A/AAAA/CNAME → 取 IP → 反查 ASN/Org(用 ipinfo.io 或 ip-api.com 离线 MaxMind 库)→ 映射到云厂商。
云厂商指纹(ASN / Org 关键词)见 references/cloud_asn_map.md:腾讯云、阿里云、华为云、AWS、Google Cloud、Azure、Cloudflare、Akamai、字节火山引擎、UCloud、京东云、金山云等。
输出 CSV 字段:domain, cname_chain, ip, asn, org, cloud_vendor, region(if可推), 备注。
阶段 4:安全风险评估
按 OWASP MASVS / MSTG 维度走一遍清单,速查见 references/security_checklist.md。重点:
- 加固/混淆:是否加固(梆梆、爱加密、360、腾讯乐固、Bangcle、DexGuard);类名混淆程度
- 权限滥用:危险权限是否与功能对齐;后台定位/通讯录/短信权限是否过度
- 数据存储:明文 SharedPreferences/SQLite、硬编码 AK/SK/Token(用
references/secret_patterns.md的正则跑一遍) - 网络通信:是否强制 HTTPS、证书校验/SSL Pinning、是否信任用户 CA、HTTP 明文
- WebView:
setJavaScriptEnabled+addJavascriptInterface、file://跨域 - 组件暴露:
exported=true的 Activity/Service/Receiver/Provider 是否做权限校验 - 第三方 SDK 合规:是否在隐私政策中披露;初始化时机是否在用户同意之前
- iOS:ATS 配置、URL Scheme 劫持、Keychain 使用、是否启用 PIE/ARC/Stack Canary
可选:把 APK 喂给本地 MobSF(docker run -p 8000:8000 opensecurity/mobile-security-framework-mobsf),自动得到 CVSS 评分;解析其 JSON 报告并合并到我们的输出。
输出 security_findings.json,字段:id, category, severity(高/中/低/信息), title, evidence(文件:行号), impact, remediation。
阶段 5:沙箱动态分析
前置:用户已提供测试账号且明确授权动态测试。
- 模拟器启动(root 过的 AVD 或 iOS 真机/Simulator)
- 安装 APP,启动 mitmproxy 反向代理(
scripts/run_sandbox.sh一键拉起) - 信任根证书(Android 7+ 需 Frida 绕过 SSL Pinning,模板脚本
scripts/frida_unpinning.js) - 用 Appium /
adb monkey/ 人工脚本完成"主路径用例":登录→首页→核心业务→设置→退出 - 全程录屏 + 抓 HAR + Frida hook 关键 API(网络、加密、存储)
- 收尾导出:
flow.har、screen.mp4、frida_log.txt
APP 架构图自动推导:把 HAR 里的所有请求按域名/路径聚类,结合阶段 3 的云厂商归属和阶段 2 的 SDK 列表,画出客户端模块 → 网关 → 微服务 → 第三方 SDK 后端 的 mermaid 图。模板见 references/arch_diagram_template.md。
scripts/build_arch_diagram.py output/<name>/flow.har output/<name>/sdks.json -o output/<name>/architecture.mmd
阶段 6:PRM 文档与行业调研输出
PRM(Product Reverse Memo)是最终交付物,结构固定,模板见 assets/prm_template.md:
1. 摘要(一页纸:APP定位/技术栈印象/核心风险/Top3建议)
2. APP 基础信息(包名、版本、平台、加固、签名)
3. SDK 全清单(表格,按"厂商×功能"分组)
4. 网络资产清单(域名/IP/云厂商表格 + 资产分布饼图)
5. 安全评估(按严重程度排序,每条含证据与整改建议)
6. APP 架构图(mermaid + 文字解读)
7. 行业调研(同行业 Top3-5 竞品对比:技术栈、SDK选型、云厂商偏好、合规姿态)
8. 优化整改建议(按 P0/P1/P2 排序,含工作量估算)
9. 附录(工具版本、扫描日志、未覆盖范围声明)
行业调研部分需要联网:调用 WebSearch/WebFetch 获取该行业 Top 竞品的公开信息(七麦、点点、SimilarWeb、各厂商技术博客),不要编造数据。
资源说明
scripts/static_unpack.sh—— Android/iOS 一键拆包scripts/detect_sdks.py—— SDK 指纹识别scripts/extract_domains.py—— 域名提取scripts/resolve_and_locate.py—— 域名解析+云厂商归属scripts/build_arch_diagram.py—— 从 HAR + SDK 清单生成 mermaid 架构图scripts/run_sandbox.sh—— 沙箱+mitmproxy 启动模板scripts/frida_unpinning.js—— 通用 SSL Pinning 绕过references/sdk_catalog.md—— SDK 厂商×功能速查表references/cloud_asn_map.md—— ASN/Org → 云厂商映射references/security_checklist.md—— OWASP MASVS 中文清单references/secret_patterns.md—— 密钥/Token 正则references/noise_domains.txt—— 域名提取噪声白名单references/tools.md—— 工具安装与命令速查references/arch_diagram_template.md—— 架构图模板assets/prm_template.md—— PRM 报告模板
红线与免责
- 仅对授权范围内的 APP 进行分析;公开应用市场下载不等于授权动态测试
- 测试账号使用完毕后建议用户改密
- 报告中不得包含真实用户数据、明文凭证;截图打码后再嵌入
- 涉及个人信息保护法/GDPR 的 SDK 调用需在报告中明确指出,不替用户做合规结论
Scan to join WeChat group