AppSentinel 是一套面向 Android 应用安全检测的开源系统,它把 DLP 数据防泄漏、静态分析、动态沙箱、SCA 组件分析与统计风险评分整合到同一条链路中,目标是让移动端安全检测不再依赖多个分散工具。下方的 DLP 监控面板展示了敏感数据检测的实时统计:身份证号、手机号、银行卡号、API 密钥等都会被自动识别并标记风险等级。

快速开始
环境要求
- Python 3.10+
- Java JRE 11+ (FlowDroid 依赖)
- Docker & Docker Compose (可选,用于部署)
- Android SDK (可选,用于动态分析)
安装依赖
cd AppSentinel
pip install -r requirements.txt
初始化
python main.py init
启动 API 服务
python main.py serve
# API文档: http://localhost:8000/docs
CLI 分析 APK
# 分析单个APK
python main.py analyze /path/to/app.apk
# 批量分析
python main.py batch /path/to/apk_dir/
# 测试DLP分类器
python main.py dlp-test "13800138000"
Docker 一键部署
项目同样提供了 Docker Compose 配置,一条命令即可完成部署:
docker-compose -f docker/docker-compose.yml up -d
项目结构
AppSentinel/
├── main.py # 主入口 (CLI + API启动)
├── requirements.txt # Python依赖
│
├── core/ # 核心模块
│ └── models.py # 数据模型定义
│
├── config/ # 配置管理
│ └── settings.py # 全局配置 (支持YAML+环境变量)
│
├── dlp_engine/ # DLP数据防泄漏引擎
│ ├── classifier.py # 敏感数据分类器 (正则+AC自动机+校验算法)
│ └── grpc_server.py # DLP gRPC/HTTP服务
│
├── static_analyzer/ # 静态分析模块
│ ├── apk_preprocessor.py # APK预处理/解压
│ ├── manifest_auditor.py # AndroidManifest安全审计
│ └── taint_analyzer.py # 污点分析 (FlowDroid集成)
│
├── dynamic_sandbox/ # 动态分析沙箱
│ └── hook_agent.py # Frida Hook代理
│
├── sca_checker/ # 软件成分分析
│ └── component_analyzer.py # 第三方库漏洞检测
│
├── stats_engine/ # 统计评分引擎
│ └── risk_scorer.py # 加权风险评分 + Apriori关联规则
│
├── report_generator/ # 报告生成
│ └── generator.py # HTML/PDF/SARIF/JSON报告
│
├── api_gateway/ # API网关
│ └── main.py # FastAPI应用 (RESTful API)
│
├── docker/ # Docker部署
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── init-db.sql
│
├── plugins/ # 插件目录
├── tests/ # 测试
├── docs/ # 文档
├── data/ # 数据目录
└── reports/ # 报告输出
核心特性
AppSentinel 的核心能力覆盖六个维度,从 静态分析 到动态沙箱,从 SCA 组件分析到统计评分,下面逐一拆解。
1. DLP 数据防泄漏引擎
- 身份证号识别(含校验算法 GB11643-1999)
- 手机号、邮箱、银行卡号(Luhn 算法)
- IMEI/IMSI 设备标识检测
- 密码明文、API 密钥检测
- AC 自动机高性能多模式匹配
- 上下文感知的策略违规判定
2. 静态分析
- AndroidManifest 安全审计(组件导出、权限、调试模式)
- 基于 FlowDroid 的污点分析
- DLP 增强的 Source/Sink 标注
- 已知 SDK 路径剪枝优化
- 过度权限检测
3. 动态分析
- Frida 运行时 Hook
- 网络层监控(HttpURLConnection、OkHttp、HttpsURLConnection)
- 文件 I/O 监控(FileOutputStream、SharedPreferences)
- 数据库操作监控(SQLiteDatabase)
- 敏感 API 调用追踪
4. SCA 组件分析
- Android 第三方库已知漏洞数据库
- OWASP Dependency-Check 集成
- CVE 漏洞映射
5. 统计风险评分
- 加权评分模型:$RiskScore = \Sigma(W_i \times X_i)$
- CVSS 评分 + DLP 敏感度 + 路径复杂度 + 组件导出
- Apriori 关联规则挖掘
- 风险等级:LOW / MEDIUM / HIGH / CRITICAL
6. 报告生成
- HTML 报告(可视化面板)
- JSON 报告(程序化处理)
- SARIF 格式(CI/CD 集成)
- PDF 报告(WeasyPrint)
项目地址
https://github.com/cyx1029/AppSentinel
项目代码已在 GitHub 开源,感兴趣可以直接拉取研究。更多移动安全与开发实战内容,欢迎到 云栈社区 一起交流。
|