MadeneMeriem/malware-analysis-pipline-automation

GitHub: MadeneMeriem/malware-analysis-pipline-automation

基于 FastAPI 的恶意软件静态分析自动化流水线,整合 PE 解析、YARA 扫描、FLOSS 字符串提取、capa 能力检测和 VirusTotal 查询,自动产出分析判定与报告。

Stars: 0 | Forks: 0

# 恶意软件分析自动化流水线 这是一个后端服务,它接收一个 PE 样本(.exe/.dll),并将其通过完整的静态分析流水线进行处理:PE 解析、YARA 扫描、字符串提取(FLOSS)、能力检测(capa)以及 VirusTotal 哈希查询。最后会输出一份 JSON 摘要和 PDF 报告。 开发这个作品集项目是为了在 FastAPI 后端的基础上,亲自动手使用恶意软件分析师日常使用的工具。 ## 它的实际功能 你只需上传一个样本,它就会被自动分析,然后你会得到一个判定结果(CLEAN / SUSPICIOUS / MALICIOUS)以及背后的证据: - **PE 结构** — 节区、熵、导入表、哈希(pefile) - **YARA 匹配** — 用于检测可疑 API 组合、加壳器等的自定义规则 - **字符串提取** — FLOSS 会提取明文字符串和混淆/解码后的字符串(XOR、堆栈字符串等) - **能力检测** — capa 将二进制文件的行为映射到 MITRE ATT&CK 技术(进程注入、持久化、剪贴板访问等,任何它正在执行的操作) - **信誉检查** — 通过 VirusTotal 将样本哈希与 70 多家 AV 引擎进行交叉比对 - **报告生成** — 简洁的 JSON 摘要 + 包含判定横幅、检测仪表盘和 ATT&CK 表格的专业 PDF 报告 你可以通过 API 驱动所有这些功能,或者完全跳过服务器,直接使用 CLI。 ## 技术栈 FastAPI · pefile · yara-python · flare-floss · flare-capa · VirusTotal API · ReportLab · Typer · Docker ## 开始之前 有些内容仅靠 `pip install` 是无法处理的: **capa 需要单独下载其规则。** pip 包并不包含这些规则。 ``` git clone https://github.com/mandiant/capa-rules.git ``` 将其放在项目根目录下并命名为 `capa-rules/`。请将规则版本与你的 capa 版本保持一致,否则你会遇到“invalid rule set”错误——建议先查看 `capa --version`。 **capa 还需要 FLOSS 的签名文件**来支持其启发式扫描(它们位于 `flare-floss` 包内,因此无需单独下载——只需让 capa 指向它们即可): ``` .venv/lib/python3.X/site-packages/floss/sigs ``` 分析器代码已经知道去这里查找,只要不要删除或移动该文件夹即可。 **你需要一个 VirusTotal API 密钥。** 免费套餐就足够了(4 次请求/分钟,500 次/天对此项目来说绰绰有余)。前往 virustotal.com,在你的个人资料下 → API 密钥获取一个。 ## 设置 ``` git clone cd malware-analysis-automation python -m venv .venv source .venv/bin/activate # .venv\Scripts\activate on Windows pip install -r requirements.txt # 抓取 capa rules(见上文) git clone https://github.com/mandiant/capa-rules.git cp .env.example .env # 编辑 .env 并填入你的 VT_API_KEY ``` `.env` 文件的内容应如下所示: ``` APP_NAME=Malware Analysis Pipeline DEBUG=True UPLOAD_DIR=samples RESULTS_DIR=results VT_API_KEY=your_key_here ``` ## 运行方式 **作为 API 运行:** ``` uvicorn app.main:app --reload ``` 然后访问 `http://127.0.0.1:8000/docs` 打开 Swagger UI。 基本流程: ``` POST /upload → upload a sample, get an analysis_id POST /analyze/{id} → runs PE + YARA + FLOSS + capa + VT GET /status/{id} → check where it's at GET /report/{id}/json → clean summary GET /report/{id}/pdf → download the PDF report ``` **作为 CLI 运行**(无需服务器): ``` python cli.py analyze samples/some_sample.exe python cli.py analyze samples/some_sample.exe --no-vt # skip VT if you're offline / no key python cli.py analyze samples/some_sample.exe --no-pdf # just want the terminal output python cli.py status # check a past run ``` **使用 Docker**(可以跳过上述除 capa 规则之外的所有手动设置——在构建之前,这些规则仍然需要存在于磁盘中): ``` docker-compose up --build ``` 在 `localhost:8000` 上运行 API。样本和结果会通过挂载的数据卷持久化保存到你的主机上,因此当容器重启时数据不会丢失。 ## 在构建此项目时学到的一些经验 - **NSIS 安装程序会干扰 capa。** 如果样本被打包为 NSIS 安装程序(在 dropper 中很常见),capa 会警告你它无法很好地分析安装程序,其结果可能不完整——在过于信任能力列表之前,值得检查一下输出中的“packaged as a NSIS installer”标志。 - **.NET 二进制文件会导致 FLOSS 崩溃。** FLOSS 模拟的是原生的 x86/x64 代码,因此在处理 .NET 样本时会报错或返回垃圾数据。这不是 bug,而是该工具的功能范围所致。 - **工具的 CLI 参数在不同版本之间的变化**比你预期的要频繁——capa 和 FLOSS 在我最初使用的版本和我最终锁定的版本之间都发生过参数变动。如果以前能正常工作的功能突然失效,在认为是你的代码出问题之前,请先检查 `--version` 和工具自带的 `--help`。 ## 项目结构 ``` app/ ├── api/ # FastAPI route handlers ├── analyzers/ # PE, YARA, FLOSS, capa, VT wrappers ├── core/ # config, shared utils ├── models/ # Pydantic schemas ├── reports/ # summary + PDF generation └── services/ # storage, metadata persistence samples/ # uploaded samples (gitignored — don't commit malware) results/ # per-analysis output (gitignored) yara_rules/ # your YARA rules capa-rules/ # cloned separately, gitignored cli.py # standalone CLI entry point ``` ## 免责声明 本项目会处理真实的恶意软件样本。请勿运行被分析的样本,请勿将你没有权限共享的任何内容上传到 VirusTotal,并应将 `samples/` 和 `results/` 目录视为敏感信息——它们被 gitignore 是有原因的。
标签:AMSI绕过, AV绕过, DAST, FastAPI, 云安全监控, 威胁检测, 恶意软件分析, 请求拦截, 逆向工具, 静态分析