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, 反钓鱼, 威胁情报, 开发者工具, 搜索引擎查询, 日志审计, 机器学习, 测试用例, 目录枚举, 移动安全, 自定义请求头, 请求拦截, 跨平台开发, 软件成分分析, 逆向工具, 金融科技