ogshrug/YEMU
GitHub: ogshrug/YEMU
YEMU 是一个基于 YARA 和 QEMU/KVM 的本地恶意软件分析沙箱,通过隔离虚拟机执行可疑样本并自动生成威胁评分和分析报告。
Stars: 0 | Forks: 0
# 本地恶意软件分析沙箱
一个带有 GTK4 GUI 的本地、离线恶意软件分析沙箱。通过 QEMU/KVM 执行隔离的虚拟机并进行行为监控。
## 功能
- 隔离的 VM 执行 (QEMU/KVM)
- 行为监控(strace,网络捕获)
- YARA 静态和内存分析
- 威胁评分和判定生成
- 实时日志流
- PDF 和 JSON 报告
## 前置条件
### 系统依赖 (Ubuntu/Debian)
```
sudo apt install qemu-kvm libvirt-daemon-system virt-manager \
python3-gi python3-gi-cairo gir1.2-gtk-4.0 gir1.2-adw-1 \
libgtksourceview-5-dev strace tcpdump yara
```
### Python 依赖
```
pip install -r requirements.txt
```
# 用法
本指南说明了如何设置和运行恶意软件分析沙箱。
## 前置条件
### 系统要求
- Ubuntu 22.04+(或等效的 Linux 发行版)
- 支持 VT-x/AMD-V 的 CPU(用于 KVM)
- 已安装 Libvirt 和 QEMU
### 依赖
安装必需的系统包:
```
sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients virt-manager \
libguestfs-tools gir1.2-gtk-4.0 gir1.2-adw-1 python3-gi python3-libvirt
```
安装 Python 依赖:
```
pip install -r requirements.txt
```
## 虚拟机准备
沙箱需要在 libvirt 中预配置一台虚拟机。你可以手动准备,也可以使用内置的自动化工具。
### 自动化虚拟机准备(推荐)
1. 启动 MalSandbox:`python main.py`。
2. 点击 **Prepare New VM**。
3. 填写 VM 名称、发行版(Ubuntu、Debian 或 Windows)、RAM、CPU 和磁盘大小。
4. 点击 **Prepare VM** 并等待该过程完成(包括下载镜像、自动化安装和快照)。
### 手动虚拟机准备
1. **创建 VM**:使用 `virt-manager` 创建 VM(例如命名为 `ubuntu-clean`)。
2. **安装 Guest Agent**:确保在客户机操作系统中安装并运行了 `qemu-guest-agent`。
3. **配置网络**:VM 应位于名为 `malware-analysis` 的隔离网络上。
4. **拍摄快照**:配置完成后,拍摄一个名为 `clean-baseline` 的快照。
virsh snapshot-create-as ubuntu-clean clean-baseline "Clean state for analysis"
## 运行应用程序
通过运行以下命令启动应用程序:
```
python main.py
```
## 用户界面指南
### 1. 标题栏
- **Stack Switcher**:位于标题栏中心。使用它在 **Dashboard**、**YARA Rules** 和 **Reports** 标签页之间切换。
- **Submit File for Analysis**:点击此按钮将提交 `malicious_sample.elf` 进行分析。
### 2. Dashboard
- 显示上次分析的高级指标:
- **威胁评分**:一个 0-100 的值,表示严重程度。
- **YARA 匹配**:触发的静态特征签名数量。
- **行为警报**:检测到的可疑系统调用数量。
### 3. YARA Rules
- 查看和编辑用于静态分析的 YARA 规则。
- 应用程序会自动从 `rules/yara-rules` 加载规则。
### 4. 报告
- 过去分析的详细视图,包括元数据、日志和发现。
### 5. 侧边栏
- **最近分析**:最近完成的分析任务列表。点击其中一个以查看其报告。
### 6. 日志查看器
- 位于底部。显示分析的实时进度,包括 VM 生命周期事件和 YARA 匹配。
## 故障排除
- **Libvirt 连接 / 权限错误**
如果你看到“Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied”,这很可能是用户组成员资格问题。
确保你的用户属于 `libvirt` 和 `kvm` 组:
sudo usermod -aG libvirt,kvm $USER
# 你必须注销并重新登录才能使此操作生效。
如果无法访问 `qemu:///system`,应用程序将自动尝试使用 `qemu:///session`。
- **Libguestfs 内核访问错误**
如果自动化 VM 准备或 `virt-copy-in` 失败并提示“cannot access /boot/vmlinuz”,请通过授予内核映像读取权限来修复它:
sudo chmod +r /boot/vmlinuz-*
应用程序还在内部设置了 `LIBGUESTFS_BACKEND=direct`,以绕过一些常见的权限问题。
- **找不到 VM Domain**
如果你收到一条错误提示说找不到 VM,请验证它是否出现在 `virsh list --all` 中。
virsh list --all
如果缺失,请使用 **Prepare New VM** 按钮进行创建,或者通过 `virt-manager` 手动创建,确保名称一致。
- **QEMU Guest Agent 未响应**
如果 Guest Agent 超时,请确保:
1. 该 VM 配置了 Guest Agent 通道:
2. 客户机操作系统中已安装并运行 `qemu-guest-agent` 服务:
# 在 Ubuntu/Debian 客户机内部
sudo apt install qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
- **隔离网络问题**
如果 `malware-analysis` 网络缺失,应用程序将尝试自动定义它。你也可以手动执行此操作:
virsh net-define assets/network.xml
virsh net-start malware-analysis
virsh net-autostart malware-analysis
- **Mock 模式回退**
如果应用程序找不到 KVM 或 libvirt 资源,它将自动降级到 **Mock Mode**。日志流中将显示一条警告。这允许你在没有本地虚拟化环境的情况下也能探索 UI。
## 项目结构
- `ui/`:GTK4 界面组件
- `core/`:分析引擎和 VM 管理
- `storage/`:数据库和报告持久化
- `rules/`:YARA 规则集
- `assets/`:样式和 ISO 模板
标签:DAST, GTK4, QEMU/KVM, YARA, 云资产可视化, 安全沙箱, 恶意软件分析, 行为监控, 逆向工具