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, 云安全监控, 云资产可视化, 恶意软件分析, 无后门, 逆向工具, 静态分析