reverseame/malscan

GitHub: reverseame/malscan

一个 Volatility 3 内存取证插件,结合 ClamAV 签名扫描与字节级启发式规则来检测 Windows 内存转储中的隐藏和注入代码并降低误报。

Stars: 3 | Forks: 1

# MalScan — Volatility 3 插件 `MalScan` 是一个 [Volatility 3](https://github.com/volatilityfoundation/volatility3) 插件,用于检测 Windows 内存转储中的**隐藏和注入代码**。它的工作原理与官方的 [`malfind`](https://volatility3.readthedocs.io/en/latest/volatility3.plugins.windows.html#module-volatility3.plugins.windows.malfind) 插件类似,但它利用 **ClamAV** 来减少误报。 [![License: AGPL v3](https://img.shields.io/badge/License-AGPLv3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) ## 工作原理 对于每个进程,`MalScan` 会遍历 VAD 树,并选择看起来可能包含注入代码的区域(与原始插件的标准相同): - 使用 `--full-scan` 时:原始保护属性为可执行的每个 VAD。 - 默认情况下:具有 `EXECUTE`+`WRITE` 保护属性且匹配已知注入 模式的 VAD(来自 `VirtualAlloc` 的私有 `VadS`、Stuxnet 风格的映射区域,或 主 `.exe` 模块以捕获进程镂空)。 每个候选区域都会使用 **ClamAV**(通过其 Unix socket)进行扫描。如果 ClamAV 未将其标记,则会应用一组基于字节特征的启发式规则:可疑的 PE header、 函数序言(`push ebp ; mov ebp, esp`),或者基址处被擦除的 PE header。 如果 ClamAV 不可用,插件会透明地回退到仅使用启发式规则。 ## 安装说明 必须安装 [Volatility 3](https://github.com/volatilityfoundation/volatility3) 和 ClamAV。你可以使用 [setup.sh](setup.sh) 来安装依赖项: - 系统:`clamav`, `clamav-daemon` - Python:`volatility3` 安装 ClamAV 后,确保 daemon 正在运行并暴露其 Unix socket (默认路径:`/run/clamav/clamd.ctl`)。你可能需要重启系统。 然后在运行时使用 `-p` / `--plugin-dirs` 传递插件目录,或者将 `malscan.py` 和 `clamav.py` 一起复制到 `volatility3/framework/plugins/windows/` 目录下。 ## 用法 ``` usage: vol.py malscan.MalScan [-h] [--pid [PID ...]] [--full-scan] [--clamd-socket CLAMD-SOCKET] Scan with ClamAV for hidden and injected code. --pid [PID ...] Process IDs to include (all other processes are excluded) --full-scan Scan every VAD marked as executable --clamd-socket CLAMD-SOCKET Path to the clamd Unix socket (default: /run/clamav/clamd.ctl) ``` 示例(Windows x64 镜像,`pretty` 渲染器): ``` $ vol.py -r pretty -p /path/to/malscan -f /path/to/memory.dump malscan.MalScan Volatility 3 Framework 2.28.1 | PID | Process | Start | End | Tag | Protection | CommitCharge | PrivateMemory | Result | Hexdump | Disasm * | 2420 | svchost.exe | 0x53a0000 | 0x53a0fff | VadS | PAGE_EXECUTE_READWRITE | 1 | 1 | Suspicious function prologue | 55 48 8d 2c 24 48 83 ec 20 ... | 0x53a0000: push rbp | | | | | | | | | | 48 8b 01 48 8b 49 08 ff d0 ... | 0x53a0001: lea rbp, [rsp] | | | | | | | | | | | 0x53a0005: sub rsp, 0x20 ... ``` 当 ClamAV 识别出某个区域时,`Result` 列会转而显示签名名称 (例如 `Win.Trojan.Alina-4`);否则会报告上述的一种字节启发式 结果。`Disasm` 列需要可选的 `capstone` 包。 ## 许可证 采用 [GNU AGPLv3](LICENSE) 许可证授权。 (c) RME-DisCo Research Group, University of Zaragoza (Spain)。访问我们的网站了解更多关于我们的信息!https://www.reversea.me
标签:ClamAV, SecList, Volatility3, Web 安全测试, 内存取证, 逆向工具