Ved-Mitra/SHIELD-SBI-Hackathon-
GitHub: Ved-Mitra/SHIELD-SBI-Hackathon-
SHIELD 是一套云原生、五层架构的银行数字生态反钓鱼安全系统,通过端侧 ML 推理与后端微服务协同防御高仿钓鱼应用。
Stars: 0 | Forks: 0
# SHIELD:安全启发式、情报、教育与实时检测
### 🛡️ SBI Finnovation Hackathon 2026 参赛作品
**团队名称:** PhishKillers (IIT Jodhpur)
**团队成员:** Ved Mitra Verma, Aditya Sharma
## 项目概述
SHIELD 是一个云原生、五层、跨平台的安全系统,旨在保护印度国家银行(SBI)的数字银行生态系统(YONO)免受通过侧载和社会工程学手段传播的恶意“高仿”钓鱼应用程序的侵害。
通过整合基于硬件根源的应用程序认证、实时机器学习以及零成本的开源基础设施,SHIELD 将银行安全从被动的黑名单机制转变为主动的数学确定性。
## 5 层系统架构
```
┌────────────────────────┐
│ L0: Threat Origin │ (SMS Smishing, WhatsApp Clones, Fake Store APKs)
└───────────┬────────────┘
│
┌───────────▼────────────┐
│ L1: Perimeter Defense │ (ONNX MobileBERT URL Engine, Unicode Homograph Detector)
└───────────┬────────────┘
│
┌───────────▼────────────┐
│ L2: Device Defense │ (Kotlin Multiplatform App, WorkManager Passive Scanner)
└───────────┬────────────┘
│
┌───────────▼────────────┐
│ L3: Backend Intel Engine│ (Apache Kafka, Go Microservices, Airflow Takedown DAG)
└───────────┬────────────┘
│
┌───────────▼────────────┐
│ L4: Ecosystem Command │ (Grafana Dashboard, Threat-Intel Database)
└────────────────────────┘
```
## 移动应用程序(客户端防御)
### 1. URL 风险引擎 (`/core-ml`)
* **技术栈:** Kotlin, Hugging Face (MobileBERT), ONNX Runtime, Ktor Client。
* **职责:**
* 执行 **ONNX INT8 格式** 的 MobileBERT 推理,在 <30ms 内直接在本地移动客户端上处理并对粘贴的 URL 进行评分。
* 设计自定义算法,以隔离并标记 **Devanagari-Latin Unicode 同形字** 攻击。
* 通过利用严格 `withTimeout(5000L)` 边界的 **Ktor (`UrlReportClient`)** 实现遥测数据报告。
### 2. 三重大门登录与客户端基础 (`/mobile-kmp`)
* **技术栈:** Kotlin Multiplatform (KMP), Compose Multiplatform, Coroutines。
* **职责:**
* 构建统一的移动客户端代码库,通过单一框架同时针对双平台的原生 runtime。
* 为 **三重大门认证 pipeline**(设备认证、mTLS、FIDO2)构建 UI 状态结构。
### 3. 被动式 APK 实时扫描器 (`/android-watchdog`)
* **技术栈:** Kotlin, Android SDK, Android Jetpack WorkManager, SharedPreferences。
* **职责:**
* 实现了后台持久化的 **WorkManager 服务 (`ScannerWorker`)**,对照未经授权的银行品牌变体评估已安装的应用程序。
* 为扫描器的开关状态和语言选择设计了 **SharedPreferences 持久化**。
### 4. 多语种威胁警报系统 (`/audio-alerts`)
* **技术栈:** Kotlin, Android MediaPlayer, 本地 MP3 资源。
* **职责:**
* 设计了零延迟的 **多语种音频警报系统**,为视障用户播放预先录制的区域语言警告。
## 后端基础设施
### 1. 三重大门登录边界 (`backend/backend/three-gate-login`)
* **技术栈:** Go (Golang), Redis, RS256 JWT, Envoy Proxy。
* **职责:**
* **Gate 1(设备真实性):** 硬件认证验证,映射 Google Play Integrity。
* **Gate 2(通道真实性):** 通过 Envoy proxy 实现严格的 mutual TLS (mTLS) 配置。
* **Gate 3(用户真实性):** 绑定硬件的 **FIDO2 WebAuthn** 协议约束。
### 2. 风险 URL API 引擎与实时威胁情报
* **技术栈:** Go (Golang), PostgreSQL, Apache Kafka。
* **职责:**
* 高吞吐量的 REST API endpoint,接收来自移动客户端的本地化威胁情报,并立即发布到 Kafka topics (`url-events`)。
* 维护所有暴力破解尝试的不可变审计日志,以及活动钓鱼威胁的去重数据库。
### 3. 自动化下架 Pipeline (`backend/backend/airflow-takedown-DAG`)
* **技术栈:** Python, Apache Airflow, PostgreSQL。
* **职责:**
* Airflow Directed Acyclic Graphs (DAGs) 模拟针对 Google SafeBrowsing、I4C 和 CERT-In 的下架任务编排。
### 4. 仪表盘 (Grafana)
* **技术栈:** Grafana, PostgreSQL。
* **职责:**
* 容器化的 SOC (安全运营中心) 仪表盘,提供对全球欺诈激增和下架状态的实时可见性。
## 完整技术栈
| 领域 | 组件技术栈 |
| :--- | :--- |
| **移动前端** | Kotlin Multiplatform (KMP), Compose Multiplatform, Coroutines |
| **设备端 ML** | Hugging Face MobileBERT, ONNX Runtime (C++ Bindings) |
| **后端微服务** | Go (Golang) 1.26, Python, Ktor |
| **流处理与数据**| Apache Kafka Event Broker, PostgreSQL 15, Redis 7 |
| **自动化与可视化** | Apache Airflow, Grafana, Prometheus, Loki |
## 设置与安装
### 前置条件
* **Android 开发:** Android Studio Hedgehog+, JDK 17
* **iOS 编译:** 搭载 Xcode 16+ 和 iOS 18.0+ 部署目标的 macOS 环境。
* **后端组件:** 已安装 Docker 和 Docker Compose
### 1. 后端设置
#### 1. 加密密钥与证书设置
在启动容器之前,您必须为这三重大门生成 RS256 JWT 密钥对和 mTLS 证书。我们已提供了辅助脚本。
在仓库根目录下运行以下命令:
```
# 1. 生成 Gate-1 JWT 密钥
chmod +x backend/backend/three-gate-login/gate-1/scripts/gen-gate1-keys.sh
cd backend/backend/three-gate-login/gate-1 && ./scripts/gen-gate1-keys.sh && cd ../../../../
# 2. 生成 Gate-2 JWT 密钥
chmod +x backend/backend/three-gate-login/gate-2/scripts/gen-gate2-keys.sh
cd backend/backend/three-gate-login/gate-2 && ./scripts/gen-gate2-keys.sh && cd ../../../../
# 3. 生成 Gate-2 mTLS 证书(服务器和客户端 CA)
chmod +x backend/backend/three-gate-login/gate-2/scripts/gen-certs.sh
cd backend/backend/three-gate-login/gate-2 && ./scripts/gen-certs.sh && cd ../../../../
# 4. 分发用于跨 Gate Token 验证的公钥
# Gate-2 需要 Gate-1 的公钥来验证 Gate-1 JWT
mkdir -p backend/backend/three-gate-login/gate-2/certs/gate1
cp backend/backend/three-gate-login/gate-1/certs/gate1/public.pem backend/backend/three-gate-login/gate-2/certs/gate1/public.pem
# Gate-3 需要 Gate-2 的公钥来验证 Gate-2 JWT
mkdir -p backend/backend/three-gate-login/gate-3/certs/gate2
cp backend/backend/three-gate-login/gate-2/certs/gate2/public.pem backend/backend/three-gate-login/gate-3/certs/gate2/public.pem
```
*(注意:在步骤 3 中生成的客户端证书必须转换为 `.p12` 文件,并放入 Android 应用中以进行本地测试。有关说明,请参阅移动应用程序的 README)。*
#### 2. Google Service Account (模拟)
Gate-1 需要 Google Service Account 来验证 Play Integrity token。对于本地开发,请创建一个模拟的 JSON 文件,以防止容器崩溃:
```
mkdir -p backend/backend/three-gate-login/secrets
echo '{"type":"service_account","project_id":"ci-mock","private_key_id":"mock","private_key":"","client_email":"ci@mock.iam.gserviceaccount.com","client_id":"0","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token"}' > backend/backend/three-gate-login/secrets/three-gate-login-service-account.json
```
#### 3. Docker 设置
使用单一命令启动后端 pipeline、缓存服务器和数据库 schema:
```
docker compose -f backend/infrastructure/docker-compose.yml up -d
docker compose -f backend/infrastructure/DAG/docker-compose.yml up -d
```
### 2. 移动应用程序设置
#### 网络配置(重要)
在编译之前,您必须更新硬编码的后端 IP 地址,使其指向您的本地机器(如果使用 Android Emulator,则为 `10.0.2.2`)。请更新以下文件中的 IP:
* `mobile/shared/src/androidMain/kotlin/org/example/shield/gate/Constants.kt`
* `mobile/shared/src/commonMain/kotlin/org/example/shield/scanner/url/UrlReportClient.kt`
#### Gate-2 mTLS 设置(本地开发)
要在本地测试 Gate-2,您必须生成一个模拟客户端证书 (`client.p12`) 并将其放入 Android 资源目录中。该应用程序预期 keystore 的密码为 `"password"`。
运行以下终端命令以生成证书:
```
# 1. 如果 res 目录不存在,则创建原始 res 目录
mkdir -p mobile/androidApp/src/main/res/raw
# 2. 生成新的私钥和自签名证书
openssl req -x509 -newkey rsa:2048 -keyout client.key -out client.crt -days 365 -nodes -subj "/CN=shield-client-dev"
# 3. 使用密码 "password" 将密钥和证书打包为 PKCS12 格式(.p12)
openssl pkcs12 -export -out mobile/androidApp/src/main/res/raw/client.p12 -inkey client.key -in client.crt -passout pass:password
# 4. 清理中间文件
rm client.key client.crt
```
一旦更新了 IP 地址并且 `client.p12` 文件位于 `mobile/androidApp/src/main/res/raw/` 目录中,您就可以构建并运行该应用程序了。
### 构建项目
只需在 Android Studio 中打开项目目录并运行 gradle sync。要通过终端构建 debug APK:
```
cd mobile
./gradlew :androidApp:assembleDebug
```
## 暴露的端口
| 服务 | 端口 | 描述 |
| :--- | :--- | :--- |
| **Grafana** | `3000` | 分析与可观测性仪表盘 |
| **PostgreSQL** | `5432` | 主数据库 (`intel_db`) |
| **Redis** | `6379` | Nonce 和会话缓存 |
| **Gate 1** | `8081` | 设备真实性 API |
| **Gate 3** | `8082` | FIDO2 WebAuthn API |
| **Risk URL Engine**| `8083` | 钓鱼报告接收 API |
| **Kafka** | `9092` | 事件流 broker |
## 未来增强功能
* **Apache Flink 分析引擎:** 在 Kafka 之上集成 Flink,以处理复杂的滑动窗口事件模式 (CEP),并实时检测协同地理僵尸网络。
* **PostGIS 和空间热力图:** 在 PostgreSQL 中启用 PostGIS 扩展,基于实时的 GPS 坐标,直观地呈现印度各邦/地区正在发生的网络攻击。
* **实际的 Airflow 下架 API 调用:** 将 Airflow DAG 中的 Python 日志记录存根替换为向 Google Play Developer API、CERT-In MISP TAXII 服务器和 TRAI DLT 门户发起的实时的、经过认证的 REST `requests`。
标签:Apex, 反钓鱼, 威胁情报, 开发者工具, 搜索引擎查询, 日志审计, 机器学习, 测试用例, 目录枚举, 移动安全, 自定义请求头, 请求拦截, 跨平台开发, 软件成分分析, 逆向工具, 金融科技