23110572-hash/MalwareLensAI
GitHub: 23110572-hash/MalwareLensAI
基于生成式 AI 的 Android APK 恶意软件自动化逆向分析与调查报告平台。
Stars: 1 | Forks: 0
# MalwareLens AI
**AI 驱动的恶意软件逆向工程与 Android (APK) 安全分析平台**
MalwareLens AI 可帮助银行和金融领域的安全团队分析可疑的 Android 应用程序,准确了解其行为,并在几分钟(而非几天)内生成分析师级别的调查报告。只需上传一个 APK,平台就会对其进行逆向工程,收集证据,通过 AI 分析师对这些证据进行推理,评估风险,将其映射到 MITRE ATT&CK,并生成可下载的 PDF 报告。
您在产品中看到的所有内容都是根据您上传的真实文件计算得出的。这里没有模拟数据、没有演示夹具,也没有沙箱作秀。
## 目录
1. [我们要解决的问题](#the-problem-were-solving)
2. [MalwareLens AI 如何解决它](#how-malwarelens-ai-solves-it)
3. [核心功能](#key-features)
4. [系统架构](#system-architecture)
5. [端到端工作流](#end-to-end-workflow)
6. [智能流水线](#the-intelligence-pipeline)
7. [技术栈](#technology-stack)
8. [后端服务](#backend-services)
9. [前端应用](#frontend-application)
10. [API 参考](#api-reference)
11. [配置](#configuration)
12. [快速开始](#getting-started)
13. [项目结构](#project-structure)
14. [安全与法律声明](#security--legal-notice)
## 我们要解决的问题
银行一直是移动恶意软件的攻击目标。对客户伤害最大的攻击几乎总是通过 Android 应用程序分发的:
- **伪造的银行应用程序**:模仿真实银行以窃取登录凭证、PIN 码和银行卡详细信息。
- **SMS / OTP 拦截器**:静默读取一次性密码并破坏双因素认证。
- **覆盖层木马**:在真实的银行应用程序之上绘制虚假登录屏幕,并捕获用户输入的所有内容。
- **滥用辅助功能服务**:恶意软件利用 Android 的辅助功能 API 读取屏幕、自动填充字段,并代表受害者批准交易。
- **数据窃取代理**:悄悄收集联系人、通话记录、设备信息和已安装应用程序的列表,以便对受害者进行画像,从而实施有针对性的欺诈。
传统的防病毒软件依赖于特征码,因此在应对新的、混淆的或重新打包的样本时显得力不从心。手动逆向工程虽然准确但速度缓慢——它需要一位精通 Android 内部原理、DEX 字节码和 APK 结构的专家,即便如此,分析单个样本也可能需要数小时。
银行 SOC 真正需要的是一种既具备**自动化速度**,又具备**专家分析师的深度和可解释性**的工具,并且能够在**不引爆恶意软件**的实时环境中运行。
## MalwareLens AI 如何解决它
MalwareLens AI 是一个端到端平台,可自动化整个逆向工程工作流。当分析师上传 APK 时,后端会运行一个顺序智能流水线:
1. **指纹识别** APK —— 加密哈希、包元数据、SDK 目标、声明的组件以及签名证书详细信息。
2. **逆向工程 DEX** —— 解析字符串表、类型表和方法表,以重建真实的 API 调用签名,无需完全反编译。
3. **静态分析** —— 两个层面:扫描危险 API 的方法引用,以及扫描字符串池以获取 URL、IP、域名和嵌入的机密信息。
4. **行为能力评估** —— 从静态构件中推断出应用程序*在运行时能做什么*,并为每种能力提供证据和置信度。无需沙箱或模拟器。
5. **威胁情报** —— 一个基于证据的规则引擎,仅在多个独立信号收敛时才对行为进行分类(例如,OTP 盗窃需要*同时具备* SMS 权限*和* `SmsManager` API 引用)。
6. **AI 恶意软件分析师** —— Google Gemini 会对完整的证据包进行推理,并撰写专家叙述,解释该应用程序*为什么*是或不是恶意的。如果未设置 API key,确定性的基于规则的分析师将产生相同的结构化输出。
7. **可解释的风险评分** —— 加权的 0-100 评分,其中每一分都可归因于一个命名的因素。
8. **MITRE ATT&CK 映射** —— 检测到的行为将被映射到 ATT&CK 移动端技术,每项技术都有证明其合理性的证据作为支撑。
9. **PDF 报告** —— 一份根据真实分析记录生成的、可直接提交给董事会的报告。
其结果是一个分层的、具有充分依据的调查过程,分析师可以据此采取行动,管理者也可以轻松阅读。
## 核心功能
- **始终进行真实分析。** 每一个结果都是使用 androguard 从上传的 APK 中推导出来的。没有任何内容是模拟或硬编码的。
- **分层智能流水线。** 每个阶段都建立在前一个阶段的基础之上,因此后续阶段可以在更丰富的上下文中进行推理。
- **基于证据的检测。** 没有单一指标的判定。每个分类都带有产生它的完整信号链,从而将误报保持在较低水平。
- **带有安全回退机制的 AI 调查。** 配置后,由 Gemini 撰写叙述;未配置时,确定性的规则引擎将接管,确保产品始终正常运行。
- **可解释的风险评分。** 透明的 0-100 评分,包含针对每个因素的推理。
- **MITRE ATT&CK 映射。** 包含战术类别和证据引用的技术。
- **专业的 PDF 报告。** 包含执行摘要、样本元数据、调查发现、证据、MITRE 映射和建议操作。
- **无需沙箱。** 纯静态 + 行为推断 —— 无需 Docker、模拟器或实时执行。
- **现代、响应式的 UI。** 动画 Next.js 界面,提供实时的、逐阶段的进度跟踪。
## 系统架构
MalwareLens AI 是一个客户端-服务器应用程序:Next.js 前端通过简单的 REST/JSON API 与 FastAPI 后端进行通信。后端的编排器驱动一组独立的分析服务,并通过存储层持久化状态(默认使用内存,可选 PostgreSQL/Prisma)。
```
flowchart TB
subgraph Client["🖥️ Client Browser"]
FE["Next.js 15 Frontend — Port 3005
Upload · Pipeline · Investigation pages · Reports"] end subgraph Server["⚙️ FastAPI Backend — Port 8005"] direction TB R["API Routers
upload · analysis · dashboard · reports"] O["Pipeline Orchestrator
runs the 9 analysis stages in order"] SVC["Analysis Services
fingerprint · dex_parser · reverse_engineering
static_analysis · behavioral_analysis · threat_intel
ai_analyst · risk_scoring · mitre_mapping · report_generator"] ST["Storage Seam
in-memory store (default) / PostgreSQL via Prisma"] R --> O --> SVC O --> ST SVC --> ST end AI["☁️ Google Gemini API
(optional — rule-based fallback)"] FE -- "REST / JSON" --> R SVC -. "evidence package" .-> AI AI -. "narrative analysis" .-> SVC ``` 前端不包含任何分析逻辑——它只负责上传文件、轮询进度并渲染引擎的输出。所有智能都存在于后端,这使得系统易于推理并且易于在本地部署。 ## 端到端工作流 从分析师的角度来看,只需三个步骤:上传、观察流水线运行、阅读报告。其底层逻辑如下: ``` sequenceDiagram actor A as Analyst participant FE as Frontend (Next.js) participant API as Backend (FastAPI) participant ENG as Pipeline Orchestrator A->>FE: Drag & drop an .apk FE->>API: POST /api/upload-apk API-->>FE: { id, sha256, status: queued } FE->>API: POST /api/start-analysis { id } API->>ENG: run pipeline (background task) API-->>FE: status: reverse-engineering loop until ready FE->>API: GET /api/analysis-status/{id} API-->>FE: stage states + progress % end FE->>API: GET /api/analysis/{id} API-->>FE: complete analysis record FE-->>A: Render findings across pages A->>FE: Download PDF FE->>API: GET /api/report/{id} API-->>A: report.pdf ``` ## 智能流水线 编排器按顺序执行十个阶段(一个上传标记和九个分析阶段)。每个阶段都是一个专注的服务,其输出将输入到下一个阶段。 ``` flowchart LR U["① APK Upload"] --> F["② Fingerprinting"] F --> R["③ Reverse Engineering"] R --> S["④ Static Analysis"] S --> B["⑤ Behavioral Assessment"] B --> T["⑥ Threat Intelligence"] T --> AI["⑦ AI Malware Analyst"] AI --> RS["⑧ Risk Scoring"] RS --> M["⑨ MITRE ATT&CK Mapping"] M --> REP["⑩ Report Generation"] ``` ### ① APK 上传 接收文件,对其进行验证(仅限 `.apk`,有大小限制),计算哈希值并将其加入队列。SHA-256 前缀将成为分析 ID,从而确保同一样本具有一致的标识。 ### ② 指纹识别 使用 androguard 提取:SHA-256 / SHA-1 / MD5 哈希;包名、版本名/代码、最低/目标 SDK;完整的 activities、services、receivers 和 providers 集合;声明的权限;以及签名证书(主题、颁发者、自签名标志、有效期)。 ### ③ 逆向工程 直接解析 DEX 以重建带有完整签名的**字符串池**、**类型表**和**方法表** —— 例如 `Landroid/telephony/SmsManager;->sendTextMessage(...)V`。在各种提取模式之间平滑回退,并支持多 DEX 的 APK。 ### ④ 静态分析 两个互补的层面: - **方法引用检测** —— 根据精选的危险 API(SMS、电话、加密、反射、native、动态类加载等)数据库扫描方法表。 - **字符串池扫描** —— 查找 URL、IP、域名、Base64 数据块和可疑关键字。 调查结果会与声明的权限和组件相关联,从而开始构建证据链。 ### ⑤ 行为能力评估 纯粹从静态构件中推断运行时能力 —— 包括 SMS 操作、滥用辅助功能、覆盖攻击、动态代码加载、设备侦察、C2 通信、数据窃取和持久化。每个预测都会报告其发现、证据、置信度水平和通俗语言的推理过程。绝不会捏造任何运行时活动。 ### ⑥ 威胁情报 一个多信号、基于证据的规则引擎。每个规则都定义了其跨越不同来源(权限、组件、API 引用、嵌入的 URL、证书信号)的证据来源,以及一个或多个**必要锚点**。只有当所有锚点都存在时,规则才会触发,这正是保持引擎准确客观的关键。 ### ⑦ AI 恶意软件分析师 完整的证据包(指纹、静态报告、行为评估、威胁情报、风险、MITRE)将交给 Google Gemini,并被提示像银行 SOC 的高级逆向工程师一样进行推理。它将生成执行摘要、威胁解释、恶意指标、银行影响评估和建议。如果没有 API key(或设置了 `FORCE_MOCK=true`),确定性的基于规则的分析师将输出相同的结构化字段。 ### ⑧ 风险评分 一个透明的加权模型,它将权限风险、威胁检测、行为能力、网络指标和混淆程度组合成一个 0-100 的评分。每一项贡献都归因于带有推理说明的命名因素。等级划分:**严重** (80–100)、**高** (60–79)、**中** (40–59)、**低** (20–39)、**干净/极低** (0–19)。 ### ⑨ MITRE ATT&CK 映射 将检测和原始发现映射到 ATT&CK 移动端技术(例如 T1406、T1426、T1437、T1521.001、T1407),并附加每项技术背后的具体证据,确保没有任何断言是缺乏信号支撑的。 ### ⑩ 报告生成 ReportLab 根据真实记录生成多部分的 PDF 报告:执行摘要、APK 元数据、静态分析、行为推断、威胁情报、MITRE 映射、风险评估、建议和最终裁定。 ## 技术栈 ### 后端 | 组件 | 技术 | |------------------|------------------------------------------| | Web 框架 | FastAPI (Python 3.12+) | | ASGI 服务器 | Uvicorn | | 数据验证 | Pydantic v2 | | APK / DEX 解析 | Androguard | | AI 引擎 | Google Generative AI SDK (Gemini) | | PDF 生成 | ReportLab | | ORM (可选) | Prisma → PostgreSQL | | 配置 | python-dotenv | ### 前端 | 组件 | 技术 | |------------------|------------------------------------------| | 框架 | Next.js 15 (App Router) | | UI 库 | React 19 | | 语言 | TypeScript 5 | | 样式 | Tailwind CSS 3.4 | | 动画 | Framer Motion | | 图表 | Recharts | | 服务端状态 | TanStack React Query | | UI 基础组件 | Radix UI (Dialog, Progress, Slot) | | 图标 | Lucide React | ### 工具 | 组件 | 技术 | |------------------|------------------------------------------| | 一键启动 | `start.bat` (Windows) | | API 文档 | FastAPI Swagger UI 位于 `/docs` | | 构建 | Next.js production build (npm) | ## 后端服务 | 文件 | 职责 | |------|----------------| | `app/main.py` | FastAPI 入口点;CORS 配置;在 `/api` 下挂载路由。 | | `app/config.py` | 从环境变量读取的核心设置(Gemini key/模型、JADX 路径、mock 标志、数据目录)。 | | `app/schemas.py` | Pydantic 模型 —— 每个流水线阶段的数据契约和统一的 `AnalysisRecord`。 | | `app/store.py` | 线程安全的存储层:默认为内存存储,可映射到 Prisma/PostgreSQL。 | | `app/analysis_service.py` | 连接路由、存储和编排器;从真实记录中构建仪表盘指标。 | | `app/pipeline/orchestrator.py` | 按顺序运行所有阶段,跟踪每个阶段的状态/持续时间,汇总最终记录和裁定。 | | `app/services/fingerprint.py` | 通过 androguard 提取哈希、manifest 元数据、组件、权限、证书。 | | `app/services/dex_parser.py` | 底层 DEX 解析器:感知多 DEX 的字符串/类型/方法表。 | | `app/services/reverse_engineering.py` | 重构带有类型的、可读的方法调用签名。 | | `app/services/static_analysis.py` | 双层检测(方法引用 + 字符串池),与权限相关联。 | | `app/services/behavioral_analysis.py` | 运行时能力推断,附带证据、置信度和推理 | | `app/services/threat_intel.py` | 基于证据的多锚点规则引擎;家族归因和置信度。 | | `app/services/ai_analyst.py` | 带有确定性基于规则回退机制的 Gemini 分析师。 | | `app/services/risk_scoring.py` | 加权、可解释的 0-100 评分,包含针对每个因素的推理。 | | `app/services/mitre_mapping.py` | 将行为映射到 ATT&CK 移动端技术并附带证据。 | | `app/services/report_generator.py` | 生成多部分的 PDF 报告。 | ## 前端应用 前端由一个公开的落地页和一组专注的、单一用途的仪表盘页面组成。这里特意**没有多租户的“团队概览”** —— 平台一次只分析一个上传的样本,每个页面都渲染该样本的真实结果。 ``` flowchart TD L["/ — Landing page"] --> D["/dashboard → redirects to APK Analysis"] D --> APK["/dashboard/apk-analysis
Upload & start analysis"] APK --> PIPE["/dashboard/pipeline
Live stage-by-stage progress"] PIPE --> STAT["/dashboard/static-analysis"] PIPE --> BEH["/dashboard/behavioral-analysis"] PIPE --> AIF["/dashboard/ai-findings"] PIPE --> RISK["/dashboard/risk-scoring"] PIPE --> MIT["/dashboard/mitre"] AIF --> REP["/dashboard/reports
Export findings · Download PDF"] D --> SET["/dashboard/settings
Live backend status & connection info"] ``` **页面** - **APK 分析** —— 拖放上传、验证以及启动分析。 - **分析流水线** —— 在后端处理样本时查看每个阶段的实时视图。 - **静态分析** —— 可疑 API、字符串池发现、URL/IP、权限关联。 - **行为分析** —— 带有证据和置信度的运行时能力推断。 - **AI 发现** —— AI(或基于规则)的分析师叙述和指标。 - **风险评分** —— 带有各因素细分的加权评分。 - **MITRE 映射** —— ATT&CK 技术及其支持证据。 - **报告** —— 将发现导出为 JSON 或下载 PDF 报告。 - **设置** —— 只读系统页面,显示*实时*后端连接检查和已配置的 API endpoint。 **状态管理** - **TanStack React Query** 负责处理获取、缓存以及驱动流水线视图的轮询(一旦分析状态变为 `ready` 或 `failed`,它会自动停止轮询)。 - **`lib/current-analysis.ts`** 跟踪当前选定的分析 ID(通过 `localStorage`),以便每个调查页面都能渲染同一样本。 - **`hooks/use-analysis.ts`** 封装了查询逻辑,并暴露了一个清晰的 `noAnalysis` 空状态信号。 ## API 参考 所有路由均挂载在 `/api` 下。 | 方法 | 端点 | 描述 | |--------|------------------------------|--------------------------------------------------------| | POST | `/api/upload-apk` | 上传 `.apk` 文件。返回分析 ID 和元数据。 | | POST | `/api/start-analysis` | 为给定的分析 ID 启动流水线。 | | GET | `/api/analysis/{id}` | 完整的、由引擎生成的分析记录。 | | GET | `/api/analysis-status/{id}` | 实时的逐阶段进度和百分比。 | | GET | `/api/risk-score/{id}` | 仅返回风险评分细分。 | | GET | `/api/pipeline` | 标准的流水线阶段定义。 | | GET | `/api/report/{id}` | 生成并下载 PDF 报告。 | | GET | `/api/dashboard-metrics` | 根据真实分析实时计算的汇总指标。 | **上传响应** ``` { "id": "anl_1a2b3c4d5e", "fileName": "suspicious-bank.apk", "size": 4823124, "sha256": "…", "status": "queued", "message": "APK received and queued for analysis." } ``` **分析状态响应** ``` { "id": "anl_1a2b3c4d5e", "status": "ai-investigation", "progress": 70, "ready": false, "error": null, "stages": [ { "id": "fingerprint", "label": "APK Fingerprinting", "status": "complete", "durationMs": 412 }, { "id": "static", "label": "Static Analysis", "status": "complete", "durationMs": 1180 }, { "id": "ai", "label": "AI Malware Analyst", "status": "active", "durationMs": 0 } ] } ``` 交互式 API 文档始终可在 `http://localhost:8005/docs` 找到。 ## 快速开始 ### 前置条件 - Python 3.12+ - Node.js 18+ (包含 npm) - PostgreSQL —— 可选;应用程序在没有它的情况下完全可以在内存存储上运行。 ### 一键启动 (Windows) ``` start.bat ``` 此操作会检查 Python 和 Node,创建虚拟环境并安装依赖项(首次运行时),为生产环境构建前端(首次运行时),在单独的窗口中启动这两个服务器,等待前端就绪,然后打开浏览器。 - 前端 → http://localhost:3005 - 后端 → http://localhost:8005 (文档位于 `/docs`) ### 手动设置 **后端** ``` cd backend python -m venv .venv .venv\Scripts\activate # Windows # source .venv/bin/activate # macOS / Linux pip install -r requirements.txt cp .env.example .env # add your settings uvicorn app.main:app --reload --port 8005 ``` **前端** ``` cd frontend npm install cp .env.example .env.local # edit if the backend isn't on localhost:8005 npm run dev # http://localhost:3005 (hot reload) # 或者:npm run build && npm run start # production ``` ## 项目结构 ``` Bank of India/ ├── README.md # This file ├── start.bat # One-click Windows launcher │ ├── backend/ │ ├── .env / .env.example # Environment config (.env is git-ignored) │ ├── requirements.txt # Python dependencies │ ├── prisma/schema.prisma # Optional PostgreSQL schema │ └── app/ │ ├── main.py # FastAPI entry point │ ├── config.py # Central settings │ ├── schemas.py # Pydantic data contracts │ ├── store.py # Storage seam (in-memory / Prisma) │ ├── analysis_service.py # Lifecycle + dashboard metrics │ ├── pipeline/ │ │ └── orchestrator.py # 10-stage pipeline engine │ ├── routers/ │ │ ├── upload.py # Upload & start-analysis │ │ ├── analysis.py # Analysis / status / risk / pipeline │ │ ├── dashboard.py # Aggregate metrics │ │ └── reports.py # PDF report │ └── services/ │ ├── fingerprint.py │ ├── dex_parser.py │ ├── reverse_engineering.py │ ├── static_analysis.py │ ├── behavioral_analysis.py │ ├── threat_intel.py │ ├── ai_analyst.py │ ├── risk_scoring.py │ ├── mitre_mapping.py │ └── report_generator.py │ └── frontend/ ├── .env.local / .env.example # Frontend config ├── package.json └── src/ ├── app/ │ ├── page.tsx # Landing page │ └── dashboard/ │ ├── page.tsx # Redirects to /dashboard/apk-analysis │ ├── layout.tsx │ ├── apk-analysis/ │ ├── pipeline/ │ ├── static-analysis/ │ ├── behavioral-analysis/ │ ├── ai-findings/ │ ├── risk-scoring/ │ ├── mitre/ │ ├── reports/ │ └── settings/ ├── components/ # brand · landing · dashboard · charts · ui ├── hooks/use-analysis.ts # Query + polling logic ├── lib/ # api client · current-analysis · utils · colors └── types/index.ts # Shared TypeScript types ``` ## 安全与法律声明 MalwareLens AI 专为银行和网络安全团队的**授权安全研究和防御性分析**而设计。上传的样本仅进行静态分析——绝不执行——因此该工具可以在本地安全运行,无需模拟器或沙箱。 - 仅对您获得授权进行分析的样本使用此工具。 - 该平台提供支持,但不能替代事件处理中专业的人工判断。 *MalwareLens AI —— 将可疑的 APK 转化为具有充分依据的裁定。*
Upload · Pipeline · Investigation pages · Reports"] end subgraph Server["⚙️ FastAPI Backend — Port 8005"] direction TB R["API Routers
upload · analysis · dashboard · reports"] O["Pipeline Orchestrator
runs the 9 analysis stages in order"] SVC["Analysis Services
fingerprint · dex_parser · reverse_engineering
static_analysis · behavioral_analysis · threat_intel
ai_analyst · risk_scoring · mitre_mapping · report_generator"] ST["Storage Seam
in-memory store (default) / PostgreSQL via Prisma"] R --> O --> SVC O --> ST SVC --> ST end AI["☁️ Google Gemini API
(optional — rule-based fallback)"] FE -- "REST / JSON" --> R SVC -. "evidence package" .-> AI AI -. "narrative analysis" .-> SVC ``` 前端不包含任何分析逻辑——它只负责上传文件、轮询进度并渲染引擎的输出。所有智能都存在于后端,这使得系统易于推理并且易于在本地部署。 ## 端到端工作流 从分析师的角度来看,只需三个步骤:上传、观察流水线运行、阅读报告。其底层逻辑如下: ``` sequenceDiagram actor A as Analyst participant FE as Frontend (Next.js) participant API as Backend (FastAPI) participant ENG as Pipeline Orchestrator A->>FE: Drag & drop an .apk FE->>API: POST /api/upload-apk API-->>FE: { id, sha256, status: queued } FE->>API: POST /api/start-analysis { id } API->>ENG: run pipeline (background task) API-->>FE: status: reverse-engineering loop until ready FE->>API: GET /api/analysis-status/{id} API-->>FE: stage states + progress % end FE->>API: GET /api/analysis/{id} API-->>FE: complete analysis record FE-->>A: Render findings across pages A->>FE: Download PDF FE->>API: GET /api/report/{id} API-->>A: report.pdf ``` ## 智能流水线 编排器按顺序执行十个阶段(一个上传标记和九个分析阶段)。每个阶段都是一个专注的服务,其输出将输入到下一个阶段。 ``` flowchart LR U["① APK Upload"] --> F["② Fingerprinting"] F --> R["③ Reverse Engineering"] R --> S["④ Static Analysis"] S --> B["⑤ Behavioral Assessment"] B --> T["⑥ Threat Intelligence"] T --> AI["⑦ AI Malware Analyst"] AI --> RS["⑧ Risk Scoring"] RS --> M["⑨ MITRE ATT&CK Mapping"] M --> REP["⑩ Report Generation"] ``` ### ① APK 上传 接收文件,对其进行验证(仅限 `.apk`,有大小限制),计算哈希值并将其加入队列。SHA-256 前缀将成为分析 ID,从而确保同一样本具有一致的标识。 ### ② 指纹识别 使用 androguard 提取:SHA-256 / SHA-1 / MD5 哈希;包名、版本名/代码、最低/目标 SDK;完整的 activities、services、receivers 和 providers 集合;声明的权限;以及签名证书(主题、颁发者、自签名标志、有效期)。 ### ③ 逆向工程 直接解析 DEX 以重建带有完整签名的**字符串池**、**类型表**和**方法表** —— 例如 `Landroid/telephony/SmsManager;->sendTextMessage(...)V`。在各种提取模式之间平滑回退,并支持多 DEX 的 APK。 ### ④ 静态分析 两个互补的层面: - **方法引用检测** —— 根据精选的危险 API(SMS、电话、加密、反射、native、动态类加载等)数据库扫描方法表。 - **字符串池扫描** —— 查找 URL、IP、域名、Base64 数据块和可疑关键字。 调查结果会与声明的权限和组件相关联,从而开始构建证据链。 ### ⑤ 行为能力评估 纯粹从静态构件中推断运行时能力 —— 包括 SMS 操作、滥用辅助功能、覆盖攻击、动态代码加载、设备侦察、C2 通信、数据窃取和持久化。每个预测都会报告其发现、证据、置信度水平和通俗语言的推理过程。绝不会捏造任何运行时活动。 ### ⑥ 威胁情报 一个多信号、基于证据的规则引擎。每个规则都定义了其跨越不同来源(权限、组件、API 引用、嵌入的 URL、证书信号)的证据来源,以及一个或多个**必要锚点**。只有当所有锚点都存在时,规则才会触发,这正是保持引擎准确客观的关键。 ### ⑦ AI 恶意软件分析师 完整的证据包(指纹、静态报告、行为评估、威胁情报、风险、MITRE)将交给 Google Gemini,并被提示像银行 SOC 的高级逆向工程师一样进行推理。它将生成执行摘要、威胁解释、恶意指标、银行影响评估和建议。如果没有 API key(或设置了 `FORCE_MOCK=true`),确定性的基于规则的分析师将输出相同的结构化字段。 ### ⑧ 风险评分 一个透明的加权模型,它将权限风险、威胁检测、行为能力、网络指标和混淆程度组合成一个 0-100 的评分。每一项贡献都归因于带有推理说明的命名因素。等级划分:**严重** (80–100)、**高** (60–79)、**中** (40–59)、**低** (20–39)、**干净/极低** (0–19)。 ### ⑨ MITRE ATT&CK 映射 将检测和原始发现映射到 ATT&CK 移动端技术(例如 T1406、T1426、T1437、T1521.001、T1407),并附加每项技术背后的具体证据,确保没有任何断言是缺乏信号支撑的。 ### ⑩ 报告生成 ReportLab 根据真实记录生成多部分的 PDF 报告:执行摘要、APK 元数据、静态分析、行为推断、威胁情报、MITRE 映射、风险评估、建议和最终裁定。 ## 技术栈 ### 后端 | 组件 | 技术 | |------------------|------------------------------------------| | Web 框架 | FastAPI (Python 3.12+) | | ASGI 服务器 | Uvicorn | | 数据验证 | Pydantic v2 | | APK / DEX 解析 | Androguard | | AI 引擎 | Google Generative AI SDK (Gemini) | | PDF 生成 | ReportLab | | ORM (可选) | Prisma → PostgreSQL | | 配置 | python-dotenv | ### 前端 | 组件 | 技术 | |------------------|------------------------------------------| | 框架 | Next.js 15 (App Router) | | UI 库 | React 19 | | 语言 | TypeScript 5 | | 样式 | Tailwind CSS 3.4 | | 动画 | Framer Motion | | 图表 | Recharts | | 服务端状态 | TanStack React Query | | UI 基础组件 | Radix UI (Dialog, Progress, Slot) | | 图标 | Lucide React | ### 工具 | 组件 | 技术 | |------------------|------------------------------------------| | 一键启动 | `start.bat` (Windows) | | API 文档 | FastAPI Swagger UI 位于 `/docs` | | 构建 | Next.js production build (npm) | ## 后端服务 | 文件 | 职责 | |------|----------------| | `app/main.py` | FastAPI 入口点;CORS 配置;在 `/api` 下挂载路由。 | | `app/config.py` | 从环境变量读取的核心设置(Gemini key/模型、JADX 路径、mock 标志、数据目录)。 | | `app/schemas.py` | Pydantic 模型 —— 每个流水线阶段的数据契约和统一的 `AnalysisRecord`。 | | `app/store.py` | 线程安全的存储层:默认为内存存储,可映射到 Prisma/PostgreSQL。 | | `app/analysis_service.py` | 连接路由、存储和编排器;从真实记录中构建仪表盘指标。 | | `app/pipeline/orchestrator.py` | 按顺序运行所有阶段,跟踪每个阶段的状态/持续时间,汇总最终记录和裁定。 | | `app/services/fingerprint.py` | 通过 androguard 提取哈希、manifest 元数据、组件、权限、证书。 | | `app/services/dex_parser.py` | 底层 DEX 解析器:感知多 DEX 的字符串/类型/方法表。 | | `app/services/reverse_engineering.py` | 重构带有类型的、可读的方法调用签名。 | | `app/services/static_analysis.py` | 双层检测(方法引用 + 字符串池),与权限相关联。 | | `app/services/behavioral_analysis.py` | 运行时能力推断,附带证据、置信度和推理 | | `app/services/threat_intel.py` | 基于证据的多锚点规则引擎;家族归因和置信度。 | | `app/services/ai_analyst.py` | 带有确定性基于规则回退机制的 Gemini 分析师。 | | `app/services/risk_scoring.py` | 加权、可解释的 0-100 评分,包含针对每个因素的推理。 | | `app/services/mitre_mapping.py` | 将行为映射到 ATT&CK 移动端技术并附带证据。 | | `app/services/report_generator.py` | 生成多部分的 PDF 报告。 | ## 前端应用 前端由一个公开的落地页和一组专注的、单一用途的仪表盘页面组成。这里特意**没有多租户的“团队概览”** —— 平台一次只分析一个上传的样本,每个页面都渲染该样本的真实结果。 ``` flowchart TD L["/ — Landing page"] --> D["/dashboard → redirects to APK Analysis"] D --> APK["/dashboard/apk-analysis
Upload & start analysis"] APK --> PIPE["/dashboard/pipeline
Live stage-by-stage progress"] PIPE --> STAT["/dashboard/static-analysis"] PIPE --> BEH["/dashboard/behavioral-analysis"] PIPE --> AIF["/dashboard/ai-findings"] PIPE --> RISK["/dashboard/risk-scoring"] PIPE --> MIT["/dashboard/mitre"] AIF --> REP["/dashboard/reports
Export findings · Download PDF"] D --> SET["/dashboard/settings
Live backend status & connection info"] ``` **页面** - **APK 分析** —— 拖放上传、验证以及启动分析。 - **分析流水线** —— 在后端处理样本时查看每个阶段的实时视图。 - **静态分析** —— 可疑 API、字符串池发现、URL/IP、权限关联。 - **行为分析** —— 带有证据和置信度的运行时能力推断。 - **AI 发现** —— AI(或基于规则)的分析师叙述和指标。 - **风险评分** —— 带有各因素细分的加权评分。 - **MITRE 映射** —— ATT&CK 技术及其支持证据。 - **报告** —— 将发现导出为 JSON 或下载 PDF 报告。 - **设置** —— 只读系统页面,显示*实时*后端连接检查和已配置的 API endpoint。 **状态管理** - **TanStack React Query** 负责处理获取、缓存以及驱动流水线视图的轮询(一旦分析状态变为 `ready` 或 `failed`,它会自动停止轮询)。 - **`lib/current-analysis.ts`** 跟踪当前选定的分析 ID(通过 `localStorage`),以便每个调查页面都能渲染同一样本。 - **`hooks/use-analysis.ts`** 封装了查询逻辑,并暴露了一个清晰的 `noAnalysis` 空状态信号。 ## API 参考 所有路由均挂载在 `/api` 下。 | 方法 | 端点 | 描述 | |--------|------------------------------|--------------------------------------------------------| | POST | `/api/upload-apk` | 上传 `.apk` 文件。返回分析 ID 和元数据。 | | POST | `/api/start-analysis` | 为给定的分析 ID 启动流水线。 | | GET | `/api/analysis/{id}` | 完整的、由引擎生成的分析记录。 | | GET | `/api/analysis-status/{id}` | 实时的逐阶段进度和百分比。 | | GET | `/api/risk-score/{id}` | 仅返回风险评分细分。 | | GET | `/api/pipeline` | 标准的流水线阶段定义。 | | GET | `/api/report/{id}` | 生成并下载 PDF 报告。 | | GET | `/api/dashboard-metrics` | 根据真实分析实时计算的汇总指标。 | **上传响应** ``` { "id": "anl_1a2b3c4d5e", "fileName": "suspicious-bank.apk", "size": 4823124, "sha256": "…", "status": "queued", "message": "APK received and queued for analysis." } ``` **分析状态响应** ``` { "id": "anl_1a2b3c4d5e", "status": "ai-investigation", "progress": 70, "ready": false, "error": null, "stages": [ { "id": "fingerprint", "label": "APK Fingerprinting", "status": "complete", "durationMs": 412 }, { "id": "static", "label": "Static Analysis", "status": "complete", "durationMs": 1180 }, { "id": "ai", "label": "AI Malware Analyst", "status": "active", "durationMs": 0 } ] } ``` 交互式 API 文档始终可在 `http://localhost:8005/docs` 找到。 ## 快速开始 ### 前置条件 - Python 3.12+ - Node.js 18+ (包含 npm) - PostgreSQL —— 可选;应用程序在没有它的情况下完全可以在内存存储上运行。 ### 一键启动 (Windows) ``` start.bat ``` 此操作会检查 Python 和 Node,创建虚拟环境并安装依赖项(首次运行时),为生产环境构建前端(首次运行时),在单独的窗口中启动这两个服务器,等待前端就绪,然后打开浏览器。 - 前端 → http://localhost:3005 - 后端 → http://localhost:8005 (文档位于 `/docs`) ### 手动设置 **后端** ``` cd backend python -m venv .venv .venv\Scripts\activate # Windows # source .venv/bin/activate # macOS / Linux pip install -r requirements.txt cp .env.example .env # add your settings uvicorn app.main:app --reload --port 8005 ``` **前端** ``` cd frontend npm install cp .env.example .env.local # edit if the backend isn't on localhost:8005 npm run dev # http://localhost:3005 (hot reload) # 或者:npm run build && npm run start # production ``` ## 项目结构 ``` Bank of India/ ├── README.md # This file ├── start.bat # One-click Windows launcher │ ├── backend/ │ ├── .env / .env.example # Environment config (.env is git-ignored) │ ├── requirements.txt # Python dependencies │ ├── prisma/schema.prisma # Optional PostgreSQL schema │ └── app/ │ ├── main.py # FastAPI entry point │ ├── config.py # Central settings │ ├── schemas.py # Pydantic data contracts │ ├── store.py # Storage seam (in-memory / Prisma) │ ├── analysis_service.py # Lifecycle + dashboard metrics │ ├── pipeline/ │ │ └── orchestrator.py # 10-stage pipeline engine │ ├── routers/ │ │ ├── upload.py # Upload & start-analysis │ │ ├── analysis.py # Analysis / status / risk / pipeline │ │ ├── dashboard.py # Aggregate metrics │ │ └── reports.py # PDF report │ └── services/ │ ├── fingerprint.py │ ├── dex_parser.py │ ├── reverse_engineering.py │ ├── static_analysis.py │ ├── behavioral_analysis.py │ ├── threat_intel.py │ ├── ai_analyst.py │ ├── risk_scoring.py │ ├── mitre_mapping.py │ └── report_generator.py │ └── frontend/ ├── .env.local / .env.example # Frontend config ├── package.json └── src/ ├── app/ │ ├── page.tsx # Landing page │ └── dashboard/ │ ├── page.tsx # Redirects to /dashboard/apk-analysis │ ├── layout.tsx │ ├── apk-analysis/ │ ├── pipeline/ │ ├── static-analysis/ │ ├── behavioral-analysis/ │ ├── ai-findings/ │ ├── risk-scoring/ │ ├── mitre/ │ ├── reports/ │ └── settings/ ├── components/ # brand · landing · dashboard · charts · ui ├── hooks/use-analysis.ts # Query + polling logic ├── lib/ # api client · current-analysis · utils · colors └── types/index.ts # Shared TypeScript types ``` ## 安全与法律声明 MalwareLens AI 专为银行和网络安全团队的**授权安全研究和防御性分析**而设计。上传的样本仅进行静态分析——绝不执行——因此该工具可以在本地安全运行,无需模拟器或沙箱。 - 仅对您获得授权进行分析的样本使用此工具。 - 该平台提供支持,但不能替代事件处理中专业的人工判断。 *MalwareLens AI —— 将可疑的 APK 转化为具有充分依据的裁定。*
标签:DAST, DNS通配符暴力破解, 安全分析平台, 安卓逆向工程, 恶意软件分析, 测试用例, 生成式AI, 索引, 自动化分析, 自动化攻击, 跨站脚本, 逆向工具