IshaGupta2-lab/malware-analysis-assistant

GitHub: IshaGupta2-lab/malware-analysis-assistant

一款结合静态 PE 分析、VirusTotal 查询、YARA 扫描与 Claude AI 解读的恶意软件静态分析助手,帮助用户快速理解可疑可执行文件的风险行为。

Stars: 0 | Forks: 0

# AI 驱动的恶意软件分析助手 **🔗 在线演示:** [malware-analysis-assistant-1.onrender.com](https://malware-analysis-assistant-1.onrender.com) 这是一个 CLI 工具,用于静态分析可疑的 Windows 可执行文件(PE 文件), 在 VirusTotal 上检查其哈希值,使用 YARA 规则对其进行扫描,并让 Claude 将原始分析结果转化为通俗易懂的行为摘要和风险评估。 **重要提示:** 此工具绝不会执行它所分析的文件。它仅读取 字节、标头和字符串(静态分析),并在 VirusTotal 上检查哈希值。 务必仅在没有网络/共享文件夹的隔离 VM 内分析真实的恶意软件样本, 切勿在你的主机上进行分析。 ## 1. 前置条件 - 已安装 **VS Code** - 已安装 **Python 3.10+** (使用 `python3 --version` 检查) - 一个 **VirusTotal**(免费)账号 → https://www.virustotal.com/gui/join-us → 注册后,从你的个人资料页面复制 API key - 一个 **Anthropic API key** → https://console.anthropic.com/ → Settings → API Keys ## 2. 创建项目文件夹结构 打开终端(在 VS Code 中:`` Terminal > New Terminal ``)并运行: ``` mkdir malware-analysis-assistant cd malware-analysis-assistant mkdir analyzer rules samples code . ``` `code .` 会在 VS Code 中打开这个新的空文件夹。 在 VS Code 中,创建以下文件(File > New File,或者在 Explorer 面板中 右键点击文件夹 > New File): ``` malware-analysis-assistant/ ├── main.py ├── requirements.txt ├── .env.example ├── .gitignore ├── analyzer/ │ ├── __init__.py │ ├── static_analysis.py │ ├── vt_check.py │ ├── yara_scan.py │ └── ai_explain.py ├── rules/ │ └── suspicious.yar └── samples/ (put files you want to analyze here) ``` 将下面的代码粘贴到对应的文件中。 ## 3. 设置虚拟环境 在 VS Code 终端中,从项目根目录运行: ``` python3 -m venv venv ``` 激活它: ``` # macOS / Linux source venv/bin/activate # Windows (PowerShell) venv\Scripts\Activate.ps1 ``` 你应该会看到终端提示符开头出现了 `(venv)`。在 VS Code 中,还需点击 Python 解释器选择器(右下角)并选择 `venv` 解释器,以便 IntelliSense 和 调试使用正确的环境。 ## 4. 安装依赖项 创建包含以下内容的 `requirements.txt`: ``` pefile==2023.2.7 yara-python==4.5.1 requests==2.32.3 python-dotenv==1.0.1 anthropic==0.39.0 ``` 然后运行: ``` pip install -r requirements.txt ``` ## 5. 添加你的 API key 创建包含以下内容的 `.env.example`: ``` VT_API_KEY=your_virustotal_api_key_here ANTHROPIC_API_KEY=your_anthropic_api_key_here ``` 然后将其复制为真实的 `.env` 文件并填入你的实际密钥: ``` cp .env.example .env ``` 在 VS Code 中编辑 `.env` 并粘贴你真实的 VirusTotal 和 Anthropic 密钥。 `.gitignore` 已经排除了 `.env`,因此你不会意外提交机密信息。 ## 6. 代码说明 ### `analyzer/__init__.py` 将此文件留空 — 它仅用于将 `analyzer` 标记为 Python 包。 ### `analyzer/static_analysis.py` 计算 MD5/SHA1/SHA256,解析 PE 节区/导入表/熵值,标记可疑的 API 导入(进程注入、键盘记录、下载并执行模式),并提取可打印字符串。全为只读操作,不执行任何内容。 ### `analyzer/vt_check.py` 在 VirusTotal 的公开 API 上查询文件的 SHA256,并返回检测结果统计(有多少 AV 引擎标记了它、威胁标签、首次发现日期)。 ### `analyzer/yara_scan.py` 编译 `rules/` 中的每个 `.yar`/`.yara` 文件并将它们与目标文件进行匹配,返回触发了哪些规则。 ### `rules/suspicious.yar` 四个入门启发式规则:进程注入 API、键盘记录器 API、下载并执行 API,以及勒索软件说明/加密 API 字符串。这是一个学习的起点 — 真实世界的规则集(例如来自 Florian Roth / Neo23x0 的 "signature-base" 仓库)要大得多。 ### `analyzer/ai_explain.py` 将*仅结构化的 JSON 结果*(绝不包含原始文件)发送给 Claude,并附带一个系统提示,指示它生成行为摘要、风险评分、IOC 列表以及建议的后续步骤。 ### `main.py` 将整个 pipeline 串联起来:静态分析 → VirusTotal → YARA → Claude 解释,打印结果,并可选择保存完整的 JSON 报告。 (每个文件的完整内容作为可下载附件包含在此消息下方 — 直接复制粘贴即可,无需重新输入。) ## 7. 运行它 将你要分析的文件放入 `samples/`。为了安全测试,请使用 无害的可执行文件(例如在 Windows 上从 `C:\Windows\System32` 复制的 `notepad.exe`,或任何小型的合法 .exe) — **除非你在隔离且禁用网络的 VM 中操作,否则请勿下载真实的恶意软件。** ``` python main.py samples/notepad.exe ``` 若要同时保存完整的 JSON 报告: ``` python main.py samples/notepad.exe --json report.json ``` 你会看到类似这样的终端输出: ``` [*] Running static analysis on samples/notepad.exe ... [*] Checking hash against VirusTotal ... [*] Scanning with YARA rules ... [*] Asking Claude to explain the findings ... ============================================================ AI EXPLANATION ============================================================ 1. Behavior summary: ... 2. Risk score: Low - ... 3. Indicators of Compromise: ... 4. Recommended actions: ... ``` ## 8. Web UI(可选,替代 CLI) 如果你更喜欢在浏览器中拖放文件,而不是在命令行中运行 `main.py`,请使用 `app.py` — 这是一个具有相同 pipeline 的小型 Flask 应用,此外还包含一个结果仪表板(风险指标、YARA 标签、VirusTotal 统计数据、PE 结构、AI 摘要)。 再添加两个文件: ``` malware-analysis-assistant/ ├── app.py ├── templates/ │ └── index.html ├── static/ │ ├── style.css │ └── app.js └── uploads/ (temp storage - files are deleted right after analysis) ``` 安装 Flask(已包含在 `requirements.txt` 中): ``` pip install -r requirements.txt ``` 运行服务器: ``` python app.py ``` 然后在浏览器中打开 **http://127.0.0.1:5000**,拖入一个文件, 观察四个分析阶段亮起,随后结果面板将出现。 上传的文件仅在请求期间保存到 `uploads/`,并在之后立即删除 — 磁盘上不会保留任何内容。 ## 9. 扩展项目的建议后续步骤 - 添加 `--vt-upload` 标志,将未知哈希提交给 VirusTotal(仅在获得用户明确同意的情况下 — 上传会在 VT 上公开共享该文件) - 将其包装在一个简单的 Flask/FastAPI Web UI 中,以便你可以拖放文件 - 集成 **CAPA**(`pip install flare-capa`),自动提取映射到 MITRE ATT&CK 的能力,以取代手动维护的 API 监控列表 - 在 PE 分析之外,添加 PDF/Office 文档分析(`oletools`) - 将每次分析记录到本地 SQLite DB,以建立个人案例历史记录 ## 9. 安全注意事项 - 切勿在你的主机上执行不受信任的文件。 - 仅在隔离的 VM(例如 FLARE-VM,一个你可以还原的快照)内分析真实的恶意软件,并禁用网络和共享文件夹。 - 此工具及其 YARA 规则旨在学习启发式检测,而非生产级 AV 引擎 — 请勿将其作为你唯一的防线。
标签:Ask搜索, Claude API, DAST, Python, VirusTotal, YARA, 云安全监控, 云资产可视化, 恶意软件分析, 无后门, 逆向工具, 静态分析