aring87/Static-Software-Malware-Analysis

GitHub: aring87/Static-Software-Malware-Analysis

一款面向 Windows 可执行文件的自动化静态分析流水线,整合哈希、字符串、capa 能力识别、IOC 提取和 PDF 报告生成,帮助分析师快速完成恶意软件初筛和归档。

Stars: 1 | Forks: 0

# 静态软件 / 恶意软件分析 — 静态分类流水线 一个用于 Windows 可执行文件和安装程序(EXE/DLL/MSI/CAB/ZIP/7z/Inno Setup)的静态分类流水线,可生成 SOC 风格的报告和结构化案例工件,用于调查和培训。 ## Python 版本支持(重要) 本项目目前在以下版本测试最可靠: - **Python 3.11 – 3.12**(推荐) ⚠️ **目前不推荐使用 Python 3.13**。一些上游安全工具依赖项(以及 Windows 构建工具,如 PyInstaller 相关包)可能尚未发布兼容 Python 3.13 的 wheel,这可能导致 `pip install -r requirements.txt` 失败。 如果在 3.13 上遇到安装错误,请安装 Python **3.12** 并重新创建 `.venv`。 ## 功能 给定一个 Windows 可执行文件/安装程序,流水线会创建一个案例文件夹并生成: - 哈希:**MD5 / SHA1 / SHA256** - 文件识别(`file.txt`) - 字符串提取(`strings.txt`),可选 **lite 模式** - **capa** 能力分析(`capa.json`,`capa.txt`) - PE 元数据(`pe_metadata.json`)+ LIEF 元数据(`lief_metadata.json`) - IOC 提取(`iocs.json`,`iocs.csv`) - 报告:`report.md`,`report.html`,`report.pdf`(**WeasyPrint**) ### 安装包 payload 提取 + 子文件分类 - 将嵌入的 payload 提取到 `cases//extracted/` - 支持递归提取(ZIP/7z/MSI/CAB;支持 CAB 回退) - 通过 `innoextract` 支持 **Inno Setup** 安装程序 - 可选子文件分类到 `cases//subfiles/_/` ## 仓库布局 - `static_triage_engine/` — 引擎、步骤、评分、报告 - `scripts/` — CLI + GUI 入口点和辅助工具 - `tools/` — 工具资产(例如:capa sigs,capa rules 文件夹) - `docs/` — 文档资产(截图) - `cases/` — **生成的输出**(已忽略) - `samples/` — **不要提交样本**(已忽略) - `logs/` — 运行时日志(已忽略) - `.venv/` — **Python 虚拟环境**(已忽略) ## 推荐环境 ### 最佳体验:Ubuntu(原生)或 WSL Ubuntu 本项目在 **Ubuntu**(原生)或 Windows 上的 **WSL Ubuntu** 中最为可靠。 ### Windows 原生 Windows 原生环境可以使用,但属于“尽力而为”,因为: - PowerShell 脚本执行策略可能会阻止 venv 激活 - 某些依赖项/工具在 Linux/WSL 上更流畅 - WeasyPrint PDF 生成在 Windows 上可能比较挑剔 如果你是新手,请使用 **WSL Ubuntu**。 ## Linux / WSL 设置(推荐) ### 系统依赖(Ubuntu/WSL/Kali) ``` sudo apt update sudo apt install -y git python3 python3-venv python3-pip \ p7zip-full cabextract osslsigncode file binutils \ libpango-1.0-0 libpangoft2-1.0-0 libharfbuzz0b libgdk-pixbuf-2.0-0 \ libcairo2 libffi-dev ``` ### Python 虚拟环境(`.venv`)(推荐且预期) ``` cd /path/to/Static-Software-Malware-Analysis python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## capa 设置(CLI + 规则) ### 1) 安装 capa CLI(官方 FLARE 包) ⚠️ **重要:** `pip install capa` 可能会安装不相关的包。请安装官方版本: ``` pip install flare-capa capa --version ``` ### 2) 安装 capa 规则(必需) `capa` 与它使用的 **规则** 是分离的。本仓库**不**捆绑默认规则;你必须将它们安装到: - `tools/capa-rules/rules/` #### 选项 A(Linux/WSL):引导脚本(推荐) 如果你的仓库包含 `scripts/bootstrap_capa_rules.sh`: ``` bash scripts/bootstrap_capa_rules.sh # 可选:固定不同的 tag CAPA_RULES_TAG=v9.3.1 bash scripts/bootstrap_capa_rules.sh ``` #### 选项 B(Windows 或手动):下载规则发布版 + 解压 1. 从 GitHub 下载官方 capa 规则发布版 ZIP: ``` https://github.com/fireeye/capa-rules/releases ``` 2. 解压并复制 `rules` 文件夹,最终结构如下: ``` \tools\capa-rules\rules\ ``` **快速验证(PowerShell):** ``` Test-Path .\tools\capa-rules\rules dir .\tools\capa-rules\rules | select -First 5 ``` ### 3) capa sigs(在此跟踪) 签名存储在: - `tools/capa/sigs/*.sig` ## Inno Setup 支持(推荐) Ubuntu 仓库版本可能会滞后。为了与现代 Inno 安装程序获得最佳兼容性,请从源代码构建 `innoextract`: ``` sudo apt update sudo apt install -y git cmake g++ make libboost-all-dev libssl-dev zlib1g-dev liblzma-dev cd /tmp rm -rf innoextract git clone https://github.com/dscharrer/innoextract.git cd innoextract cmake -S . -B build -DCMAKE_BUILD_TYPE=Release cmake --build build -j"$(nproc)" sudo cmake --install build which innoextract innoextract --version 2>/dev/null || innoextract -v 2>/dev/null ``` ## Windows 设置(PowerShell)— 无需激活的 venv(推荐) PowerShell 经常以“运行脚本被禁用”为由阻止 `Activate.ps1`。为了避免这种情况,**不要激活** venv;直接调用其 Python 可执行文件。 ### 1) 安装 Python 3.12(推荐) 如果你不小心下载了 Python ZIP(嵌入式或源码),它可能不包含安装程序。最简单的 Windows 安装途径是 **winget**: ``` winget install -e --id Python.Python.3.12 ``` 然后打开一个新的 PowerShell 窗口并验证: ``` py -3.12 -V ``` ### 2) 使用 Python 3.12 创建 `.venv` 从你的仓库根目录: ``` py -3.12 -m venv .venv ``` ### 3) 将依赖项安装到 venv(无需激活) ``` .\.venv\Scripts\python.exe -m pip install --upgrade pip .\.venv\Scripts\python.exe -m pip install -r requirements.txt ``` ### 4) 将 capa CLI 安装到 venv ``` .\.venv\Scripts\python.exe -m pip install flare-capa ``` 验证 venv Python: ``` .\.venv\Scripts\python.exe -c "import sys; print(sys.executable)" ``` 验证 capa 位置/版本(在 venv 中): ``` .\.venv\Scripts\capa.exe --version .\.venv\Scripts\python.exe -m pip show flare-capa ``` ### 可选:启用激活(如果你愿意) 如果你更喜欢激活,可以为你的用户允许它: ``` Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned .\.venv\Scripts\Activate.ps1 ``` ## Windows(发布版 EXE)— 请先阅读此内容 如果你下载了 GitHub Release ZIP 并运行了 **Windows EXE**,应用程序可能会启动,但**某些分析步骤需要外部工具**(capa 规则、提取实用程序、PDF 依赖项)。 在 Windows 上获得“完整”结果的最低要求: - `tools\capa-rules\rules\` 已填充(见上文“安装 capa 规则”) - 已安装 capa(推荐:在 `.venv` 内) - 已安装 7-Zip(推荐)用于递归提取 ### 7-Zip(推荐) 安装 7-Zip 并将其添加到 PATH(或确保 `7z.exe` 可被发现)。 验证: ``` 7z ``` ### PDF 输出说明 PDF 生成使用 WeasyPrint,由于系统库要求,可能会在 Windows 上失败。 - 如果 PDF 失败,你仍然应该获得:`report.md` 和 `report.html`。 - 要获得可靠的 PDF,请使用 **WSL Ubuntu**。 ## 运行 ### CLI(Linux/WSL) ``` source .venv/bin/activate python3 scripts/static_triage.py /path/to/sample.exe --case MyCase --no-progress ``` 常用预设: ``` # 快速分流 python3 scripts/static_triage.py /path/to/sample.exe --case MyCase --no-progress --strings-lite --subfile-limit 5 # 深度分流 python3 scripts/static_triage.py /path/to/sample.exe --case MyCase --no-progress --subfile-limit 25 # 仅 Hash(最小) python3 scripts/static_triage.py /path/to/sample.exe --case MyCase --no-progress --no-extract --no-subfiles --no-strings ``` ### CLI(Windows PowerShell,无激活) ``` .\.venv\Scripts\python.exe scripts\static_triage.py D:\path\to\sample.exe --case MyCase --no-progress ``` ### GUI(Linux/WSL) ``` source .venv/bin/activate python3 -m scripts.static_triage_gui ``` ## 输出 每次运行创建: ``` cases// summary.json runlog.json analysis.log signing.json file.txt strings.txt capa.json capa.txt pe_metadata.json lief_metadata.json iocs.json iocs.csv report.md report.html report.pdf extracted/ (if extraction enabled) extracted_manifest.json subfiles/_/ (if subfile triage enabled) ``` ## 截图 ![Main view](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/9f5967d727030931.png) ![Case folder](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/82e9cfb371030932.png) ![HTML view](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/62aded6a2b030934.png) ![HTML view 2](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/25c29fbb8d030935.png) ![PDF view 2](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e7f9c75ec0030936.png) ## Windows 说明(路径) 如果你将样本存储在 Windows 驱动器上并在 WSL 中运行: - Windows 路径:`D:\Projects\...` - WSL 路径:`/mnt/d/Projects/...` ## 贡献 欢迎提交 PR。请避免提交: - 恶意软件样本 - 生成的 `cases/` 输出 - 大型二进制文件 ## 许可证 见 `LICENSE`。
标签:AMSI绕过, CAPA, DAST, DNS 反向解析, DNS 解析, Inno Setup, IOC提取, IP 地址批量处理, LIEF, MSI分析, PDF报告生成, PE元数据, Python, SOC报告, WeasyPrint, Windows可执行文件, 云安全监控, 云资产清单, 哈希计算, 域名收集, 威胁检测, 字符串提取, 安装包解包, 库, 应急响应, 恶意软件分析, 数字取证, 无后门, 网络信息收集, 自动化分类, 自动化脚本, 误配置预防, 逆向工具, 逆向工程, 静态分析