Ab-aswini/Malware-analysis

GitHub: Ab-aswini/Malware-analysis

基于Claude AI的恶意软件分析与数字取证平台,提供从样本摄取到法庭可采信报告生成的端到端分析流水线。

Stars: 0 | Forks: 0

ForensicAI Badge Claude AI Python FastAPI License PRs Welcome

``` ███████╗ ██████╗ ██████╗ ███████╗███╗ ██╗███████╗██╗ ██████╗ █████╗ ██╗ ██╔════╝██╔═══██╗██╔══██╗██╔════╝████╗ ██║██╔════╝██║██╔════╝ ██╔══██╗██║ █████╗ ██║ ██║██████╔╝█████╗ ██╔██╗ ██║███████╗██║██║ ███████║██║ ██╔══╝ ██║ ██║██╔══██╗██╔══╝ ██║╚██╗██║╚════██║██║██║ ██╔══██║██║ ██║ ╚██████╔╝██║ ██║███████╗██║ ╚████║███████║██║╚██████╗ ██║ ██║██║ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝ AI-Powered Malware Analysis & Digital Forensics Platform v1.0.0 ``` # ForensicAI — AI 驱动的恶意软件分析与数字取证平台 ForensicAI 是专为**网络犯罪调查员**、**事件响应人员**、**SOC 分析师**和**取证审查员**设计的下一代数字取证平台。它自动化了完整的恶意软件分析工作流程——从样本摄取到生成法庭可采信的证据报告——同时在每一步都保持密码学监管链的完整性。 ## 为什么选择 ForensicAI? 传统的恶意软件分析需要专业知识、多个互不关联的工具以及数小时的手动工作。ForensicAI 改变了这一点,它将**自动化多阶段分析**、**AI 驱动的推理**和**证据级文档**整合到一个平台中。 ### 问题所在 | 挑战 | 传统工作流程 | ForensicAI | |:----------|:---------------------|:-----------| | **分析时间** | 每个样本 2-8 小时 | 数分钟(自动化流水线) | | **C2 检测** | 手动域名/IP 调查 | 自动化四层检测(DGA、Beacon、框架指纹识别) | | **报告撰写** | 数小时的手动文档编写 | AI 生成的法庭可采信报告 | | **证据完整性** | 单独的监管链追踪 | 内置密码学审计追踪 | | **威胁情报** | 手动查询 VT、Shodan 等 | 并行多源情报丰富 | | **归因分析** | 需要专家级分析 | AI 辅助 TTP 关联 | | **IOC 共享** | 手动 STIX/MISP 格式化 | 一键导出 STIX 2.1 | ### 适用人群 - **执法部门网络单位** — 制作具有监管链的法庭可采信取证报告 - **事件响应团队** — 在活跃入侵期间进行快速分类和 C2 基础设施识别 - **SOC 分析师** — 自动化恶意软件分类和威胁评分 - **数字取证审查员** — 符合 NIST SP 800-86 标准的证据级分析 - **威胁情报分析师** — IOC 提取、丰富和 STIX 导出 - **安全研究人员** — 结合 AI 辅助逆向工程的深度恶意软件分析 - **CERT/CSIRT 团队** — 快速威胁评估和归因,用于协调响应 ## 目录 - [核心功能](#key-features) - [系统架构](#system-architecture) - [7 阶段分析流水线](#7-stage-analysis-pipeline) - [C2 检测引擎](#c2-detection-engine) - [AI 引擎 — Claude 集成](#ai-engine--claude-integration) - [威胁情报来源](#threat-intelligence-sources) - [项目结构](#project-structure) - [系统要求](#system-requirements) - [快速开始](#quick-start) - [在线原型(立即体验)](#live-prototype-try-it-now) - [API 参考](#api-reference) - [CLI 用法](#cli-usage) - [配置](#configuration) - [Docker 部署](#docker-deployment) - [取证标准与合规性](#forensic-standards--compliance) - [技术栈](#tech-stack) - [YARA 规则](#yara-rules) - [测试](#testing) - [未来路线图](#future-roadmap) - [已知限制](#known-limitations) - [贡献](#contributing) - [作者与致谢](#author--acknowledgments) - [许可证](#license) ## 核心功能 | 类别 | 能力 | |:---------|:-------------| | **多平台分析** | Windows PE/DLL, Android APK, iOS IPA, Linux ELF, 脚本 (Python/JS/PHP/PowerShell/Bash), Office 文档, PCAP, 内存转储 | | **C2 检测** | DGA 评分(6 指标启发式)、Beacon 间隔分析、框架指纹识别(Cobalt Strike, Metasploit, Sliver, Havoc, Brute Ratel, Covenant, Empire, Mythic + 自定义) | | **AI 驱动取证** | Claude AI 分类、深度代码分析、C2 基础设施映射、威胁归因、交互式问答、自动生成的取证叙述 | | **威胁情报** | VirusTotal, Shodan, AbuseIPDB, MISP, AlienVault OTX, Maltrail 域名数据库, IP2Location 地理定位, OFAC 制裁筛查 | | **法庭可采信报告** | HTML、JSON、STIX 2.1 格式,包含监管链、AI 方法免责声明、5 级置信度、MITRE ATT&CK 映射 | | **证据完整性** | SHA-256 监管链、防篡改审计追踪、分阶段完整性验证、符合 NIST SP 800-86 | | **可扩展部署** | Docker + Docker Compose, PostgreSQL + SQLite, Redis, 全异步架构, Celery 任务队列就绪 | | **交互式问答** | 向 AI 取证分析师询问关于任何已分析样本的后续问题——就像随时有一位专家待命 | ## 系统架构 该平台遵循**模块化微服务就绪架构**,每个组件可以独立运行,同时由中央流水线控制器协调。 ``` graph TB subgraph "User Interfaces" CLI["CLI
(Rich Terminal UI)"] API["REST API
(FastAPI + Swagger)"] WEB["Web Dashboard
(HTML/JS)"] end subgraph "Core Engine" ORCH["Analysis Orchestrator
7-Stage Pipeline"] DB["Database
(PostgreSQL / SQLite)"] CACHE["Cache
(Redis)"] end subgraph "Analysis Modules" SA["Static Analyzer
PE · APK · ELF · Scripts"] C2["C2 Detector
DGA · Beacon · Framework"] DA["Dynamic Analyzer
Sandbox Integration"] NA["Network Analyzer
PCAP · DNS · HTTP · TLS"] MA["Memory Analyzer
Volatility · Strings"] end subgraph "Intelligence Layer" AI["Claude AI Agent
Triage · Analysis · Reports"] TI["Threat Intel Engine
VT · Shodan · AbuseIPDB"] YARA["YARA Engine
7 Detection Rules"] end subgraph "Output Layer" RPT["Report Generator
HTML · JSON · STIX"] COC["Chain of Custody
Crypto Audit Trail"] IOC["IOC Export
STIX 2.1 / MISP"] end CLI --> ORCH API --> ORCH WEB --> API ORCH --> SA ORCH --> C2 ORCH --> DA ORCH --> NA ORCH --> MA ORCH --> AI ORCH --> TI ORCH --> RPT ORCH --> COC ORCH --> DB SA --> YARA C2 --> AI TI --> AI AI --> RPT COC --> RPT RPT --> IOC DB --> CACHE style ORCH fill:#1a1a2e,stroke:#00d4ff,color:#fff style AI fill:#7c3aed,stroke:#fff,color:#fff style C2 fill:#e74c3c,stroke:#fff,color:#fff style COC fill:#28a745,stroke:#fff,color:#fff style RPT fill:#f39c12,stroke:#fff,color:#fff ``` ### 一切如何连接 —— 端到端流程 此序列图展示了从上传样本到收到最终报告**确切发生的事情**。每一个 API 调用,每一个模块间的交接: ``` sequenceDiagram participant User participant API as FastAPI / CLI participant Orch as Orchestrator participant Static as Static Analyzer participant C2 as C2 Detector participant Intel as Threat Intel participant AI as Claude AI participant Report as Report Generator participant CoC as Chain of Custody User->>API: Upload malware sample API->>Orch: analyze_sample(file_path) Note over Orch: Stage 1: Ingestion Orch->>Static: ingest_sample() Static-->>Orch: Sample(hashes, metadata) Orch->>CoC: log_action("ingestion") Note over Orch: Stage 2: Static Analysis Orch->>Static: run_full_analysis() Static-->>Orch: strings, YARA, PE/APK data Note over Orch: Stage 3: C2 Detection Orch->>C2: run_full_analysis(strings, binary) C2-->>Orch: IOCs, DGA scores, beacons, frameworks Note over Orch: Stage 4: Threat Intel Orch->>Intel: check_virustotal(sha256) Orch->>Intel: enrich_iocs(c2_candidates) Orch->>Intel: check_malware_domains(domains) Intel-->>Orch: VT results, enriched IOCs Note over Orch: Stage 5: AI Analysis Orch->>AI: triage_sample() Orch->>AI: analyze_c2_infrastructure() Orch->>AI: attribute_threat() AI-->>Orch: triage, C2 map, attribution Note over Orch: Stage 6: Scoring Orch->>Orch: calculate_final_threat_score() Note over Orch: Stage 7: Report Generation Orch->>AI: generate_report() AI-->>Report: AI narrative Orch->>Report: generate_full_report() Report-->>Orch: ForensicReport(HTML/JSON/STIX) Orch->>CoC: compute_chain_hash() Orch-->>API: Complete results API-->>User: Threat score + Report + IOCs ``` ## 7 阶段分析流水线 ForensicAI 通过**顺序 7 阶段流水线**处理每个样本,并具备分阶段错误隔离——如果一个阶段失败,其余阶段仍能优雅地继续。 ``` graph LR S1["1 INGEST
───────
Hash computation
MD5 · SHA1 · SHA256
SSDEEP · TLSH
File type detection"] S2["2 STATIC
───────
String extraction
YARA scanning
PE/APK analysis
Permission audit"] S3["3 C2 DETECT
───────
IOC extraction
DGA scoring
Beacon detection
Framework ID"] S4["4 THREAT INTEL
───────
VirusTotal lookup
Shodan enrichment
AbuseIPDB check
Domain DB scan"] S5["5 AI ANALYSIS
───────
Claude triage
C2 mapping
Attribution
Code analysis"] S6["6 SCORING
───────
Weighted fusion
AI: 30% weight
YARA: 25% max
C2: 20% max"] S7["7 REPORT
───────
AI narrative
HTML/JSON/STIX
MITRE matrix
Chain of custody"] S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 style S1 fill:#16213e,stroke:#00d4ff,color:#fff style S2 fill:#16213e,stroke:#00d4ff,color:#fff style S3 fill:#1a1a2e,stroke:#e74c3c,color:#fff style S4 fill:#16213e,stroke:#f39c12,color:#fff style S5 fill:#16213e,stroke:#7c3aed,color:#fff style S6 fill:#16213e,stroke:#00d4ff,color:#fff style S7 fill:#16213e,stroke:#28a745,color:#fff ``` ### 每个阶段发生的事情 | 阶段 | 模块 | 作用 | 输入 | 输出 | |:-----:|:-------|:-------------|:------|:-------| | **1** | `StaticAnalyzer.ingest_sample()` | 计算 5 种哈希类型(MD5, SHA1, SHA256, SSDEEP, TLSH),检测文件类型,创建数据库记录 | 原始文件路径 | 包含完整元数据的 `Sample` 对象 | | **2** | `StaticAnalyzer.run_full_analysis()` | 提取并分类字符串(URL、IP、API、加密)、运行 YARA 规则、分析 PE 头/导入或 APK 权限/组件 | `Sample` 对象 | URL、IP、域名、YARA 匹配、权限、MITRE 技术 | | **3** | `C2Detector.run_full_analysis()` | 提取 IOC(IPv4/6、域名、URL、电子邮件、比特币、.onion)、对域名进行 DGA 评分、分析 Beacon 模式、识别 C2 框架指纹 | 提取的字符串 + 二进制文件 | IOC 指标、DGA 分析、Beacon 模式、框架 ID | | **4** | `ThreatIntelEngine` | 查询 VirusTotal 获取文件信誉,通过 Shodan 和 AbuseIPDB 丰富 IP 信息,根据 maltrail 数据库检查域名,地理定位 + OFAC 筛查 | SHA-256, IOCs, 域名 | VT 检测、Shodan 数据、滥用报告、地理定位 | | **5** | `ForensicAIAgent` | Claude AI 执行快速分类,映射 C2 基础设施,关联 TTP 进行归因,生成法庭可用叙述 | 所有先前结果 | AI 分类、C2 映射、归因、置信度 | | **6** | `_calculate_final_threat_score()` | 使用加权公式将所有信号融合为 0-100 的单一分数 | 所有分析结果 | 威胁分数 + 严重程度级别 | | **7** | `ReportGenerator.generate_full_report()` | 生成多格式取证报告,包含执行摘要、MITRE 矩阵、IOC 表、监管链、AI 方法论 | 所有结果 + AI 叙述 | HTML/JSON/STIX 报告文件 | ### 威胁分数计算 最终威胁分数计算为所有分析信号的**加权融合**: ``` pie title "Threat Score Weight Distribution" "AI Triage Score (30%)" : 30 "YARA Rule Matches (25%)" : 25 "C2 Candidates Found (20%)" : 20 "VirusTotal Detections (15%)" : 15 "DGA Domains Detected (10%)" : 10 ``` | 信号 | 最大贡献 | 公式 | 示例 | |:-------|:----------------:|:--------|:--------| | AI 分类分数 | 30 分 | `ai_risk_score × 0.3` | AI 评估风险 90/100 → 27 分 | | YARA 匹配 | 25 分 | `min(match_count × 10, 25)` | 3 个 YARA 命中 → 25 分(上限) | | C2 候选 | 20 分 | `min(c2_count × 8, 20)` | 2 个 C2 服务器 → 16 分 | | VirusTotal | 15 分 | `(positives / total) × 15` | 45/70 引擎 → 9.6 分 | | DGA 域名 | 10 分 | `min(dga_count × 5, 10)` | 3 个 DGA 域名 → 10 分(上限) | **严重程度映射:** `0-19` 信息 | `20-39` 低 | `40-59` 中 | `60-79` 高 | `80-100` **严重** ### 错误隔离 —— 为什么每个阶段是独立的 ``` Stage 1 (Ingest) ─── REQUIRED ─── Pipeline halts if this fails Stage 2 (Static) ─── OPTIONAL ─── Continues with empty results Stage 3 (C2) ─── OPTIONAL ─── Continues with empty results Stage 4 (Intel) ─── OPTIONAL ─── Continues with empty results Stage 5 (AI) ─── OPTIONAL ─── Continues with empty results Stage 6 (Scoring) ─── ALWAYS ───── Computes score from whatever data exists Stage 7 (Report) ─── OPTIONAL ─── Continues without report file ``` 这意味着:**即使 VirusTotal 宕机,即使您的 Anthropic API 密钥缺失,即使 YARA 失败**——您仍然可以从成功完成的阶段获得部分结果。 ## C2 检测引擎 C2 检测模块(`c2_detection/detector.py`)使用**四个独立的检测层**协同工作来识别命令与控制基础设施: ``` graph TB INPUT["Extracted Strings + Binary Data"] subgraph "Layer 1: IOC Extraction" IP["IPv4 / IPv6
Addresses"] DOM["Domain Names
(benign filtered)"] URL["URLs
(HTTP/HTTPS)"] EMAIL["Email Addresses"] BTC["Bitcoin Addresses"] ONION[".onion Domains"] end subgraph "Layer 2: DGA Detection" ENT["Shannon Entropy
weight: 0.3"] CHAR["Character Distribution
weight: 0.15"] VOWEL["Vowel Ratio
weight: 0.15"] BIGRAM["Bigram Frequency
weight: 0.2"] LEN["Domain Length
weight: 0.1"] DIGIT["Digit Ratio
weight: 0.1"] DGA_SCORE["DGA Score 0.0-1.0
threshold: 0.6"] end subgraph "Layer 3: Beacon Detection" INTERVAL["Interval Analysis
Mean / StdDev"] JITTER["Jitter Calculation
Coefficient of Variation"] PERIODIC["Periodicity Check
CV < 0.3 = beacon"] end subgraph "Layer 4: Framework Fingerprinting" CS["Cobalt Strike
Named pipes · Config"] MSF["Metasploit
metsrv · stdapi"] SLIVER["Sliver
sliverpb · implant"] HAVOC["Havoc
demon · Teamserver"] BR["Brute Ratel
badger · brc4"] end OUTPUT["C2 Candidates
+ Confidence Level"] INPUT --> IP & DOM & URL & EMAIL & BTC & ONION INPUT --> ENT & CHAR & VOWEL & BIGRAM & LEN & DIGIT ENT & CHAR & VOWEL & BIGRAM & LEN & DIGIT --> DGA_SCORE INPUT --> INTERVAL --> JITTER --> PERIODIC INPUT --> CS & MSF & SLIVER & HAVOC & BR IP & DOM & URL --> OUTPUT DGA_SCORE --> OUTPUT PERIODIC --> OUTPUT CS & MSF & SLIVER & HAVOC & BR --> OUTPUT style INPUT fill:#16213e,stroke:#00d4ff,color:#fff style OUTPUT fill:#e74c3c,stroke:#fff,color:#fff style DGA_SCORE fill:#f39c12,stroke:#fff,color:#fff ``` ### DGA 检测 —— 评分细分 每个域名在 6 个指标上进行评分,产生从 0.0(合法)到 1.0(算法生成)的加权分数: | 指标 | 权重 | 测量内容 | 合法域名 | DGA 域名 | |:-------|:------:|:-----------------|:------------------|:-----------| | 香农熵 | 30% | 字符随机性 | ~2.5-3.0 位/字符 | > 3.5 位/字符 | | 字符分布 | 15% | 唯一字符/长度比 | < 0.6 | > 0.8 | | 元音比例 | 15% | 元音占比 | 0.3-0.5(自然) | < 0.2 或 > 0.6 | | 双字母组频率 | 20% | 常见字母对使用情况 | 高频匹配 | 低频(机器生成) | | 域名长度 | 10% | 总字符数 | 5-12 个字符 | > 15 个字符 | | 数字比例 | 10% | 域名中的数字 | < 0.1 | > 0.3(十六进制字符串) | **阈值:** 得分 **> 0.6** 的域名被标记为潜在 DGA 域名。 **示例:** `xkcd3f7g2h9q.com` 得分约为 0.85(高熵、差的双字母组、高数字比例),而 `google.com` 约为 0.15。 ### 支持的 C2 框架(9 个家族) | 框架 | 检测方法 | 关键签名 | |:----------|:----------------|:---------------| | **Cobalt Strike** | 命名管道、配置模式、EICAR 标记 | `\\.\pipe\msagent_`, `MSSE-`, Beacon 配置块 | | **Metasploit** | 模块字符串、Payload 模式 | `metsrv`, `stdapi`, `reverse_tcp`, `meterpreter` | | **Sliver** | Protobuf 标记、Implant 字符串 | `sliverpb`, `sliver-client`, implant 配置 | | **Havoc** | Demon 代理标记、Teamserver 模式 | `havoc`, `demon`, `Teamserver` | | **Brute Ratel** | Badger 代理标记 | `brc4`, `badger`, `bruteratel` | | **Covenant** | Grunt 代理标记 | `covenant`, `grunt`, `elite` | | **Empire** | PowerShell 代理标记 | `empire`, `stager`, `invoke-empire` | | **Mythic** | Agent 回调标记 | `mythic`, `apfell`, `poseidon` | | **自定义** | 通用 C2 模式 | `/beacon`, `/callback`, `/checkin`, HTTP POST + base64 | ## AI 引擎 —— Claude 集成 ForensicAI 使用 **Anthropic 的 Claude** 作为取证分析副驾驶,配备 **6 个专用提示模板**,每个都专为法庭可采信输出而设计: ``` graph TB subgraph "Claude AI Agent" direction TB SYS["FORENSIC_ANALYST_SYSTEM
──────────────────────
20+ years experience persona
Court-ready standards (NIST)
MITRE ATT&CK mapping required
5 Confidence Levels required
Full C2 chain tracing"] T1["1. TRIAGE_PROMPT
Rapid threat assessment
Malware classification
Family identification
Priority indicators"] T2["2. DEEP_CODE_ANALYSIS
Disassembly interpretation
API call chain analysis
Obfuscation detection
Packer identification"] T3["3. C2_ANALYSIS
Infrastructure mapping
Protocol identification
Kill chain tracing
Proxy/CDN detection"] T4["4. THREAT_ATTRIBUTION
APT group correlation
TTP fingerprinting
Campaign identification
Geopolitical context"] T5["5. FORENSIC_REPORT
Executive summary
Technical narrative
Timeline reconstruction
Recommendations"] T6["6. INTERACTIVE_QA
Follow-up questions
Evidence clarification
Hypothesis testing
Expert consultation"] end SYS --> T1 & T2 & T3 & T4 & T5 & T6 style SYS fill:#7c3aed,stroke:#fff,color:#fff style T1 fill:#16213e,stroke:#7c3aed,color:#fff style T2 fill:#16213e,stroke:#7c3aed,color:#fff style T3 fill:#16213e,stroke:#7c3aed,color:#fff style T4 fill:#16213e,stroke:#7c3aed,color:#fff style T5 fill:#16213e,stroke:#7c3aed,color:#fff style T6 fill:#16213e,stroke:#7c3aed,color:#fff ``` ### AI 置信度级别 每个 AI 发现都标记有以下置信度级别之一(法庭可采信性所必需): | 级别 | 定义 | 法庭可采信性 |示例 | |:------|:-----------|:-------------------|:--------| | **已确认 (CONFIRMED)** | 证据中直接观察到,可重现 | 全部权重——主要证据 | "二进制文件在偏移量 0x4A00 处包含 CobaltStrike Beacon 配置" | | **高 (HIGH)** | 强指标,多个佐证数据点 | 强权重——佐证证据 | "3 个 VT 引擎 + YARA 匹配 + C2 Beacon 模式 = Cobalt Strike" | | **中 (MEDIUM)** | 合理指标,需要一些佐证 | 仅作佐证证据 | "域名 DGA 分数 0.72 表明为算法生成" | | **低 (LOW)** | 弱指标,需要进一步调查 | 仅作背景——非结论性 | "IP 地理定位到已知 APT 活动的国家" | | **未验证 (UNVERIFIED)** | 仅假设,证据不足 | 不可采信 | "行为模式粗略类似于 APT28 TTP" | ### AI 审计追踪 —— 法庭透明度 每次 Claude API 调用都会创建一个全面的审计记录: | 字段 | 目的 | 示例 | |:------|:--------|:--------| | `prompt_sent` | 发送给 Claude 的完整文本 | 包含样本数据的完整取证分析提示 | | `response_received` | 完整的 Claude 响应 | 结构化 JSON 分析及发现 | | `model_used` | 确切的模型版本 | `claude-sonnet-4-20250514` | | `timestamp` | UTC 时间戳 | `2024-03-15T14:30:00Z` | | `token_usage` | 输入/输出 Token | `{input: 2340, output: 1856}` | | `parsing_status` | 响应是否正确解析 | `success` / `fallback_to_raw` | 这意味着:**每个 AI 结论都可以追溯到其确切的输入和推理**,使其在法庭程序中具有可辩护性。 ## 威胁情报来源 ``` graph LR subgraph "External APIs" VT["VirusTotal
──────────
File reputation
Detection rate
Malware family names
Community score"] SH["Shodan
──────────
IP enrichment
Open ports/services
Vulnerabilities
ASN/ISP data"] AB["AbuseIPDB
──────────
Abuse confidence score
Report history (90 days)
Tor exit node detection
Usage type"] end subgraph "Local Databases" MT["Maltrail DB
──────────
Malware domain list
Auto-updated from GitHub
50,000+ entries"] IP2["IP2Location
──────────
Country · Region · City
Latitude · Longitude
Offline lookup (fast)"] OFAC["OFAC Screening
──────────
Sanctioned countries
Cuba · Iran · NK
Russia · Syria · Belarus
Myanmar · Venezuela"] end subgraph "IOC Enrichment Pipeline" ENRICH["enrich_iocs()
────────────
Parallel queries
Score fusion
Context aggregation"] end VT --> ENRICH SH --> ENRICH AB --> ENRICH MT --> ENRICH IP2 --> ENRICH OFAC --> ENRICH ENRICH --> SCORE["Unified Threat Score
0-100"] style ENRICH fill:#f39c12,stroke:#fff,color:#fff style SCORE fill:#e74c3c,stroke:#fff,color:#fff ``` ### IOC 威胁评分公式 ``` Score = (VT_positives / VT_total × 60) # VirusTotal: heavy weight (max 60) + (AbuseIPDB_confidence × 0.2) # Abuse score: moderate (max 20) + (30 if malware_db_hit) # Known malicious domain (30) + (10 if OFAC_country) # Sanctioned nation (10) Final = min(Score, 100.0) ``` ## 项目结构 ``` ForensicAI/ │ ├── forensicai/ # Main application package │ ├── __init__.py # Package init (v1.0.0) │ ├── __main__.py # python -m forensicai entry point │ │ │ ├── core/ # Core infrastructure │ │ ├── orchestrator.py # 7-stage pipeline controller (365 lines) │ │ ├── config.py # Pydantic settings — DB, AI, Intel, Analysis (251 lines) │ │ ├── models.py # 11 SQLAlchemy ORM models + 5 enums (575 lines) │ │ ├── database.py # Async SQLAlchemy engine + sessions (48 lines) │ │ └── cli.py # Rich terminal UI — analyze / server (236 lines) │ │ │ ├── analyzers/ # Analysis engines │ │ ├── static/ │ │ │ ├── analyzer.py # PE, APK, ELF, script analysis (539 lines) │ │ │ └── rules/ │ │ │ └── c2_detection.yar # 7 YARA detection rules (172 lines) │ │ ├── dynamic/ │ │ │ └── analyzer.py # Cuckoo/CAPE sandbox integration (130 lines) │ │ ├── network/ │ │ │ └── analyzer.py # PCAP parsing — dpkt + scapy (227 lines) │ │ └── memory/ │ │ └── analyzer.py # Volatility 3 memory forensics (236 lines) │ │ │ ├── c2_detection/ # C2 detection engine │ │ └── detector.py # IOC extraction, DGA, beacon, framework ID (680+ lines) │ │ │ ├── ai_engine/ # Claude AI integration │ │ ├── claude_agent.py # 6 analysis methods + audit logging (270+ lines) │ │ └── prompts.py # Forensic-grade prompt templates │ │ │ ├── malware_intel/ # Threat intelligence │ │ └── threat_intel.py # VT, Shodan, AbuseIPDB, maltrail, geolocation (378 lines) │ │ │ ├── evidence/ # Chain of custody │ │ └── chain_manager.py # Cryptographic audit trail — NIST SP 800-86 (202 lines) │ │ │ ├── reports/ # Report generation │ │ └── generator.py # HTML, JSON, STIX 2.1 output — XSS-safe (430+ lines) │ │ │ └── api/ # REST API │ └── app.py # FastAPI endpoints + web dashboard (453 lines) │ ├── tests/ # Test suite │ ├── conftest.py # Pytest fixtures (64 lines) │ └── test_c2_detector.py # C2 detection unit tests (166 lines) │ ├── docker/ │ └── docker-compose.yml # PostgreSQL + Redis + App ├── Dockerfile # Multi-stage production build (non-root) ├── pyproject.toml # Project metadata & 75+ dependencies ├── requirements.txt # Core pip dependencies ├── .env.example # Environment variable template └── .gitignore ``` **总计:** 24 个模块中约 5,000+ 行 Python 代码。 ### 数据库架构(11 个表) ``` erDiagram Sample ||--o{ StaticAnalysis : "has" Sample ||--o{ DynamicAnalysis : "has" Sample ||--o{ NetworkAnalysis : "has" Sample ||--o{ C2Detection : "has" Sample ||--o{ IOC : "contains" Sample ||--o{ AIAnalysis : "analyzed by" Sample ||--o{ EvidenceChainEntry : "tracked by" Sample ||--o{ ForensicReport : "generates" Sample { string id PK string file_name string md5 string sha1 string sha256 string ssdeep string tlsh string file_type int file_size enum sample_type enum scan_status } C2Detection { string id PK string sample_id FK string c2_ip string c2_domain int c2_port enum c2_framework float confidence_score json beacon_analysis json dga_analysis } EvidenceChainEntry { string id PK string sample_id FK string action string performed_by string evidence_hash_before string evidence_hash_after bool integrity_verified json environment datetime timestamp } ForensicReport { string id PK string sample_id FK string report_type string report_format string case_number string analyst_name text executive_summary json report_data string file_path } AIAnalysis { string id PK string sample_id FK string analysis_type string model_used text prompt_sent text response_received json parsed_result float confidence_score } ``` ## 系统要求 ### 最低要求(本地/开发) | 组件 | 要求 | 备注 | |:----------|:------------|:------| | **操作系统** | Windows 10+, macOS 12+, Ubuntu 20.04+ | 任何支持 Python 3.10+ 的操作系统 | | **Python** | 3.10 或更高版本 | 推荐使用 3.12 以获得最佳性能 | | **内存 (RAM)** | 4 GB 最小 | 推荐使用 8 GB 以处理大型样本 | | **磁盘空间** | 2 GB 用于安装 | + 样本存储和报告空间 | | **Anthropic API 密钥** | AI 功能必需 | 免费层可用;推荐付费层 | | **互联网** | 威胁情报 API 必需 | 离线模式可在无 VT/Shodan/AbuseIPDB 的情况下工作 | ### 推荐的生产环境设置 | 组件 | 要求 | 备注 | |:----------|:------------|:------| | **操作系统** | Ubuntu 22.04 LTS / Debian 12 | 在 Linux 上测试;推荐 Docker | | **Python** | 3.12 | 最佳异步性能 | | **内存 (RAM)** | 16 GB+ | 大型样本和并发分析 | | **CPU** | 4+ 核 | 并行分析流水线 | | **磁盘** | 50 GB+ SSD | 快速样本 I/O + 报告存储 | | **Docker** | 24.0+ | 用于容器化部署 | | **Docker Compose** | 2.20+ | 多服务编排 | | **PostgreSQL** | 16+ | 生产数据库(相对于 SQLite 开发版) | | **Redis** | 7+ | 缓存 + Celery 任务队列 | ### 必需的 API 密钥 | API | 必需? | 免费层? | 如何获取 | |:----|:---------:|:----------:|:-----------| | **Anthropic (Claude)** | 是(用于 AI 功能) | 是(受限) | [console.anthropic.com](https://console.anthropic.com/) | | **VirusTotal** | 否(可选) | 是(4 请求/分钟) | [virustotal.com/gui/join-us](https://www.virustotal.com/gui/join-us) | | **Shodan** | 否(可选) | 是(受限) | [account.shodan.io/register](https://account.shodan.io/register) | | **AbuseIPDB** | 否(可选) | 是(1000 请求/天) | [abuseipdb.com/register](https://www.abuseipdb.com/register) | | **MISP** | 否(可选) | 自托管 | [misp-project.org](https://www.misp-project.org/) | ### 系统依赖项(用于完整功能集) ``` # Ubuntu / Debian sudo apt-get install -y \ python3-dev python3-pip python3-venv \ binutils file libmagic1 \ libfuzzy-dev \ # For ssdeep fuzzy hashing libssl-dev \ # For cryptography build-essential \ # For compiling C extensions tshark # For network analysis (optional) # macOS (通过 Homebrew) brew install python@3.12 libmagic ssdeep openssl # Windows # 大多数依赖项通过 pip 自动安装 # 对于 ssdeep:从 https://github.com/MacDue/ssdeep-windows-32_64 下载预构建的 wheel ``` ### 可选工具(增强功能) | 工具 | 启用的功能 | 安装方式 | |:-----|:----------------|:-------------| | **radare2** | 静态分析中的高级反汇编 | `apt install radare2` 或 [radare.org](https://rada.re) | | **Volatility 3** | 完整的内存转储取证 | `pip install volatility3` | | **Wireshark/tshark** | 增强的 PCAP 分析 | `apt install tshark` | | **Cuckoo Sandbox** | 动态恶意软件执行分析 | [cuckoosandbox.org](https://cuckoosandbox.org/) | | **CAPE Sandbox** | 高级行为分析 | [github.com/kevoreilly/CAPEv2](https://github.com/kevoreilly/CAPEv2) | ## 快速开始 ### 选项 1:本地安装(推荐入门) ``` # 1. Clone 仓库 git clone https://github.com/Ab-aswini/Malware-analysis.git cd Malware-analysis # 2. 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac # venv\Scripts\activate # Windows # 3. 安装依赖项 pip install -r requirements.txt # 4. (可选)作为带有开发工具的可编辑包安装 pip install -e ".[dev]" # 5. 配置环境 cp .env.example .env # 编辑 .env — 至少添加你的 ANTHROPIC_API_KEY # 6. 运行你的第一次分析! forensicai analyze suspicious_file.exe --case-id CASE-2024-001 ``` ### 选项 2:Docker(推荐生产环境) ``` # 1. Clone 并配置 git clone https://github.com/Ab-aswini/Malware-analysis.git cd Malware-analysis cp .env.example .env # 使用你的 API keys 编辑 .env # 2. 构建并启动所有服务 docker compose -f docker/docker-compose.yml up -d # 3. 打开 dashboard open http://localhost:8000 # 4. 查看日志 docker compose -f docker/docker-compose.yml logs -f forensicai ``` ### 选项 3:Python 模块 ``` # 从源码安装 pip install . # 作为模块运行 python -m forensicai analyze sample.exe python -m forensicai server --port 8000 ``` ## 在线原型(立即体验) ### 分步设置指南 按照这 4 个步骤在您的机器上运行原型: ``` graph LR A["1. Clone"] --> B["2. Install"] B --> C["3. Configure"] C --> D["4. Launch"] D --> E(("Dashboard
Ready")) style A fill:#1a1a2e,stroke:#00d4ff,color:#fff style B fill:#1a1a2e,stroke:#7c3aed,color:#fff style C fill:#1a1a2e,stroke:#facc15,color:#fff style D fill:#1a1a2e,stroke:#34d399,color:#fff style E fill:#34d399,stroke:#fff,color:#000 ``` #### 第 1 步 —— 克隆仓库 ``` git clone https://github.com/Ab-aswini/Malware-analysis.git cd Malware-analysis/ForensicAI ``` #### 第 2 步 —— 安装依赖 ``` # 创建虚拟环境(推荐) python -m venv venv # 激活它 source venv/bin/activate # Linux / macOS venv\Scripts\activate # Windows (CMD) .\.venv\Scripts\Activate.ps1 # Windows (PowerShell) # 安装 prototype requirements pip install -r prototype/requirements.txt ```
安装了什么?(点击展开) | 包 | 版本 | 用途 | |:--------|:--------|:--------| | `fastapi` | >=0.110.0 | Web 框架 + API 端点 | | `uvicorn` | >=0.27.0 | ASGI 服务器 | | `anthropic` | >=0.40.0 | Claude AI SDK | | `jinja2` | >=3.1.0 | HTML 模板渲染 | | `python-multipart` | >=0.0.6 | 文件上传处理 | | `python-dotenv` | >=1.0.0 | 环境变量加载 | **总安装大小:约 15 MB** —— 无需重型 ML 框架,无需 C 编译器。
#### 第 3 步 —— 配置 API 密钥(可选) ``` # 选项 A:创建一个 .env 文件 echo "ANTHROPIC_API_KEY=sk-ant-api03-..." > .env # 选项 B:设置为环境变量 export ANTHROPIC_API_KEY=sk-ant-api03-... # Linux / macOS set ANTHROPIC_API_KEY=sk-ant-api03-... # Windows (CMD) $env:ANTHROPIC_API_KEY="sk-ant-api03-..." # Windows (PowerShell) ```
从哪里获取 API 密钥? 1. 访问 [console.anthropic.com](https://console.anthropic.com/) 2. 注册或登录 3. 导航至您账户设置中的 **API Keys** 4. 点击 **Create Key** 并复制 `sk-ant-...` 值 5. 将其粘贴到您的 `.env` 文件或环境变量中
#### 第 4 步 —— 启动 ``` python -m prototype.app ``` 您应该看到: ``` ============================================================ ForensicAI Live Prototype AI-Powered Malware Analysis Demo ============================================================ Dashboard: http://127.0.0.1:7860 API Docs: http://127.0.0.1:7860/docs AI Status: CONNECTED (or NOT SET) ============================================================ ``` 在浏览器中打开 **http://localhost:7860**。拖放任何文件即可开始分析。 ### 工作原理 —— 分析流程 ``` sequenceDiagram actor User participant Browser as Dashboard
(localhost:7860) participant Server as FastAPI Server participant Analyzer as File Analyzer
(Pure Python) participant AI as Claude AI
(Anthropic API) User->>Browser: Drag & drop file Browser->>Server: POST /api/analyze (upload) Server-->>Browser: analysis_id Browser->>Server: GET /api/stream/{id} (SSE) Note over Server,Analyzer: Stage 1: File Info Server->>Analyzer: compute_hashes() + detect_type() Analyzer-->>Server: MD5, SHA1, SHA256, entropy Server-->>Browser: SSE event: file_info Note over Server,Analyzer: Stage 2: Strings Server->>Analyzer: extract_strings() + classify() Analyzer-->>Server: URLs, APIs, suspicious strings Server-->>Browser: SSE event: strings Note over Server,Analyzer: Stage 3: IOCs Server->>Analyzer: extract_iocs() Analyzer-->>Server: IPs, domains, URLs, emails Server-->>Browser: SSE event: iocs Note over Server,Analyzer: Stage 4: DGA Detection Server->>Analyzer: dga_score() per domain Analyzer-->>Server: 6-metric scores + is_dga flags Server-->>Browser: SSE event: dga Note over Server,AI: Stage 5: AI Triage Server->>AI: Claude triage prompt AI-->>Server: classification, risk_score, MITRE Server-->>Browser: SSE event: ai_triage Note over Server,AI: Stage 6: AI Deep Analysis Server->>AI: C2 analysis + report prompt AI-->>Server: C2 servers, forensic report Server-->>Browser: SSE event: ai_deep Server-->>Browser: SSE event: complete User->>Browser: Ask follow-up question Browser->>Server: POST /api/ask Server->>AI: Q&A with full context AI-->>Server: Answer Server-->>Browser: AI response ``` ### 您会看到什么 —— 仪表板部分 ``` graph TD subgraph "Upload Zone" UZ["Drag & Drop / Choose File
Animated conic-gradient border"] end subgraph "Pipeline Progress" P1["1 File Info"] --> P2["2 Strings"] P2 --> P3["3 IOCs"] P3 --> P4["4 DGA"] P4 --> P5["5 AI Triage"] P5 --> P6["6 AI Deep"] end subgraph "Results Grid" FI["File Info Card
Name, type, hashes, entropy bar"] TG["Threat Gauge
Animated 0-100 score"] TR["AI Triage Card
Classification, family, confidence"] MI["MITRE ATT&CK
Technique chips by tactic"] IOC["IOC Table
Colored badges + DGA scores"] C2["C2 Detection
Frameworks, protocols, evidence"] RPT["Forensic Report
Summary, findings, recommendations"] TL["Evidence Timeline
Vertical chain of events"] QA["AI Q&A Chat
Ask follow-up questions"] end UZ --> P1 P6 --> FI P6 --> TG P6 --> TR P6 --> MI P6 --> IOC P6 --> C2 P6 --> RPT P6 --> TL P6 --> QA style UZ fill:#0a0a1a,stroke:#00d4ff,color:#fff style P1 fill:#34d399,stroke:#fff,color:#000 style P2 fill:#34d399,stroke:#fff,color:#000 style P3 fill:#34d399,stroke:#fff,color:#000 style P4 fill:#34d399,stroke:#fff,color:#000 style P5 fill:#7c3aed,stroke:#fff,color:#fff style P6 fill:#7c3aed,stroke:#fff,color:#fff style TG fill:#f87171,stroke:#fff,color:#fff style C2 fill:#f87171,stroke:#fff,color:#fff style QA fill:#7c3aed,stroke:#fff,color:#fff ``` ### 功能一览 | 功能 | 描述 | 技术支持 | |:--------|:------------|:-----------| | 实时流 | 观察每个阶段完成时的结果出现 | SSE (Server-Sent Events) | | 威胁仪表 | 动画 SVG 弧线,0-100,严重程度颜色编码 | CSS + JS 动画 | | IOC 表格 | 颜色编码徽章(IP、域名、URL、电子邮件、比特币、.onion) | 纯 Python 正则表达式 | | DGA 评分 | 6 指标启发式:熵、字符分布、元音、双字母组、长度、数字 | 香农熵数学 | | AI 分类 | 威胁分类、风险评分、恶意软件家族 | Claude AI | | MITRE 映射 | 按战术分组的 ATT&CK 技术标签 | Claude AI | | C2 检测 | 框架识别(Cobalt Strike, Metasploit, Sliver...),协议 | Claude AI | | 取证报告 | 执行摘要、关键发现、建议 | Claude AI | | 证据时间线 | 带时间戳的所有分析操作的垂直链 | 自动生成 | | 交互式问答 | 询问关于已分析样本的后续问题 | Claude AI 聊天 | | 深色高级 UI | 玻璃态、动画网格、发光效果、骨架加载器 | CSS3 动画 | ### 故障排除
端口 7860 已被占用 通过环境变量更改端口: ``` PROTOTYPE_PORT=8888 python -m prototype.app # Linux / macOS set PROTOTYPE_PORT=8888 && python -m prototype.app # Windows ```
AI 阶段显示错误/红色 X 这意味着未设置有效的 `ANTHROPIC_API_KEY`。阶段 1-4 仍能工作。要启用 AI: ``` echo "ANTHROPIC_API_KEY=sk-ant-api03-..." > .env ``` 然后重启服务器。
ModuleNotFoundError: No module named 'prototype' 确保您从 **ForensicAI** 目录(`prototype/` 的父目录)运行: ``` cd ForensicAI # Not inside prototype/ python -m prototype.app # Run as module ```
pip install 在 Windows 上失败 尝试使用 `py` 代替 `python`: ``` py -3 -m venv venv venv\Scripts\activate py -3 -m pip install -r prototype/requirements.txt py -3 -m prototype.app ```
### 原型架构 ``` prototype/ ├── app.py # FastAPI server + SSE streaming + 50MB upload limit ├── analyzer.py # Pure Python analysis (no external binary deps) ├── ai_agent.py # Claude AI forensic agent (triage, C2, report, Q&A) ├── templates/ │ └── index.html # Single-page dashboard with progressive reveal ├── static/ │ ├── style.css # Dark glassmorphism theme + animations │ └── app.js # Upload handling, SSE rendering, chat ├── requirements.txt # fastapi, uvicorn, anthropic, jinja2, python-multipart, python-dotenv └── README.md ``` ## API 参考 ### 端点概述 | 方法 | 端点 | 描述 | 认证 | |:-------|:---------|:------------|:-----| | `GET` | `/api/v1/health` | 健康检查 + AI 状态 | 无 | | `GET` | `/api/v1/config` | 平台配置(非敏感) | 无 | | `POST` | `/api/v1/upload` | 上传并分析恶意软件样本 | 无 | | `POST` | `/api/v1/scan` | 触发对已上传文件的分析 | 无 | | `GET` | `/api/v1/report/{sample_id}` | 获取分析报告(JSON 或 HTML) | 无 | | `GET` | `/api/v1/c2/{sample_id}` | 获取 C2 检测结果 | 无 | | `GET` | `/api/v1/iocs/{sample_id}` | 获取 IOC(JSON 或 STIX 2.1) | 无 | | `GET` | `/api/v1/evidence/{sample_id}` | 获取监管链记录 | 无 | | `POST` | `/api/v1/ask` | 向 AI 询问样本(交互式问答) | 无 | | `GET` | `/` | Web 仪表板 (HTML) | 无 | ### 上传与分析 ``` # 上传文件以进行分析 curl -X POST http://localhost:8000/api/v1/upload \ -F "file=@suspicious.exe" \ -F "case_id=CASE-2024-001" \ -F "analyst=John Doe" ``` **响应:** ``` { "status": "completed", "sample_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "message": "Analysis complete. Threat score: 87.5/100" } ``` ### 获取报告 ``` # JSON 报告(机器可读) curl http://localhost:8000/api/v1/report/{sample_id}?format=json # HTML 报告(适用于法庭,易于打印) curl http://localhost:8000/api/v1/report/{sample_id}?format=html -o report.html # STIX 2.1 IOCs(用于与 MISP、OpenCTI 等进行威胁情报共享) curl http://localhost:8000/api/v1/iocs/{sample_id}?format=stix ``` ### 交互式 AI 问答 ``` # 向 AI forensic analyst 询问关于样本的任何问题 curl -X POST http://localhost:8000/api/v1/ask \ -H "Content-Type: application/json" \ -d '{ "sample_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "question": "What C2 framework is this sample using and how confident are you?" }' ``` **响应:** ``` { "sample_id": "a1b2c3d4...", "question": "What C2 framework is this sample using?", "answer": "Based on the analysis, this sample uses Cobalt Strike (Confidence: HIGH). Evidence: (1) YARA rule CobaltStrike_Beacon matched at offset 0x4A00, (2) Named pipe pattern \\.\pipe\msagent_ detected in strings, (3) Beacon configuration block identified with 60-second callback interval...", "ai_metadata": { "model": "claude-sonnet-4-20250514", "confidence": "high" } } ``` ## CLI 用法 ``` forensicai [--debug] {analyze,server} ... Commands: analyze Analyze a malware sample server Start the web server Analyze Options: file Path to malware sample (required) --case-id Case identifier for tracking --analyst Analyst name (default: ForensicAI) --output, -o Save JSON results to file --no-report Skip report generation Server Options: --host Server host (default: 127.0.0.1) --port Server port (default: 8000) --reload Enable auto-reload for development --debug Enable debug logging ``` ### CLI 输出示例 ``` ┌──────────────────────── ForensicAI ──────────────────────────┐ │ AI-Powered Malware Analysis & Digital Forensics Platform │ └──────────────────────────────────────────────────────────────┘ Analyzing: suspicious.exe Case ID: CASE-2024-001 Analyst: John Doe ┌── Sample Information ────────────────────────────────────────┐ │ File │ suspicious.exe │ │ Type │ pe │ │ SHA256 │ a1b2c3d4e5f67890abcdef1234567890abcdef... │ │ MD5 │ d41d8cd98f00b204e9800998ecf8427e │ │ Size │ 245,760 bytes │ └──────────────────────────────────────────────────────────────┘ ┌── Threat Assessment ─────────────────────────────────────────┐ │ THREAT SCORE: 87.5/100 (CRITICAL) │ └──────────────────────────────────────────────────────────────┘ ┌── C2 Candidates (3) ─────────────────────────────────────────┐ │ Type │ Value │ Source │ Confidence │ │ ip │ 185.xxx.xxx.xxx │ static │ HIGH │ │ domain │ xkcd3f7g2h.xyz │ dga_detect │ MEDIUM │ │ url │ http://c2.evil... │ strings │ HIGH │ └──────────────────────────────────────────────────────────────┘ ┌── AI Triage Assessment ──────────────────────────────────────┐ │ Family: Cobalt Strike Beacon │ │ Classification: Backdoor / RAT │ │ Summary: Remote access trojan with encrypted C2 │ │ communication over HTTPS, 60s beacon... │ └──────────────────────────────────────────────────────────────┘ Pipeline Status: ✅ ingestion ✅ static_analysis ✅ c2_detection ✅ threat_intel ✅ ai_analysis ✅ scoring ✅ report_generation Report: ~/.forensicai/reports/forensic_report_CASE-2024-001_20240315.html ``` ## 配置 ForensicAI 使用带环境变量覆盖的 **Pydantic Settings**。所有设置都可以通过 `.env` 文件或环境变量进行配置。 ### 核心设置 | 变量 | 默认值 | 描述 | |:---------|:--------|:------------| | `FORENSICAI_DEBUG` | `false` | 启用调试模式(详细日志记录) | | `FORENSICAI_SECRET_KEY` | (自动生成) | 用于密码学签名的密钥 | | `FORENSICAI_DATA_DIR` | `~/.forensicai` | 所有数据存储的基本目录 | ### AI 配置 | 变量 | 默认值 | 描述 | |:---------|:--------|:------------| | `ANTHROPIC_API_KEY` | **(必需)** | 您用于 Claude 的 Anthropic API 密钥 | | `FORENSICAI_AI_MODEL` | `claude-sonnet-4-20250514` | 要使用的主要 AI 模型 | | `FORENSICAI_AI_ENABLED` | `true` | 完全启用/禁用 AI 分析 | | `FORENSICAI_AI_MAX_TOKENS` | `4096` 每次 AI 调用的最大响应 Token 数 | ### 威胁情报 | 变量 | 默认值 | 描述 | |:---------|:--------|:------------| | `VT_API_KEY` | *(可选)* | VirusTotal API 密钥 | | `VT_ENABLED` | `false` | 启用 VirusTotal 文件信誉查询 | | `SHODAN_API_KEY` | *(可选)* | Shodan API 密钥 | | `SHODAN_ENABLED` | `false` | 启用 Shodan IP 丰富 | | `ABUSEIPDB_API_KEY` | *(可选)* | AbuseIPDB API 密钥 | | `ABUSEIPDB_ENABLED` | `false` | 启用 AbuseIPDB 滥用检查 | | `MISP_URL` | *(可选)* | 用于 IOC 共享的 MISP 实例 URL | | `MISP_API_KEY` | *(可选)* | MISP 身份验证密钥 | ### 数据库 | 变量 | 默认值 | 描述 | |:---------|:--------|:------------| | `DATABASE_URL` | `sqlite+aiosqlite:///~/.forensicai/forensicai.db` | 完整的数据库连接字符串 | | `DB_HOST` | `localhost` | PostgreSQL 主机(用于生产环境) | | `DB_PORT` | `5432` | PostgreSQL 端口 | | `DB_NAME` | `forensicai` | 数据库名称 | | `DB_PASSWORD` | *(PostgreSQL 必需)* | 数据库密码 | ## Docker 部署 ### 快速开始 ``` # 构建并启动所有 3 个服务 docker compose -f docker/docker-compose.yml up -d # 验证所有服务是否健康 docker compose -f docker/docker-compose.yml ps # 查看应用程序日志 docker compose -f docker/docker-compose.yml logs -f forensicai # 停止所有内容 docker compose -f docker/docker-compose.yml down # 停止并移除所有数据(全新开始) docker compose -f docker/docker-compose.yml down -v ``` ### Docker 架构 ``` graph TB subgraph "Docker Network: forensicai_net" APP["forensicai
────────────
Port 8000
FastAPI + Uvicorn
Non-root user
Health check: /api/v1/health"] PG["postgres:16-alpine
────────────
Port 5432
forensicai_db
Health check: pg_isready"] REDIS["redis:7-alpine
────────────
Port 6379
Task queue + cache
Password authenticated"] end APP -->|"asyncpg (async)"| PG APP -->|"redis-py"| REDIS VOL1[("forensicai_data
(configs, signatures)")] VOL2[("forensicai_uploads
(malware samples)")] VOL3[("postgres_data
(analysis database)")] APP --- VOL1 APP --- VOL2 PG --- VOL3 style APP fill:#00d4ff,stroke:#fff,color:#000 style PG fill:#336791,stroke:#fff,color:#fff style REDIS fill:#dc382d,stroke:#fff,color:#fff ``` | 服务 | 镜像 | 端口 | 健康检查 | 用途 | |:--------|:------|:-----|:------------|:--------| | `forensicai` | 自定义 | 8000 | HTTP GET /api/v1/health | 主应用程序 | | `postgres` | postgres:16-alpine | 5432 | `pg_isready` | 分析数据库 | | `redis` | redis:7-alpine | 6379 | `redis-cli ping` | 缓存 + Celery Broker | ## 取证标准与合规性 ForensicAI 旨在遵循国际数字取证标准生成**法庭可采信证据**: ### 监管链 —— 证据完整性如何维护 ``` graph LR A["Action Logged
────────────
Timestamp (UTC)
Action type
Action details"] --> B["Identity
────────────
Performed by
Tool used
Tool version"] --> C["Integrity
────────────
Hash before action
Hash after action
Match verification"] --> D["Environment
────────────
Hostname
OS version
Python version
Architecture"] D --> SEAL["Tamper-Evident Seal
SHA-256 hash over
the entire chain"] style SEAL fill:#28a745,stroke:#fff,color:#fff ``` 与样本的每一次交互——摄取、分析、导出、访问——都会被记录。然后,监管链本身会用 SHA-256 哈希进行密封,因此**对审计追踪的任何篡改都是可检测的**。 ### 实施的标准 | 标准 | 覆盖范围 | 含义 | |:---------|:--------:|:-------------| | **NIST SP 800-86** | 全部 | 将取证技术集成到事件响应中的指南 | | **SWGDE 最佳实践** | 部分 | 数字证据科学工作组——证据处理 | | **MITRE ATT&CK** | 全部 | 所有发现都映射到 ATT&CK 技术及战术覆盖 | | **STIX 2.1** | 全部 | IOC 导出兼容 MISP, OpenCTI, ThreatConnect, CRITs | | **RFC 5070 (IODEF)** | 部分 | 事件对象描述交换格式概念 | ### AI 免责声明(包含在每份报告中) ## 技术栈 ``` graph LR subgraph "Frontend" HTML["HTML Dashboard"] SWAGGER["Swagger / ReDoc"] end subgraph "Backend" FASTAPI["FastAPI
(async ASGI)"] PYDANTIC["Pydantic v2
(settings + validation)"] SQLA["SQLAlchemy 2.0+
(async ORM)"] end subgraph "Analysis" YARA_LIB["yara-python"] PEFILE["pefile"] ANDRO["androguard"] DPKT["dpkt / scapy"] VOL["Volatility 3"] end subgraph "AI & Intel" CLAUDE["Anthropic Claude"] VT_LIB["VirusTotal API"] SHODAN_LIB["Shodan API"] ABUSE_LIB["AbuseIPDB"] end subgraph "Infrastructure" PG_LIB["PostgreSQL"] REDIS_LIB["Redis"] DOCKER_LIB["Docker"] CELERY_LIB["Celery"] end style CLAUDE fill:#7c3aed,stroke:#fff,color:#fff style FASTAPI fill:#009688,stroke:#fff,color:#fff style SQLA fill:#336791,stroke:#fff,color:#fff ``` | 层 | 技术 | |:------|:-------------| | **Web 框架** | FastAPI 0.110+, Uvicorn, Jinja2 | | **数据库** | SQLAlchemy 2.0+ (async), PostgreSQL 16, SQLite (dev), Alembic | | **AI** | Anthropic Claude API (`claude-sonnet-4-20250514`) | | **静态分析** | yara-python, pefile, androguard, LIEF, Capstone, r2pipe | | **网络取证** | dpkt, scapy, dnspython, pyshark | | **内存取证** | Volatility 3 | | **威胁情报** | requests, aiohttp, IP2Location, Shodan SDK, vt-py | | **密码学** | cryptography, ssdeep, TLSH | | **报告生成** | ReportLab (PDF), matplotlib, networkx | | **CLI** | Rich (表格、进度旋转器、面板、语法高亮) | | **任务队列** | Celery + Redis | | **部署** | Docker, Docker Compose | | **测试** | pytest, pytest-asyncio, pytest-cov, httpx | | **代码质量** | Ruff (linting + formatting), mypy (类型检查) | ## YARA 规则 ForensicAI 附带 **7 条内置 YARA 规则**,针对常见的恶意软件行为和 C2 框架: | 规则 | MITRE ATT&CK | 检测内容 | |:-----|:-------------|:--------| | `CobaltStrike_Beacon` | T1071 | CS 魔术字节(`0x00BEEF`)、配置字符串、命名管道 | | `Metasploit_Meterpreter` | T1059 | metsrv, stdapi, reverse_tcp/https, migrate | | `Generic_C2_Communication` | T1071, T1059 | Beacon URI(`/beacon`, `/callback`)、Shell 执行 | | `Ransomware_Indicators` | T1486 | 勒索信、比特币地址、加密扩展名 | | `Keylogger_Indicators` | T1056 | GetAsyncKeyState, SetWindowsHookEx, 键盘记录 | | `Data_Exfiltration` | T1041, T1048 | FTP/SMTP/DNS 窃取、压缩/编码例程 | | `Persistence_Mechanisms` | T1547, T1053 | 注册表 Run 键、schtasks、服务、WMI 订阅 | **自定义规则:** 将任何 `.yar` 文件放入 `forensicai/analyzers/static/rules/`,它将被自动加载。 ## 测试 ``` # 运行所有测试 pytest tests/ -v # 运行并生成覆盖率报告 pytest tests/ --cov=forensicai --cov-report=html # 运行特定测试类 pytest tests/test_c2_detector.py::TestDGADetection -v # 运行并显示详细输出 pytest tests/ -v -s --tb=long ``` ### 测试覆盖范围 | 测试类 | 测试数 | 覆盖内容 | |:-----------|:-----:|:---------------| | `TestIOCExtraction` | 6 | IPv4, URL, 域名, 比特币, .onion, 良性过滤 | | `TestDGADetection` | 3 | 香农熵、字符分布、DGA 评分 | | `TestBeaconDetection` | 3 | 规则间隔、抖动检测、CV 阈值 | | `TestFrameworkFingerprinting` | 3 | Cobalt Strike, Metasploit, 通用 C2 检测 | | `TestHelpers` | 2 | 私有 IP 范围检测、熵计算 | ## 未来路线图 我们对 ForensicAI 有着宏伟的愿景。以下是即将发布的版本计划: ### v1.1 —— 增强分析(下一版本) ``` gantt title ForensicAI Development Roadmap dateFormat YYYY-MM axisFormat %b %Y section v1.1 Enhanced Analysis PDF report generation (ReportLab) :2026-04, 2026-05 Full Cuckoo/CAPE sandbox integration :2026-04, 2026-06 Alembic database migrations :2026-04, 2026-04 Complete MITRE ATT&CK technique DB :2026-04, 2026-05 section v1.2 Intelligence MISP bidirectional sync :2026-06, 2026-07 AlienVault OTX integration :2026-06, 2026-07 YARA rule auto-generation from AI :2026-07, 2026-08 Real-time threat feed ingestion :2026-07, 2026-09 section v2.0 Enterprise Multi-user auth (OAuth2/RBAC) :2026-09, 2026-11 React/Next.js dashboard :2026-09, 2026-12 Kubernetes deployment (Helm charts) :2026-10, 2026-12 Multi-model AI (GPT-4, Gemini, local) :2026-10, 2026-11 ``` ### 详细功能计划 #### 分析与检测 - [ ] **PDF 报告生成** —— 使用 ReportLab 生成带有数字签名、页眉、页码的法庭可用 PDF 报告 - [ ] **完整沙箱集成** —— 完整集成 Cuckoo Sandbox 和 CAPE 以进行动态行为分析 - [ ] **iOS IPA 深度分析** —— Plist 解析、Entitlement 分析、Objective-C/Swift 方法提取 - [ ] **Office 文档分析** —— VBA 宏提取、OLE 流分析、DDE 检测 - [ ] **Android 动态分析** —— 基于 Frida 的运行时检测、API Hook - [ ] **固件分析** —— IoT/嵌入式固件提取和分析(binwalk 集成) - [ ] **邮件取证** —— EML/MSG 解析、头部分析、钓鱼检测 - [ ] **磁盘镜像分析** —— Raw/E01/AFF4 磁盘镜像挂载和文件系统分析 #### 情报与检测 - [ ] **MISP 双向同步** —— 推送 IOC 到 MISP + 从社区源拉取威胁数据 - [ ] **AlienVault OTX 集成** —— Pulse 订阅、IOC 关联 - [ ] **AI 生成的 YARA 规则** —— Claude 根据样本分析生成自定义 YARA 规则 - [ ] **实时威胁源** —— 获取并关联实时威胁情报流 - [ ] **机器学习 C2 检测** —— 基于 C2 流量模式训练自定义 ML 模型 - [ ] **DNS 隧道检测** —— 通过 DNS 查询编码检测数据窃取 - [ ] **JA3/JA3S TLS 指纹识别** —— 通过 TLS 握手签名识别 C2 工具 - [ ] **加密流量分析** —— 在不解密的情况下检测加密通信中的恶意模式 #### 平台与可扩展性 - [ ] **多用户认证** —— OAuth2 + RBAC(管理员、分析师、查看者角色) - [ ] **React/Next.js 仪表板** —— 现代交互式 Web UI 替代当前的最小 HTML 仪表板 - [ ] **Kubernetes 部署** —— 用于云原生部署和水平扩展的 Helm Charts - [ ] **多模型 AI 支持** —— GPT-4o, Gemini Pro, 本地 LLM(Ollama/LM Studio)与 Claude 并存 - [ ] **Celery Worker 池** —— 跨多个 Worker 节点的分布式分析 - [ ] **S3/MinIO 对象存储** —— 云原生样本存储替代文件系统 - [ ] **Webhook 通知** —— 高严重性检测时的 Slack, Teams, 邮件告警 - [ ] **Alembic 迁移** —— 数据库架构版本控制以实现安全升级 #### 报告与导出 - [ ] **带数字签名的 PDF 报告** —— X.509 证书签名以实现不可否认性 - [ ] **时间线可视化** —— 使用 D3.js 进行交互式攻击时间线重建 - [ ] **MITRE ATT&CK Navigator 导出** —— 用于演示的可视化矩阵叠加 - [ ] **Markdown 报告格式** —— 适合 GitHub 内部共享的报告 - [ ] **自动化 IOC 阻断列表** —— 从 IOC 生成防火墙规则、Snort/Suricata 签名 - [ ] **证据包导出** —— ZIP 打包样本、报告、监管链和 IOC #### 研究与高级功能 - [ ] **自动化恶意软件脱壳** —— UPX, Themida, VMProtect 脱壳器集成 - [ ] **控制流图生成** —— 从反汇编中生成可视化函数调用图 - [ ] **相似性分析** —— 使用 SSDEEP/TLSH 将样本与已知恶意软件家族进行比较 - [ ] **威胁狩猎查询** —— 预构建的 Elastic/Splunk SIEM 集成查询 - [ ] **插件系统** —— 通过 Python 入口点的第三方分析器插件 - [ ] **API 速率限制与配额** —— 生产级 API 管理 ## 已知限制 对 ForensicAI **目前无法**做到的事情保持透明: | 限制 | 详情 | 变通方法 | |:-----------|:--------|:-----------| | **无 PDF 报告输出** | 目前仅生成 HTML 和 JSON | 在浏览器中打开 HTML → 打印为 PDF | | **动态分析需要外部沙箱** | Cuckoo/CAPE 集成为存根 | 使用独立 Cuckoo 并导入结果 | | **内存分析需要 Volatility 3** | 由于大小/复杂性未捆绑 | 单独安装:`pip install volatility3` | | **API 无认证** | 所有端点开放 | 部署在带有认证的反向代理后(nginx + OAuth) | | **SQLite 仅用于开发** | 不适合并发多用户访问 | 生产环境使用 PostgreSQL(包含 Docker Compose) | | **AI 分析需要互联网** | Claude API 调用需要连接 | 离线模式会优雅地跳过 AI 阶段 | | **VT 免费层速率限制** | 免费 API 密钥 4 请求/分钟 | 使用付费 VT API 或启用请求队列 | | **无 Windows PE 模拟** | 无法原生执行样本 | 集成 Cuckoo/CAPE 沙箱 | | **单线程分析** | CLI 模式下一次一个样本 | 使用 API 服务器 + Celery Workers 实现并行 | ## 贡献 ForensicAI 是一个开源项目,我们热烈欢迎社区的贡献!无论您是安全研究人员、取证分析师还是开发者——总有您可以帮助的地方。 ### 如何贡献 1. **Fork** 本仓库 2. **创建** 功能分支:`git checkout -b feature/amazing-feature` 3. **进行** 更改并添加测试 4. **Lint** 您的代码:`ruff check forensicai/` 5. **测试** 您的更改:`pytest tests/ -v` 6. **提交** 并附上清晰的信息:`git commit -m "feat: Add amazing feature"` 7. **推送** 到您的 Fork`git push origin feature/amazing-feature` 8. **打开** Pull Request,描述您更改的内容及原因 ### 我们需要帮助的领域 | 领域 | 难度 | 描述 | |:-----|:----------|:------------| | **YARA 规则** | 初级 | 为新兴恶意软件家族编写新的检测规则 | | **测试覆盖率** | 初级 | 为分析器、威胁情报、报告生成添加单元测试 | | **文档** | 初级 | 改进 API 文档、添加教程、编写使用指南 | | **MISP 集成** | 中级 | 完成与 MISP 的双向 IOC 同步 | | **PDF 报告** | 中级 | 使用 ReportLab 实现法庭可用的 PDF 生成 | | **React 仪表板** | 中级 | 构建现代交互式 Web 仪表板 | | **沙箱集成** | 高级 | 完成 Cuckoo/CAPE 沙箱集成 | | **基于 ML 的检测** | 高级 | 训练 C2 流量模式分类模型 | | **内存取证** | 高级 | 扩展 Volatility 3 插件支持 | | **固件分析** | 高级 | 添加 IoT/嵌入式固件分析能力 | ### 代码风格 - Python 3.10+ 带类型提示 - 使用 Ruff 进行 linting 和格式化(`line-length = 100`) - 所有 I/O 操作使用 Async/await - 所有公共类和方法编写 Docstrings - 所有新功能编写测试 ## 作者与致谢


创建与维护者

Aswini Behera

GitHub: @Ab-aswini

ForensicAI 的构建愿景是让专业级数字取证技术 普及到各地的调查员、研究人员和安全团队。 如果这个项目对您的工作有帮助,请考虑给它一个 Star 并回馈社区。

### 致谢 - **[MobSF (Mobile Security Framework)](https://github.com/MobSF/Mobile-Security-Framework-MobSF)** —— 分析流水线、恶意软件域名检查模式和报告生成概念的架构灵感 - **[Anthropic](https://www.anthropic.com/)** —— Claude AI 驱动智能分析、分类、归因和报告生成 - **[MITRE ATT&CK](https://attack.mitre.org/)** —— 技术和战术映射框架 - **[NIST](https://csrc.nist.gov/publications/detail/sp/800-86/final)** —— SP 800-86 取证证据处理指南 - **[Maltrail](https://github.com/stamparm/maltrail)** —— 恶意软件域名数据库 - **开源社区** —— yara-python, pefile, androguard, scapy, dpkt, Volatility 以及本项目建立其上的所有令人难以置信的安全工具 ## 支持本项目 如果 ForensicAI 对您的工作或研究有用: - **Star 本仓库** 以表示支持 - **分享** 给同事和安全社区 - 通过 [GitHub Issues](https://github.com/Ab-aswini/Malware-analysis/issues) **报告错误**并建议功能 - **贡献代码** —— 每个 PR,无论多小,都有意义 - **撰写相关文章** —— 博客文章、教程和会议演讲有助于项目发展 ## 许可证 本项目基于 **GNU Affero General Public License v3.0 (AGPL-3.0)** 授权。 这意味着: - 您可以自由使用、修改和分发本软件 - 如果您修改并将其作为服务部署,必须发布您的源代码 - 所有衍生作品必须使用相同的 AGPL-3.0 许可证 有关完整详细信息,请参阅 [LICENSE](LICENSE) 文件。

Version AI Court NIST

ForensicAI v1.0.0 — 为数字取证调查员和事件响应人员打造。
由 Claude AI 驱动 | 设计时即考虑法庭可采信性 | 永远开源

创建者 Aswini Behera
欢迎贡献 —— 让数字取证技术普及大众。

标签:AI取证, AMSI绕过, AV绕过, Claude AI, DLL 劫持, FastAPI, Go语言工具, PE 加载器, Python, 大语言模型, 威胁检测, 安全智能, 安全运营, 扫描框架, 搜索引擎查询, 数字取证, 无后门, 测试用例, 网络安全, 自动化分析, 自动化脚本, 请求拦截, 跨站脚本, 逆向工具, 隐私保护