NeydimNeoOldum/MalHunter
GitHub: NeydimNeoOldum/MalHunter
一款 Windows 桌面端动态恶意软件行为分析工具,通过七大监控模块实时捕获样本引爆后的进程、注册表、计划任务、文件及网络等系统级行为变更。
Stars: 0 | Forks: 0
# MalHunter
**MalHunter** 是一款用于**动态(行为)恶意软件分析**的 Windows 桌面工具。您可以在隔离的分析 VM 中运行它,引爆样本,并实时观察恶意软件通常产生的系统级副作用:新进程、服务、计划任务、注册表持久化、文件/临时文件活动以及网络连接。
## 功能 — 七大“Hunter”
| Hunter | 检测内容 | 实现方式 |
|--------|-----------------|-----|
| **Process Hunter** | 进程创建 / 终止 | 对比 `psutil` 快照 |
| **Service Hunter** | 服务添加 / 移除 | 轮询 `HKLM\SYSTEM\CurrentControlSet\Services` |
| **Registry Hunter** | 对持久化 / 自启动项的更改 | 轮询一组精选的 Run/RunOnce/Winlogon/IFEO 键 |
| **Schedule Hunter** | 计划任务添加 / 移除(包含其运行的命令) | Task Scheduler COM API |
| **File Hunter** | 跨所有固定驱动器的文件创建/修改/重命名/删除;标记勒索软件扩展名和勒索信名称 | `ReadDirectoryChangesW` (overlapped I/O) |
| **Temp File Hunter** | `%TEMP%`、`%APPDATA%`、文档、下载目录中的文件活动 | `ReadDirectoryChangesW` (overlapped I/O) |
| **Network Hunter** | 新建 / 关闭的 TCP & UDP 连接 | 对比 `netstat -ano` |
Registry Hunter 专门监控常见的**持久化/自启动**位置(而非整个注册表),以保持 UI 的流畅响应。
## 环境要求
- **Windows 10 / 11**
- **Python 3.10+**(基于 3.12 开发)
- Python 包:
```
pip install customtkinter pillow psutil pywin32
```
## 运行
```
python main.py
```
这会打开 MalHunter 控制面板。点击侧边栏(或控制面板上的卡片)中的任意 Hunter,即可打开其面板。点击顶部的 **MalHunter** logo 可返回控制面板。
### 启动 / 停止监控
监控由侧边栏中的 **Start Monitoring** 按钮控制:
- 当状态指示灯显示为**红色(“Monitoring Inactive”)**时,表示未监控任何内容。
- 按下 **Start Monitoring**(指示灯变为**绿色**),**当前屏幕显示**的 Hunter 即开始监控。
- 在监控开启时切换到其他面板,监控会自动转移到新面板。
- 按下 **Stop Monitoring** 即可停止监控。
## 管理员权限
大多数 Hunter 可以在普通用户权限下运行。少数 Hunter 需要**提权**的会话才能实现全面覆盖:
| Hunter | 需要管理员权限? |
|--------|--------------|
| Process, Network, Temp File, Schedule, Registry (HKCU) | 否 |
| Service (在 `HKLM\...\Services` 下写入/读取) | 建议需要 / 必需 |
| File (系统驱动器根目录) | 部分路径需要提权 |
要以提权方式运行:请打开**管理员**终端并在其中启动 `python main.py`。
## 测试 Hunter
七个脚本模拟了**良性**活动——每个 Hunter 对应一个——因此您无需使用真实的恶意软件即可验证检测功能。它们仅创建无害的工件并在执行后自行清理。
**各测试的工作流程:** 打开匹配的面板 -> 点击 **Start Monitoring** -> 运行测试。
| 脚本 | 要打开的 Hunter | 模拟行为 | 需要管理员权限? |
|--------|----------------|-----------|--------|
| `test1.py` | Process Hunter | 启动并终止 Notepad | 否 |
| `test2.py` | Service Hunter | 创建并移除一个虚拟服务键 | **是** |
| `test3.py` | Registry Hunter | 添加/修改/移除一个登录自启动值 (`HKCU\...\Run`) | 否 |
| `test4.py` | Schedule Hunter | 创建并删除一个计划任务(约 15 秒) | 否 |
| `test5.py` | File Hunter | 勒索软件式的文件活动、伪造的 `.encrypted` 重命名、勒索信 | 否 |
| `test6.py` | Temp File Hunter | 在 `%TEMP%` 和 `%APPDATA%` 中进行创建/修改/重命名/删除 | 否 |
| `test7.py` | Network Hunter | 到外部主机的出站 TCP 连接 | 否 |
示例:
```
python test1.py # with Process Hunter open and monitoring started
```
## 项目结构
```
malhunter/
├── main.py # GUI application (CustomTkinter) — start here
├── process_hunter.py # Process monitor
├── servis_hunter.py # Service monitor
├── regi_hunter.py # Registry persistence monitor
├── schedule_hunter.py # Scheduled-task monitor (Task Scheduler COM)
├── file_hunter.py # Fixed-drive file monitor
├── tempfile_hunter.py # TEMP/APPDATA/Documents/Downloads monitor
├── net_hunter.py # Network connection monitor
├── malwaremon.py # Standalone, single-file version (plain Tkinter)
├── test1.py … test7.py # One benign test per hunter
├── version1/ # Original code backups (pre-fixes)
└── version2/ # Snapshot before the Start/Stop rework
```
### Hunter 模块接口约定
每个 Hunter 都公开相同的接口,以便 `main.py` 能够统一驱动它们:
- `create_ui(parent_frame, colors)` — 构建面板 UI;返回一个清理函数。
- `start()` — 开始监控(生成观察者 / 记录基准线)。
- `stop()` — 停止监控。
- `monitor()` — 一次轮询周期(由基于轮询机制的 Hunter 使用;对于基于线程的 Hunter 则为空操作)。
基于线程的 Hunter 使用 **overlapped(异步)I/O**,每个观察者都在自己的线程中拥有并关闭其句柄,配合**批量、节流的 GUI 更新**,因此高变动目录永远不会导致窗口卡顿或崩溃。
## 替代版本
`malwaremon.py` 是一个**独立的单文件**版本(使用纯 Tkinter),它将所有监控器合并到一个带有文件日志记录的脚本中。该版本仅供保留参考;模块化的 `main.py` 应用程序才是主要工具。
## 注意事项与限制
- **仅限 Windows**(依赖于 Win32 API、注册表和 Task Scheduler)。
- File Hunter 递归监视*所有固定驱动器*,在繁忙的系统上可能会产生大量信息——这是正常现象。
- Registry Hunter 按设计仅报告**持久化/自启动**的更改,而非任意注册表写入。
- Schedule Hunter 报告的是**添加/移除**的任务,而不是对现有任务定义的编辑。
- MalHunter 是一款**分析辅助工具**,并非防病毒软件。请务必在一次性 VM 中进行操作。
标签:Linux, Python, 动态恶意软件分析, 无后门, 系统行为监控, 网络信息收集, 逆向工具