PayamDeveloper/PermSentry

GitHub: PayamDeveloper/PermSentry

PermSentry 通过静态解析 Android APK 的权限声明,识别危险权限和可疑权限组合并给出量化风险评分,帮助开发者快速筛查应用的安全风险。

Stars: 1 | Forks: 0

# PermSentry 一款针对 Android `.apk` 文件的静态权限风险扫描器。 PermSentry 会解析 APK 的 manifest 并标记以下内容: - **危险权限**(Android 自身的运行时权限分类) - **易被滥用权限** —— 未被官方归类为“危险”但在恶意软件/间谍软件/广告软件中异常常见的权限(`SYSTEM_ALERT_WINDOW`、`BIND_ACCESSIBILITY_SERVICE`、`QUERY_ALL_PACKAGES` 等) - **可疑权限组合** —— 匹配已知恶意软件行为模式的特征(短信+联系人窃取、覆盖层/银行木马、OTP 拦截、下载器、指纹采集、跟踪软件) ……并将所有这些汇总为一个 0–100 的单一风险评分,附带 Low/Medium/High/Critical 标签。 这是一个**启发式筛查工具**,而非恶意软件的最终判定。它只是提示你需要更深入地检查哪些内容——它不能替代动态分析、代码审查或真正的逆向工程过程。 ## 安装说明 ``` git clone https://github.com//permsentry.git cd permsentry pip install -e . ``` 或者,你也可以直接安装依赖项,并将其作为模块运行,而无需安装该包: ``` pip install -r requirements.txt python -m permsentry.cli scan app.apk ``` ## 使用方法 ``` # 人类可读的终端报告 permsentry scan app.apk # 机器可读的 JSON (用于管道传递到其他工具 / CI) permsentry scan app.apk --json # 将 JSON 直接写入文件 permsentry scan app.apk --output report.json ``` 退出代码:`0` 表示 Low/Medium 风险,`2` 表示 High/Critical 风险——非常适合在 CI 流程中基于有风险的构建触发失败。 ### 示例输出 ``` ╭──────────── PermSentry — APK Info ────────────╮ │ com.example.totallylegit │ │ version: 2.1 (21) min_sdk=21 target_sdk=30 │ ╰────────────────────────────────────────────────╯ Risk score: 100/100 Risk level: Critical (6 permissions declared) Flagged Permissions ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ ┃ Permission ┃ Category ┃ Weight ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ │ BIND_ACCESSIBILITY_SERVICE │ abuse-prone │ 9 │ │ QUERY_ALL_PACKAGES │ abuse-prone │ 5 │ │ READ_SMS │ dangerous │ 9 │ ... Suspicious Permission Combinations: • Overlay / banking-trojan pattern (+35) Can draw over other apps AND read/control screen content... Matched: BIND_ACCESSIBILITY_SERVICE, SYSTEM_ALERT_WINDOW ``` ## 运行原理 1. **解析** —— [androguard](https://github.com/androguard/androguard) 解码 APK 编译后的二进制文件 `AndroidManifest.xml`,提取出声明的 `` 列表以及包元数据。 2. **评分** —— `risk_engine.py` 根据两个静态表(`permissions_db.py`)和一组可疑的共现模式遍历权限列表,生成限制在 100 以内的加权分数。 3. **报告** —— `reporter.py` 会渲染出一个带有颜色的终端表格(通过 [rich](https://github.com/Textualize/rich))或 JSON。 ## 项目布局 ``` permsentry/ permissions_db.py # dangerous + abuse-prone permission tables manifest_parser.py # androguard wrapper -> ApkInfo risk_engine.py # scoring logic + suspicious combo patterns reporter.py # terminal + JSON rendering cli.py # argparse entry point tests/ test_risk_engine.py # unit tests for scoring logic (no APK file needed) ``` ## 路线图(v2 构想) - 导出组件分析(带有 `android:exported="true"` 且没有权限保护的 activities/services/receivers) - 检测会禁用现代 Android 安全默认设置的 `minSdkVersion` / `targetSdkVersion` 组合 - 证书/签名分析 - 导出 HTML 报告 - 批量扫描 APK 目录 ## 局限性 - 它仅对声明的权限进行**静态**分析——它不会执行应用,因此无法看到运行时行为、混淆/动态加载的代码或 native 库行为。 - 声明了某个权限并不意味着它被恶意滥用;该工具旨在辅助聚焦人工审查重点,而非取代人工审查。 - 危险/易被滥用的权限表是手动维护的——请定期将其与[官方 Android 权限文档](https://developer.android.com/reference/android/Manifest.permission)进行核对,因为 Google 会偶尔添加或重新分类权限。 ## 开源许可 MIT
标签:Android安全, APK分析, Python, 云安全监控, 无后门, 移动端安全, 逆向工具, 静态分析