chiragjaiswar0814/Malware-Analysis-Studio
GitHub: chiragjaiswar0814/Malware-Analysis-Studio
一个基于浏览器的纯前端恶意软件静态分析工具,在本地完成 PE 解析、哈希计算、字符串提取、熵值分析和可疑 API 与 MITRE ATT&CK 映射,无需上传文件即可快速获取可疑文件的基本信息。
Stars: 0 | Forks: 0
# 恶意软件分析工作室
这是我为了满足个人需求而开发的一款基于浏览器的恶意软件分析工具——我以前总是在 VirusTotal、PE-bear 和十六进制编辑器之间来回切换,只为获取某个可疑文件的基本信息。这个工具可以在一个地方完成大部分工作,并且不会将你的文件发送到任何地方。
所有操作都在你的浏览器中运行。没有后端,没有上传,无需账户。
## 功能
拖入一个文件,你将获得:
- **Hashes** — 使用 Web Crypto API 在本地计算 MD5、SHA-1 和 SHA-256
- **PE 分析** — 直接从二进制文件中解析 DOS/COFF/Optional headers、节表和导入目录
- **字符串提取** — 从原始字节中提取 ASCII 和 UTF-16LE 字符串,并使用正则表达式筛选 URL、IP、注册表路径、文件路径和电子邮件地址
- **Entropy** — 计算每个节的 Shannon entropy,让你一眼就能发现被加壳或加密的数据块
- **可疑 API 检测** — 将导入表与大约 30 个已知的恶意 Win32 API(CreateRemoteThread、VirtualAllocEx、WinExec 等)进行交叉比对
- **MITRE ATT&CK 映射** — 根据置信度评分将这些 API 映射到具体的攻击技术,所有数据均来自本地 JSON 文件
- **HTML 报告** — 生成可打印的独立报告,你可以将其保存为 PDF
此外还内置了五个演示样本(一个类似 WannaCry 的勒索软件、一个 RAT、一个 rootkit 驱动程序、一个广告软件和一个通用 PUP),因此你无需上传任何真实文件即可进行探索。
## 技术栈
- **React 18** + **TypeScript**
- **Tailwind CSS v4** 用于样式设计
- **Framer Motion** 用于过渡动画
- **Recharts** 用于图表(Entropy 条形图、环形图、雷达图)
- **Zustand** 用于状态管理——在你浏览不同页面时,保持当前样本和分析历史记录不变
- **React Router v6**
没有使用任何 UI 组件库。所有组件都是纯手工编写的。
## 快速上手
```
git clone
cd malware-analysis-studio
npm install
npm run dev
```
打开 `http://localhost:5173`,拖入一个文件,或者点击仪表板上的其中一个演示样本。
## 页面
| 路由 | 内容 |
|---|---|
| `/` | 仪表板 — 统计数据、图表、样本历史 |
| `/upload` | 文件拖放区 |
| `/static` | 文件概述、Hashes、PE header、风险评分 |
| `/strings` | 带有搜索和复制功能的选项卡式字符串浏览器 |
| `/pe-info` | 完整的 PE 分解信息 — 节、导入、导出 |
| `/entropy` | 各节 Entropy 图表 + 字节频率 |
| `/apis` | 按类别分组的可疑 API 列表 |
| `/mitre` | ATT&CK 矩阵和技术卡片 |
| `/reports` | 生成并打印 HTML 报告 |
| `/settings` | 调整分析深度和字符串提取限制 |
## 分析原理
解析器将文件读取为 `ArrayBuffer`。对于 PE 文件,它会沿着 DOS header 中的 `e_lfanew` 指针找到 PE 签名,然后遍历 COFF header、Optional header、节表和导入目录。使用 Shannon 公式(`H = -Σ p(i) * log₂(p(i))`)计算每个节的 Entropy。字符串提取会进行两次遍历——一次是每次读取一个字节的 ASCII 遍历,另一次是每次读取一个 16 位字的 UTF-16 LE 遍历——然后对结果运行正则表达式以提取结构化指标。
Hashes 使用 `crypto.subtle.digest` 计算 SHA-1 和 SHA-256。由于 Web Crypto API 不包含 MD5,因此使用了纯 JS 实现来计算 MD5。
## 局限性
- PE 解析已尽力而为。格式错误或手工构造的 headers 可能会产生不完整的结果。
- 在浏览器主线程中,对超大文件(>100 MB)进行 Hash 计算可能会比较慢。
- MITRE 映射是基于启发式的——它基于导入表中存在的 API,而不是动态行为。
- 没有反编译、没有沙箱执行、没有动态分析。这纯粹是静态分析。
## 说明
MD5 的实现基于自 2000 年代初以来就广为人知的纯 JS 算法。PE 解析逻辑是参考 [Microsoft PE/COFF 规范](https://learn.microsoft.com/en-us/windows/win32/debug/pe-format) 从零开始编写的。MITRE ATT&CK 数据是 [ATT&CK 框架](https://attack.mitre.org/) 中手工整理的一个子集——并非完整的镜像。
这是一个个人项目,不能替代专业的恶意软件分析工具。请将其作为一种快速的初步分析手段。
标签:ATT&CK映射, DAST, PE文件分析, React, Syscalls, 恶意软件分析, 自动化攻击, 速率限制处理