Ankur11112006/cotter-backend
GitHub: Ankur11112006/cotter-backend
COTTER Engine 是一个基于 FastAPI 的欺诈检测后端,通过多维度信号分析对 APK、URL 和短信进行风险评分并提供可解释的安全判定与自动化上报。
Stars: 0 | Forks: 0
# COTTER Engine — 后端
从提案中提取的单一 "COTTER Engine":一个供每个客户端
(Android 应用、安装守门员、WhatsApp 机器人、仪表盘)调用的 FastAPI 服务。它负责接收原始
产物(APK / URL / SMS),对其进行 0–100 的评分并提供解释,存储群体
情报,并将确认的威胁上报给印度当局。
## 运行
```
cd backend
pip install -r requirements.txt
cp .env.example .env # fill in API keys (optional — degrades gracefully)
uvicorn app.main:app --reload
# 针对真实 APK 离线验证 core engine:
python demo_scan.py path/to/app.apk path/to/suspect.apk
```
## 架构 / 数据流
```
Android app / WhatsApp bot / Dashboard / Install-Gatekeeper
│ HTTPS
▼
┌─────────────────── FastAPI (app/main.py) ───────────────────┐
│ /gate/apk /scan/apk /scan/url /scan/sms /report │
└───────┬───────────────┬───────────────┬───────────────┬───────┘
▼ ▼ ▼ ▼
apk_analyzer url_scorer sms_classifier reporting
(androguard) (lexical+ (rules + MuRIL) (CERT-In email,
cert/perm RDAP/GSB/VT) Chakshu, GSB)
\______________ enrich ______________/
│
▼
Threat DB (app/db.py)
crowd counter · broadcast trigger · retrain data
```
### 评分逻辑(在每个引擎中相同)
`score = Σ weighted_signals`,限制在 0–100 之间,并映射到 `SAFE / SUSPICIOUS /
DANGER`。每个信号都会返回一个 `Reason(code, points, message, severity)`,以便
UI 能够解释*为什么*——没有黑盒。离线信号(证书检查、权限
权重、URL 词法层、SMS 规则)始终运行;网络信号(VirusTotal、
Safe Browsing、RDAP)仅用于*锐化*判定结果,因此该服务永远不会硬性依赖于
外部 API。
### 决定性信号 — 证书身份
如果没有所有者的私钥,应用的签名证书 SHA-256 是无法伪造的。
`app/data/official_apps.py` 包含了真实的 YONO 指纹
(`435776…`,从真实的 APK 中提取)。逻辑如下:
- 包名是官方的 **且** 证书匹配 → **VERIFIED SAFE (0)**
- 包名是官方的 **但** 证书不同 → **CERT_MISMATCH (100)**
- 名称声称是该品牌但包名是外部的 → **BRAND_IMPERSONATION (+60)**
## 集成 (`app/integrations/`)
| 模块 | 渠道 | 现实情况 |
|---|---|---|
| `virustotal.py` | VT v3 文件/URL 信誉 | 真实 API,免费层级,带缓存 |
| `safebrowsing.py` | Google Safe Browsing v4 查询 | 真实 API,免费密钥 |
| `rdap.py` | 通过 RDAP 获取域名年龄 | 真实,无需密钥 |
| `reporting.py` → CERT-In | 事件邮件 | **真实,完全自动化** (SMTP) |
| `reporting.py` → Chakshu | Sanchar Saathi 欺诈报告 | **辅助** — 无公开 API;我们构建精确的 payload + 引导式 OTP 提交 |
| `reporting.py` → Safe Browsing 报告 | 钓鱼 URL 提交 | 辅助(报告表单 / Web Risk) |
## 端点
- `POST /gate/apk` → `{action: ALLOW|WARN|BLOCK, score, verdict}` — 安装守门员契约
- `POST /scan/apk` → 完整的 APK 判定
- `POST /scan/url` → `{url}` 判定
- `POST /scan/sms` → `{text, sender}` 判定
- `POST /report` → 存储 + 群众计数 + (确认后)上报
- `GET /threats/{kind}/{indicator}` → 群众情报查询
标签:AV绕过, FastAPI, Python, URL扫描, 云安全监控, 反欺诈检测, 威胁情报, 开发者工具, 无后门, 短信分类, 逆向工具, 静态分析