a7medy10/malwarefind
GitHub: a7medy10/malwarefind
一个轻量级的文件上传恶意软件分诊工具,通过静态分析、YARA 扫描、哈希信誉查询和隔离沙箱动态执行四个阶段对文件进行快速判定。
Stars: 0 | Forks: 0
# MalwareFind
一个文件上传恶意软件分诊工具。每个上传的文件都会经历四个阶段,并返回一个干净 (Clean) / 可疑 (Suspicious) / 恶意 (Malicious) 的判定结果:
1. **静态分析** (Python) — 哈希值、文件类型检测、Shannon
熵(加壳/加密)、PE 头部 + 导入表检查、
Office 宏检查 (`oletools`)、可疑字符串/IOC 模式。
2. **YARA 扫描** (Python, `yara-python`) — 位于 `rules/*.yar` 中的规则。
添加你自己的规则;该文件夹中的每个规则文件都会被自动加载。
3. **哈希信誉** (Python) — 如果配置了 `VT_API_KEY`,则会在
VirusTotal 中查询该文件的 SHA-256。除非你自己进行扩展,否则仅发送哈希值,而不发送文件。
4. **动态沙箱** — 对于该 Linux 沙箱可以实际执行的文件(Python/shell/Perl 脚本、Linux ELF 二进制文件),样本将在一个受到严格限制的一次性 Docker 容器中运行,并使用 `strace` 进行监控:
- `--network none`(完全没有网络访问)
- 除 `SYS_PTRACE`(`strace` 所需)外丢弃所有 capabilities
- 非 root 用户、`--pids-limit`、`--memory` 上限、`--cpus 1`
- 严格的执行超时限制,随后容器将被销毁
- 报告:退出码、捕获的 stdout/stderr、丢弃/创建的文件,
以及可疑的 syscall(网络尝试、文件删除等)
**Windows PE 文件永远不会被执行** — 这是一个 Linux 容器,因此
`.exe`/`.dll` 样本仅接受静态检查(PE 头部、导入、
熵、YARA、VirusTotal),并且沙箱阶段报告状态为“已跳过”。
## 设置
```
cd D:\1backup\malwarefind
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
```
编辑 `.env` 并设置 `VT_API_KEY` 以启用 VirusTotal 查询(可选 ——
其他所有功能在没有它的情况下也能正常工作)。
构建一次沙箱镜像(需要运行 Docker Desktop):
```
docker build -t malwarefind-sandbox:latest -f Dockerfile.sandbox .
```
如果 Docker 不可用,或者镜像尚未构建,应用程序
仍然可以工作 —— 沙箱阶段只会报告自身为已跳过/不可用,
并且判定结果将基于静态分析 + YARA + VirusTotal。
## 运行
```
python app.py
```
打开 http://127.0.0.1:5000,上传一个文件,获取报告。
## 注意事项 / 限制
- 这是一个分诊工具,不能替代完整的恶意软件分析
平台(Cuckoo/CAPE、真正的 Windows 沙箱虚拟机等)。这里的动态
阶段仅执行可在 Linux 上运行的文件类型。
- `strace` 需要 `SYS_PTRACE` capability,这是
在默认丢弃所有 capabilities 之外,授予沙箱容器的唯一一个
capability。无论如何,网络仍然是完全禁用的。
- 仅扫描你获得授权进行分析的文件。上传的文件
在每次扫描完成后会立即从磁盘删除。
- `rules/starter_rules.yar` 中的入门 YARA 规则是用于
演示的通用启发式规则 —— 请使用你自己的规则集对它们进行扩展,以实现
真正的覆盖。
标签:DAST, Docker, YARA, 云安全监控, 云资产可视化, 动态沙箱, 子域名变形, 安全防御评估, 恶意软件分析, 文件安全, 网络信息收集, 请求拦截, 逆向工具, 静态分析