hackyshadab/SecureAPK
GitHub: hackyshadab/SecureAPK
一个集成了静态分析、机器学习和威胁情报的混合式Android恶意软件分析平台,提供可解释的判定结果。
Stars: 1 | Forks: 0
# SecureAPK








SecureAPK 是一个针对 APK 文件的混合移动恶意软件分析平台。它结合了:
- 针对 manifest、权限、熵、字符串、图标和证书特征的 **静态 APK 分析**
- 使用 VirusTotal 和 MalwareBazaar 的 **威胁情报查询**
- 具备 SHAP 风格可解释性的 **机器学习分类**
该项目包含一个 Flask 后端、一个基于浏览器的仪表盘、一个公共落地页以及一个 Flutter 移动客户端入口。
## 在线演示
👉 https://secureapk.online/
## 系统架构

## 项目快照
| 领域 | 详情 |
|---|---|
| 后端 | Flask + Gunicorn |
| 分析引擎 | `analysis/` 下的 Python 辅助模块 |
| ML 模型包 | `datamodel.pkl` |
| 威胁情报 | VirusTotal + MalwareBazaar |
| 仪表盘 | `templates/index.html` |
| 公共网站 | `templates/landing.html` |
| 移动客户端 | `flutter/lib/main.dart` |
| 部署 | AWS Lightsail 就绪 |
## SecureAPK 的功能
用户上传一个 `.apk` 文件。SecureAPK 随后:
1. 验证文件类型和大小。
2. 提取 APK 元数据,如包名、版本、权限、证书提示和图标特征。
3. 从 `classes.dex` 和 manifest 字符串中读取静态指标。
4. 使用文件哈希值查询 VirusTotal 和 MalwareBazaar。
5. 从静态信号构建 ML 特征向量。
6. 生成带有综合评分和人类可读决策的最终判定。
7. 返回 JSON 报告并渲染仪表盘以供交互式审查。
该评分并非基于单一信号。它是模型输出、威胁情报和静态分析的融合。
## 为什么选择 SecureAPK
- 混合检测(ML + 静态分析 + 威胁情报)
- 使用 SHAP 的可解释 AI
- 实时 APK 分析流水线
- 集成 DevSecOps 流水线
- 在 AWS 上的生产就绪部署
## 仓库结构
```
SecureAPK/
├─ app.py
├─ config.py
├─ analysis/
│ ├─ static_analyzer.py
│ ├─ icon_utils.py
│ ├─ vt_lookup.py
│ └─ utils.py
├─ templates/
│ ├─ landing.html
│ └─ index.html
├─ static/
│ └─ assets/
├─ images/
├─ flutter/
│ └─ lib/main.dart
├─ requirements.txt
├─ requirements-lightsail.txt
├─ wsgi.py
├─ start.sh
├─ secureapk.service.sample
└─ nginx-secureapk.conf.sample
```
## 核心应用流程
```
flowchart TD
A[User uploads APK] --> B[Flask /analyze]
B --> C[Validate extension and size]
C --> D[Static analysis]
D --> D1[Manifest and permissions]
D --> D2[DEX entropy and strings]
D --> D3[Icon extraction and hash]
D --> D4[Certificate fingerprint]
D --> E[Threat intelligence]
E --> E1[VirusTotal hash lookup]
E --> E2[MalwareBazaar hash lookup]
D --> F[Feature vector]
E --> F
F --> G[ML model prediction]
G --> H[SHAP explanation]
H --> I[Combined verdict]
I --> J[JSON response + dashboard]
```
## 仪表盘部分
Web 仪表盘被组织成多个命名标签页,以便日后能以清晰、适合向招聘人员展示的方式记录截图。
### 1. 上传与分析
这是 APK 提交的入口点。它包含拖放上传区域、文件选择、分析触发器和进度指示器。

### 2. 概览
此标签页总结了扫描结果、最终评分、判定和高级指标。它是分析的摘要说明。

### 3. 静态
此标签页显示 APK 元数据和静态分析结果,例如:
- 包名
- 应用标签
- 版本详情
- 权限
- 危险权限
- 证书指纹
- 图标相似度
- 熵
- 可疑字符串和指标

### 4. 情报
此标签页显示来自 VirusTotal 和 MalwareBazaar 的威胁情报输出。

### 5. ML
此标签页展示机器学习概率、最终模型决策以及用于论证预测的 SHAP 风格解释。

### 6. YARA 规则
此标签页为分析师风格的使用渲染了一个生成的规则视图,并提供复制/下载操作。

### 7. 移动 UI
提供了一个基于 Flutter 的轻量级界面,用于上传 APK 文件和查看分析结果。
专为与 SecureAPK 后端快速交互而设计,支持实时移动恶意软件扫描。


## 落地页部分
`templates/landing.html` 中的公共落地页与仪表盘是分开的,作为产品官方网站。其部分包括:
- **主视觉区域**:第一印象、产品定位和主要行动号召
- **为严谨安全而生**:功能价值主张
- **工作原理**:分析流水线演练
- **核心功能**:用于静态分析、ML、威胁情报、混合评分和仪表盘的功能卡片
- **为什么 SecureAPK 更胜一筹**:比较风格的部分
- **立即开始**:下载和访问的行动号召
- **定价方案**:产品风格的包装部分
- **API 与开发者访问**:集成和协作区域
- **深受安全专业人士信赖**:用户评价模块
- **获取最新威胁警报**:邮件通讯订阅部分
- **联系我们**:联系和销售部分

## API 端点
### `GET /`
返回公共落地页。
### `GET /dashboard`
返回分析仪表盘。
### `GET /health`
用于部署和正常运行时间监控的健康检查端点。
### `POST /analyze`
接受名为 `file` 的文件字段的多部分表单上传。
#### 请求
```
POST /analyze
Content-Type: multipart/form-data
```
#### 输入约束
- 仅接受 `.apk` 文件
- 最大上传大小:**50 MB**
#### 响应
该端点返回包含三个主要模块的 JSON:
- `meta`
- `analysis`
- `model`
示例结构:
```
{
"meta": {
"sha256": "...",
"package": "...",
"app_label": "...",
"version_name": "...",
"version_code": "..."
},
"analysis": {
"permissions": [],
"dangerous_permissions": [],
"cert_fingerprint": "...",
"cert_trusted_match": false,
"icon_hash": "...",
"icon_similarity_score": 0.0,
"entropy_classes_dex": 0.0,
"suspicious": {
"url_count": 0,
"ip_count": 0,
"keyword_hits": 0
},
"vt": {
"detections": 0,
"total": 0
},
"malwarebazaar": {
"detections": 0,
"query_status": "ok"
}
},
"model": {
"probability_fake": 0.0,
"final_score": 0.0,
"decision": "Likely Safe",
"explanations": []
}
}
```
## ML 特征集
后端根据以下特征构建模型输入:
- `permissions_score`
- `entropy`
- `cert_mismatch`
- `suspicious_strings`
- `icon_similarity`
- `ip_count`
- `url_count`
- `dangerous_permissions`
- `cert_trusted_match`
- `perm_dangerous_count`
- `perm_normal_count`
- `perm_custom_count`
最终评分是 ML 和威胁情报信号的加权混合。
## 技术栈
- 用于后端 Web 服务的 **Flask**
- 用于生产 WSGI 服务的 **Gunicorn**
- 用于 ML 运行时的 **Pandas / NumPy / SciPy / scikit-learn**
- 用于可解释性的 **SHAP**
- 用于 APK 检查的 **Androguard / apkutils2**
- 用于图标相似性检查的 **Pillow / imagehash**
- 用于 API 查询的 **Requests**
- 用于移动客户端入口的 **Flutter**
- 用于 Web UI 的 **Tailwind CSS** 和前端 JavaScript
## 设置说明
### 生产环境运行
推荐的生产环境入口点是配合 Gunicorn 的 `wsgi.py`。
### 本地运行
安装依赖后,可从项目根目录启动后端。
```
python3 -m venv venv
source venv/bin/activate
pip install -r requirements-lightsail.txt
gunicorn --workers 1 --threads 2 --bind 0.0.0.0:8000 wsgi:app
```
## 在 AWS Lightsail 上部署
1. 创建一个 Ubuntu Lightsail 实例。
2. 附加一个静态 IP。
3. 开放端口 `22`、`80` 和 `443`。
4. 上传此仓库的 zip 文件或在服务器上克隆该仓库。
5. 创建并激活 Python 虚拟环境。
6. 安装 `requirements-lightsail.txt`。
7. 运行 `start.sh` 或 `gunicorn wsgi:app`。
8. 将 nginx 放置在 Gunicorn 前面以供公共访问。
9. 使用 `A` 记录将您的域名 `secureapk.online` 指向实例的静态 IP。
## DevSecOps 与安全流水线
SecureAPK 不仅专注于检测 APK 文件中的恶意软件,还确保**应用程序本身是使用 DevSecOps 方法安全构建的**。
使用 GitHub Actions 集成了一个完整的 CI/CD 安全流水线,以便在部署前自动扫描代码库。
### 流水线概览
```
flowchart LR
A[Developer Push] --> B[GitHub Actions Pipeline]
B --> C[Gitleaks]
B --> D[Bandit]
B --> E[pip-audit]
B --> F[Syft]
B --> G[Grype]
C --> H[Secrets Detection]
D --> I[Static Code Analysis]
E --> J[Dependency Vulnerability Scan]
F --> K[SBOM Generation]
G --> L[SBOM Vulnerability Scan]
H --> M[Security Report]
I --> M
J --> M
K --> M
L --> M
```
## 安全阶段
### 1. 密钥检测 (Gitleaks)
- 检测硬编码的密钥,例如:
- API 密钥
- token
- 凭证
- 防止敏感数据的意外泄露
### 2. 静态应用程序安全测试 (SAST - Bandit)
- 扫描 Python 代码以查找:
- 不安全的函数
- 弱加密使用
- 命令注入风险
- 帮助在开发早期识别漏洞
### 3. 软件成分分析 (SCA - pip-audit)
- 扫描 Python 依赖项是否存在已知 CVE
- 确保第三方库不受漏洞影响
### 4. SBOM 生成 (Syft)
- 生成软件物料清单 (SBOM)
- 提供对所有使用依赖项的可见性
### 5. SBOM 漏洞扫描 (Grype)
- 扫描 SBOM 以查找已知漏洞
- 增加了一层额外的供应链安全
## 流水线设计理念
- **非阻塞式流水线** → 不会激进地使构建失败
- **安全优先的开发** → 问题可及早发现
- **可扩展设计** → 便于日后添加 DAST、容器扫描或云扫描
## 流水线位置
.github/workflows/pipeline.yaml
## 为什么这很重要
- 展示了 **安全的 SDLC 实践**
- 符合 **现代 DevSecOps 标准**
- 展示了对 **真实生产环境** 的准备就绪
## 用例
- 分析未知 APK 的安全研究人员
- 执行快速分类的 SOC 团队
- Bug 赏金猎人
- 移动应用安全测试
- 恶意软件检测领域的学术研究
## 贡献
欢迎贡献。
清晰的贡献流程是:
1. Fork 该仓库
2. 创建一个功能分支
3. 进行修改
4. 在本地运行应用程序
5. 打开一个包含简短摘要和相关截图的 Pull Request
针对本项目的推荐 PR:
- 更好的检测规则
- 新的 APK 元数据信号
- 额外的威胁情报源
- 仪表盘的 UI 优化
- 分析辅助模块的测试覆盖
标签:Android恶意软件分析, Apex, APK分析, Ask搜索, AWS Lightsail, DevSecOps, Flask, Flutter, MalwareBazaar, Python, SHAP, VirusTotal, Web仪表盘, 上游代理, 云安全监控, 云部署, 可解释人工智能, 后端开发, 威胁情报, 应用程序安全, 开发者工具, 无后门, 机器学习, 混合分析平台, 目录枚举, 移动安全, 移动客户端, 网络安全, 逆向工具, 隐私保护, 静态分析