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, 云安全监控, 云资产可视化, 动态沙箱, 子域名变形, 安全防御评估, 恶意软件分析, 文件安全, 网络信息收集, 请求拦截, 逆向工具, 静态分析