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, 动态恶意软件分析, 无后门, 系统行为监控, 网络信息收集, 逆向工具