Anch0rX/Malware-Analysis-Master

GitHub: Anch0rX/Malware-Analysis-Master

一个整合静态分析、动态沙箱执行、VirusTotal 情报和 AI 报告生成的企业级恶意软件分析平台。

Stars: 0 | Forks: 0

# 恶意软件分析 Agent 一个全面的企业级恶意软件分析平台,将静态分析、动态执行、威胁情报集成和 AI 驱动的报告整合到一个统一的 Web 应用程序中。该系统基于 React 19、Express、tRPC 和 Drizzle ORM 构建,提供实时分析编排,并支持基于 Windows VM 动态分析的多 Agent 架构。 ## 概述 Malware Analysis Agent 通过集成多种分析技术的复杂管道,自动检测和分析可疑文件: - **静态分析**:快速提取文件元数据、加密哈希、嵌入字符串、导入表和熵值计算,以建立基线风险评分 - **VirusTotal 集成**:自动查询威胁情报数据库,将样本与已知恶意软件家族和检测率进行关联 - **动态分析**:在隔离的 Windows 虚拟机中编排执行样本,并全面收集事件(进程创建、网络活动、文件操作、注册表修改) - **规则引擎**:基于 YAML 的事件时间线威胁模式匹配,以生成可操作的安全发现 - **LLM 报告生成**:自动将分析结果综合为结构化的威胁报告,包含执行摘要、技术细节、失陷指标 和修复建议 - **多 Agent 编排**:分布式 Agent 系统(Coordinator、Policy、Static、Dynamic、ReportWriter),用于智能工作流规划和执行 ## 关键特性 ### 样本管理 - 支持上传 PE(Windows 可执行文件)、ELF(Linux 二进制文件)、APK(Android 包)、脚本、文档和压缩包 - 通过 SHA256 哈希自动去重,防止冗余分析 - S3 支持的存储,使用预签名 URL 进行安全样本检索 - 置顶功能,防止高价值样本被自动 TTL 清理 ### 威胁情报 - **VirusTotal API 集成**:实时查询检测率、首次/最后发现日期、恶意软件家族分类和行为标签 - **家族置信度评分**:基于检测共识对恶意软件家族归因进行概率评估 - **原始响应缓存**:存储完整的 VT API 响应,用于取证分析和历史比较 ### 静态分析引擎 - **加密哈希**:计算 MD5、SHA1、SHA256,用于样本识别和去重 - **文件类型检测**:自动分类(PE32、PE32+、ELF、APK 等)并推断 MIME 类型 - **字符串提取**:自动从二进制段中恢复嵌入的字符串、URL、IP 地址和注册表键 - **导入表分析**:枚举导入函数和 DLL 依赖项,以识别可疑的 API 使用模式 - **熵值计算**:检测加壳/加密段,表明可能存在混淆 - **风险评分**:基于提取的信号进行多因素静态置信度评估(0-1 分制) ### 动态分析编排 - **VM 生命周期管理**:自动配置、执行和清理隔离的分析环境 - **事件收集**:全面捕获进程创建、网络连接、文件 I/O 和注册表修改 - **出站策略控制**:可配置的网络隔离模式(NO_EGRESS、NAT_EGRESS、SIMULATED),用于受控样本执行 - **超时管理**:可配置的执行限制,支持优雅终止和工件保留 - **截图捕获**:自动视觉记录样本执行期间的可疑行为 - **工件管理**:收集并存储 PCAP 文件、内存转储、文件系统更改和 Sysmon 事件日志 ### 规则引擎 - **基于 YAML 的配置**:人类可读的威胁模式定义,支持基于优先级的评估 - **事件时间线匹配**:事件的时间相关性分析,以检测多步骤攻击序列 - **发现生成**:自动创建具有严重性级别、证据引用和修复指导的安全发现 - **可扩展规则集**:预加载默认规则,支持添加和修改自定义规则 - **规则版本控制**:规则更改的审计跟踪,包含创建者归属和时间戳 ### 分析详情与报告 - **全面时间线视图**:按时间顺序可视化所有收集的事件,支持过滤和搜索功能 - **发现聚合**:所有检测到的威胁的统一视图,支持按严重性排序和证据链接 - **工件管理**:直接下载访问分析副产品(截图、PCAP 文件、内存转储、事件日志) - **LLM 驱动的报告**:AI 生成的威胁分析报告,包含: - 面向非技术利益相关者的执行摘要 - 观察到的行为和攻击技术的技术分析 - IOC 提取(文件哈希、IP 地址、域名、URL、文件路径、注册表键) - 修复建议和缓解策略 - 将发现与特定事件和工件联系起来的证据引用 ### 历史与队列管理 - **高级过滤**:按文件哈希、恶意软件家族、风险评分、分析状态和日期范围进行搜索和过滤 - **批量操作**:批量重新分析、置顶和删除样本 - **队列监控**:实时查看待处理、运行中和失败的分析任务 - **任务控制**:手动取消和重试失败分析的能力 - **性能指标**:分析持续时间、资源利用率和吞吐量统计 ### 系统管理 - **设置管理**:配置 VirusTotal API 凭证、并发限制、工件保留策略 (TTL) 和分析超时 - **审计日志**:所有系统操作的完整审计跟踪,包括样本上传、分析触发、报告下载和配置更改 - **基于角色的访问控制**:用户和管理员角色,具有细粒度的权限管理 - **健康监控**:VT API 连接状态、数据库健康检查和存储配额监控 ## 架构 ### 技术栈 | 组件 | 技术 | 版本 | | -------------- | -------------- | ------- | | **Frontend** | React | 19.2.1 | | **UI 框架** | Tailwind CSS | 4.1.14 | | **UI 组件** | shadcn/ui (Radix UI) | Latest | | **Backend** | Express.js | 4.21.2 | | **RPC 框架** | tRPC | 11.6.0 | | **ORM** | Drizzle ORM | 0.44.5 | | **数据库** | MySQL/TiDB | 8.0+ | | **类型安全** | TypeScript | 5.9.3 | | **测试** | Vitest | 2.1.4 | | **构建工具** | Vite | 7.1.7 | | **包管理器** | pnpm | 10.15.1 | ### 系统架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ Web Browser │ │ (React 19 + Vite) │ └────────────────────────┬────────────────────────────────────────┘ │ │ tRPC Calls ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Express.js Server │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ tRPC Router & Procedures │ │ │ │ - samples.upload, samples.list, samples.pin │ │ │ │ - analysis.get, analysis.list, analysis.triggerDynamic │ │ │ │ - reports.generate, reports.export │ │ │ │ - settings.*, rules.*, audit.*, agents.* │ │ │ └──────────────────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Service Layer (Orchestration) │ │ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ │ │ Multi-Agent Pipeline │ │ │ │ │ │ - Coordinator Agent (workflow planning) │ │ │ │ │ │ - Policy Agent (policy evaluation) │ │ │ │ │ │ - Static Analysis Agent │ │ │ │ │ │ - Dynamic Analysis Agent │ │ │ │ │ │ - Report Writer Agent │ │ │ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ │ │ Analysis Services │ │ │ │ │ │ - VirusTotal API Client │ │ │ │ │ │ - Static Analysis Engine │ │ │ │ │ │ - Dynamic Analysis Orchestrator │ │ │ │ │ │ - Rules Engine (YAML-based) │ │ │ │ │ │ - LLM Report Generator │ │ │ │ │ └─────────────────────────────────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Data Access Layer (Drizzle) │ │ │ │ - Query builders for all entities │ │ │ │ - Transaction management │ │ │ │ - Audit logging │ │ │ └──────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────┐ ┌──────────┐ ┌──────────┐ │ MySQL │ │ S3/Cloud │ │ LLM API │ │ Database│ │ Storage │ │ Service │ └─────────┘ └──────────┘ └──────────┘ ``` ### 数据模型 系统使用规范化的关系模式,包含以下核心实体: **Samples(样本)**:上传的恶意软件样本,包含加密哈希、文件元数据、VirusTotal 情报和分类数据。 **Analysis Runs(分析运行)**:单独的分析执行,包含状态跟踪、风险评分(静态和动态)和结果聚合。 **Events(事件)**:在动态分析期间收集的细粒度行为事件,包括进程创建、网络连接、文件操作和注册表修改。 **Findings(发现)**:由规则引擎生成的安全发现,包含严重性级别、证据引用和修复指导。 **Artifacts(工件)**:分析副产品,包括截图、PCAP 文件、内存转储和带有 S3 存储引用的事件日志。 **Agent Executions(Agent 执行)**:多 Agent 管道的执行记录,跟踪每个 Agent 的决策、处理时间和状态。 **Audit Logs(审计日志)**:用于合规性和取证分析的系统操作完整审计跟踪。 **Settings(设置)**:用于系统管理和功能开关的配置键值对。 **Rules(规则)**:基于 YAML 的威胁检测规则,具有启用/禁用状态和优先级级别。 ## 入门指南 ### 前置条件 - **Node.js**: 18.0 或更高版本 - **pnpm**: 10.0 或更高版本(包管理器) - **MySQL/TiDB**: 8.0 或更高版本 - **VirusTotal API Key**(可选,用于威胁情报集成) ### 安装 1. **克隆仓库**: git clone https://github.com/yourusername/malware-analysis-agent.git cd malware-analysis-agent 2. **安装依赖**: pnpm install 3. **配置环境变量**: 在项目根目录创建一个 `.env.local` 文件: # 数据库 DATABASE_URL="mysql://user:password@localhost:3306/malware_analysis" # OAuth (Manus 平台) VITE_APP_ID="your-app-id" OAUTH_SERVER_URL="https://api.manus.im" VITE_OAUTH_PORTAL_URL="https://portal.manus.im" JWT_SECRET="your-jwt-secret" # S3 Storage AWS_REGION="us-east-1" AWS_ACCESS_KEY_ID="your-access-key" AWS_SECRET_ACCESS_KEY="your-secret-key" AWS_S3_BUCKET="your-bucket-name" # LLM Integration BUILT_IN_FORGE_API_URL="https://api.manus.im" BUILT_IN_FORGE_API_KEY="your-api-key" VITE_FRONTEND_FORGE_API_URL="https://api.manus.im" VITE_FRONTEND_FORGE_API_KEY="your-frontend-key" 4. **初始化数据库**: pnpm db:push 5. **启动开发服务器**: pnpm dev 应用程序将在 `http://localhost:3000` 上可用 ### 生产环境构建 ``` pnpm build pnpm start ``` ## 使用指南 ### 上传样本 1. 导航到 **Upload Sample** 页面 2. 拖放文件或点击浏览 3. 支持的格式:PE(EXE、DLL、SYS)、ELF(Linux 二进制文件)、APK(Android)、脚本、文档、压缩包 4. 系统自动: - 计算加密哈希(MD5、SHA1、SHA256) - 执行静态分析 - 查询 VirusTotal 获取威胁情报 - 启动多 Agent 分析管道 ### 监控分析进度 1. 进入 **Task Queue** 页面查看所有正在运行和排队的分析 2. 点击任何任务查看实时进度和收集的事件 3. 使用 **History** 页面按哈希、家族、风险评分或日期搜索和过滤过去的分析 ### 查看分析结果 1. 点击已完成的分析打开 **Analysis Detail** 页面 2. 查看 **Summary** 部分以进行快速风险评估 3. 浏览 **Event Timeline** 查看所有收集的行为事件 4. 检查 **Findings** 查看带有证据引用的安全相关检测结果 5. 下载 **Artifacts**(截图、PCAP 文件、内存转储)以进行进一步调查 6. 生成并导出 **LLM Report** 用于利益相关者沟通 ### 管理检测规则 1. 导航到 **Rules** 页面 2. 查看所有可用的威胁检测规则及其优先级和状态 3. 启用/禁用规则以自定义检测灵敏度 4. 点击 **Seed Default Rules** 加载预配置的威胁模式 5. 可以通过修改 `server/services/rulesEngine.ts` 文件添加自定义规则 ### 系统管理 1. 进入 **Settings** 页面(仅限管理员) 2. 配置 VirusTotal API 凭证并验证连接 3. 调整分析参数(并发限制、超时、工件保留) 4. 查看审计日志以跟踪系统活动和用户操作 5. 监控存储使用情况和数据库健康状况 ## API 参考 系统暴露了一个全面的 tRPC API,具有以下路由结构: ### Samples Router(样本路由) - `samples.upload`: 上传新样本进行分析 - `samples.get`: 通过 ID 或 SHA256 检索样本详情 - `samples.list`: 列出样本,支持过滤和分页 - `samples.pin`: 置顶/取消置顶样本以防止 TTL 删除 - `samples.getDownloadUrl`: 获取样本下载的预签名 URL ### Analysis Router(分析路由) - `analysis.get`: 检索分析运行详情 - `analysis.list`: 列出分析运行,支持过滤 - `analysis.getQueue`: 获取所有排队和正在运行的分析 - `analysis.triggerDynamic`: 手动触发动态分析 - `analysis.rerun`: 重新分析样本 - `analysis.cancel`: 取消正在运行的分析 - `analysis.getDetail`: 获取完整的分析详情,包括事件、发现和工件 ### Reports Router(报告路由) - `reports.generate`: 生成 LLM 驱动的威胁分析报告 - `reports.export`: 将报告导出为 Markdown ### Settings Router(设置路由 - 管理员) - `settings.get`: 检索配置值 - `settings.set`: 更新配置值 - `settings.getAll`: 获取所有设置 - `settings.checkVT`: 验证 VirusTotal API 连接 ### Rules Router(规则路由) - `rules.list`: 获取所有检测规则 - `rules.update`: 启用/禁用或更改规则优先级 - `rules.seedDefaults`: 加载默认威胁检测规则 ### Router(审计路由 - 管理员) - `audit.list`: 查询审计日志,支持过滤 ### Agents Router(Agents 路由) - `agents.listByRun`: 获取分析运行的多 Agent 执行记录 ## 项目结构 ``` malware-analysis-agent/ ├── client/ # React frontend │ ├── public/ # Static assets │ ├── src/ │ │ ├── components/ # Reusable UI components │ │ │ ├── DashboardLayout.tsx # Main dashboard layout │ │ │ ├── AIChatBox.tsx # Chat interface │ │ │ └── ... # Other UI components │ │ ├── pages/ # Page components │ │ │ ├── Home.tsx # Upload sample page │ │ │ ├── Queue.tsx # Task queue page │ │ │ ├── History.tsx # Analysis history page │ │ │ ├── AnalysisDetail.tsx # Analysis detail page │ │ │ ├── Rules.tsx # Rules management page │ │ │ ├── Settings.tsx # System settings page │ │ │ └── ... # Other pages │ │ ├── lib/ │ │ │ └── trpc.ts # tRPC client configuration │ │ ├── App.tsx # Main app component │ │ ├── main.tsx # Entry point │ │ └── index.css # Global styles │ └── index.html # HTML template ├── server/ # Express backend │ ├── _core/ # Core framework │ │ ├── index.ts # Server entry point │ │ ├── context.ts # tRPC context │ │ ├── trpc.ts # tRPC setup │ │ ├── auth.ts # Authentication │ │ ├── cookies.ts # Session management │ │ ├── env.ts # Environment variables │ │ ├── llm.ts # LLM integration │ │ ├── notification.ts # Owner notifications │ │ └── ... # Other core modules │ ├── services/ # Business logic │ │ ├── virustotal.ts # VirusTotal API client │ │ ├── staticAnalysis.ts # Static analysis engine │ │ ├── dynamicAnalysis.ts # Dynamic analysis orchestrator │ │ ├── multiAgent.ts # Multi-Agent pipeline │ │ ├── rulesEngine.ts # Rules engine │ │ ├── reportGenerator.ts # LLM report generation │ │ └── ... # Other services │ ├── routers.ts # tRPC router definitions │ ├── db.ts # Database query helpers │ ├── storage.ts # S3 storage helpers │ ├── analysis.test.ts # API tests │ └── auth.logout.test.ts # Auth tests ├── drizzle/ # Database schema │ ├── schema.ts # Table definitions │ └── migrations/ # Database migrations ├── shared/ # Shared types and constants │ └── const.ts # Shared constants ├── package.json # Dependencies and scripts ├── tsconfig.json # TypeScript configuration ├── vite.config.ts # Vite configuration └── README.md # This file ``` ## 测试 项目包含核心功能的全面单元测试: ``` # 运行所有测试 pnpm test # 在 watch 模式下运行测试 pnpm test --watch # 生成 coverage 报告 pnpm test --coverage ``` 测试位于 `server/*.test.ts` 文件中,使用 Vitest 和模拟依赖项。 ## 开发工作流 ### 类型检查 ``` pnpm check ``` ### 代码格式化 ``` pnpm format ``` ### 数据库迁移 ``` # 根据 schema 变更生成 migration 文件 pnpm db:push ``` ## 配置 ### VirusTotal API 集成 1. 从 [VirusTotal](https://www.virustotal.com/gui/my-apikey) 获取 API 密钥 2. 在设置页面中,输入您的 API 密钥 3. 点击 "Check Status" 验证连接 4. 系统将自动查询 VT 以获取所有上传的样本 ### 分析参数 在设置页面配置: - **Auto Dynamic Threshold**:静态置信度评分(0-1),高于此值将自动触发动态分析 - **Max Concurrent Runs**:同时进行的动态分析的最大数量 - **Dynamic Timeout**:动态分析的最大执行时间(秒) - **Max Screenshots**:每次分析捕获的最大截图数量 - **Artifact Retention (TTL)**:自动删除前保留分析工件的天数 ### 自定义规则 添加自定义威胁检测规则: 1. 编辑 `server/services/rulesEngine.ts` 2. 将新规则添加到 `DEFAULT_RULES` 数组: { ruleId: "custom_rule_001", name: "Suspicious Registry Modification", description: "Detects modifications to Run registry key", category: "persistence", priority: 8, isEnabled: true, conditions: [ { type: "registry", path: "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", operation: "write", } ], } 3. 运行 `pnpm db:push` 更新数据库 4. 重启服务器 ## 性能考虑 - **静态分析**:对于 100MB 以下的文件,通常在 1 秒内完成 - **动态分析**:可配置超时(默认 120 秒),支持优雅终止 - **并发限制**:可配置以防止资源耗尽(默认 5 个并发运行) - **数据库查询**:通过对 SHA256、runId 和 status 字段进行适当索引进行优化 - **S3 存储**:利用预签名 URL 将文件服务卸载到云基础设施 - **LLM 报告生成**:异步处理以避免阻塞 UI ## 安全考虑 - **样本隔离**:动态分析在具有网络策略的隔离虚拟机中运行 - **身份验证**:基于 OAuth 的身份验证,通过安全 Cookie 进行会话管理 - **授权**:对敏感操作进行基于角色的访问控制(用户/管理员) - **审计日志**:所有操作的完整审计跟踪,用于合规性和取证分析 - **数据加密**:S3 存储使用静态加密;数据库连接使用 SSL/TLS - **API 安全**:tRPC 程序强制执行身份验证和授权检查 - **输入验证**:Zod schema 在 API 边界验证所有用户输入 ## 故障排除 ### VirusTotal API 返回 "Invalid Key" **解决方案**:验证: 1. 您的 API 密钥在设置中正确输入 2. 密钥处于活动状态且未受速率限制 3. 您的 VT 账户已启用 API 访问 4. 密钥中没有多余的空格 ### 动态分析无法启动 **解决方案**:检查: 1. 有足够的磁盘空间用于 VM 配置 2. VM 模板已正确配置 3. Guest Agent 已安装并正在运行 4. 主机和 VM 之间的网络连接 ### 分析期间内存使用过高 **解决方案**: 1. 在设置中减少 `maxScreenshots` 2. 降低 `maxConcurrentRuns` 以限制并行分析 3. 增加 `dynamicTimeout` 以允许优雅终止 4. 监控 S3 存储的工件清理 ### 数据库连接错误 **解决方案**: 1. 验证 `DATABASE_URL` 配置正确 2. 检查 MySQL/TiDB 服务器是否正在运行且可访问 3. 确保数据库用户具有适当的权限 4. 运行 `pnpm db:push` 初始化 schema ## 贡献 欢迎贡献!请遵循以下准则: 1. Fork 仓库 2. 创建功能分支(`git checkout -b feature/amazing-feature`) 3. 进行更改并添加测试 4. 确保所有测试通过(`pnpm test`) 5. 格式化代码(`pnpm format`) 6. 使用清晰的消息提交(`git commit -m 'Add amazing feature'`) 7. 推送到分支(`git push origin feature/amazing-feature`) 8. 打开 Pull Request ## 许可证 本项目采用 MIT 许可证 - 详情请参见 [LICENSE](LICENSE) 文件。 ## 支持 如有问题、疑问或建议: - 在 GitHub 上提出 issue - 查看项目中的现有文档 - 查看上面的 API 参考部分 ## 路线图 - [ ] WebSocket 实时事件流 - [ ] 支持多租户和组织管理 - [ ] 高级行为分析与 MITRE ATT&CK 映射 - [ ] 自定义沙箱环境支持(KVM、Hyper-V、ESXi) - [ ] 与外部威胁源集成(MISP、OpenIOC) - [ ] 自动恶意软件家族聚类和归因 - [ ] 基于机器学习的异常检测 - [ ] 移动恶意软件分析能力 - [ ] 协作分析和注释功能 - [ ] 除了 tRPC 外,提供 REST API 用于第三方集成 ## 致谢 构建使用: - [React](https://react.dev) - UI 框架 - [Express.js](https://expressjs.com) - Web 服务器 - [tRPC](https://trpc.io) - 类型安全的 RPC 框架 - [Drizzle ORM](https://orm.drizzle.team) - 数据库 ORM - [Tailwind CSS](https://tailwindcss.com) - 实用优先的 CSS - [shadcn/ui](https://ui.shadcn.com) - UI 组件库 - [VirusTotal API](https://www.virustotal.com) - 威胁情报 **版本**: 1.0.0 **最后更新**: 2026 年 2 月 **维护者**: Anchor Cao
标签:AI报告生成, APK分析, DAST, DNS信息、DNS暴力破解, Drizzle ORM, ELF文件分析, Express, IOC提取, IP 地址批量处理, LLM安全应用, Multi-Agent架构, PE文件分析, React 19, tRPC, Windows沙箱, YAML规则引擎, YARA规则, 事件溯源, 云安全监控, 企业级安全平台, 分布式系统, 响应大小分析, 威胁情报, 开发者工具, 恶意样本检测, 恶意软件分析, 搜索语句(dork), 文件哈希计算, 文档宏分析, 沙箱技术, 注册表监控, 漏洞利用分析, 漏洞探索, 终端安全, 网络信息收集, 网络威胁检测, 网络安全, 网络安全审计, 自动化攻击, 虚拟机执行, 行为监控, 隐私保护, 静态分析