CAPEv2 沙箱安装部署
→ 计算机配置 → 管理模板 → Windows 组件 → Microsoft Defender 防病毒 → 启用“关闭 Microsoft Defender 防病毒”关闭 Ubuntu 虚拟机,在虚拟机设置 → 处理器 → 勾选 “虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”graphic:设置 VNC 连接,这个用来就行虚拟机内部的配置,这个一定要有如果在服务器上的话。/et
基于实际部署经验总结,系统环境为 Ubuntu 22.04,Python 3.10,KVM 虚拟化,客户机使用 Windows 10 专业版。
一、系统环境准备
1.1 硬件要求
-
CPU:支持硬件虚拟化(Intel VT-x / AMD-V)
-
内存:至少 8GB(推荐 16GB)
-
磁盘:根分区建议 50GB+,另加一块独立硬盘用于虚拟机镜像(建议 100GB+)
1.2 安装基础软件包
sudo apt update && sudo apt upgrade -y sudo apt install -y git wget curl software-properties-common build-essential
1.3 安装 Python 3.10(Ubuntu 20.04/18.04 需要,22.04 自带)
sudo apt install -y python3.10 python3.10-venv python3.10-dev
1.4 安装 KVM 虚拟化
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager sudo systemctl enable --now libvirtd # 将当前用户加入 libvirt 和 kvm 组 sudo usermod -aG libvirt,kvm $USER # 重新登录或执行 newgrp libvirt
1.5 启用嵌套虚拟化(若在 VMware/VirtualBox 内运行 Ubuntu)
-
关闭 Ubuntu 虚拟机,在虚拟机设置 → 处理器 → 勾选 “虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”
-
启动 Ubuntu,检查:
cat /sys/module/kvm_intel/parameters/nested # 应返回 1 或 Y
如果为 0,执行:
sudo modprobe -r kvm_intel sudo modprobe kvm_intel nested=1 echo "options kvm_intel nested=1" | sudo tee /etc/modprobe.d/kvm_intel.conf
二、安装 CAPEv2
2.1 克隆项目
cd /opt sudo git clone https://github.com/kevoreilly/CAPEv2.git sudo chown -R $USER:$USER CAPEv2 # 将所有权给当前用户,后续再改 cape 用户
2.2 安装 Poetry 并配置国内源
# 为当前用户安装 Poetry python3.10 -m pip install --user poetry export PATH="$HOME/.local/bin:$PATH" echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc # 配置 Poetry 使用清华源(加速) poetry config repositories.pypi https://pypi.tuna.tsinghua.edu.cn/simple # 或添加阿里云源 poetry source add --priority=primary aliyun https://mirrors.aliyun.com/pypi/simple/
2.3 安装 Python 依赖
cd /opt/CAPEv2 poetry env use python3.10 poetry install
2.4 配置数据库(PostgreSQL + MongoDB)
CAPEv2 脚本会自动安装,若需手动:
sudo apt install -y postgresql mongodb sudo systemctl enable --now postgresql mongodb
三、配置 Windows 10 客户机
3.1 创建虚拟机
sudo virt-install \ --name Cape-Win10 \ --memory 4096 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/cape-win10.qcow2,size=50 \ --os-variant win10 \ --network network=default,model=virtio \ --graphics vnc,listen=0.0.0.0,port=5900 \ --cdrom /path/to/Win10_22H2.iso \ --noautoconsole name: 虚拟机名称 ram:内存 16G disk path:存储虚拟机的位置,用默认位置就好,大小为 50 G vcpus:虚拟 CPU 核数 os-variant:系统为 win10 network:采用 default 网络 graphic:设置 VNC 连接,这个用来就行虚拟机内部的配置,这个一定要有如果在服务器上的话。 cdrom:操作系统镜像的路径 noautoconsole:无自动终端
3.2 安装 Windows 10 专业版
-
通过 VNC 连接(宿主机 IP:5900)完成安装
-
必须使用 专业版(Pro),才能通过组策略彻底关闭 Defender
3.3 安装 VirtIO 驱动
虚拟机内挂载 virtio-win.iso(从 Fedora 仓库 下载):
-
打开设备管理器 → 未知以太网控制器 → 更新驱动 → 浏览光驱中的
NetKVM\w10\amd64 -
重启虚拟机
3.4 客户机内部配置
-
静态 IP(CAPEv2 不支持 DHCP):
-
IP:
192.168.122.100,掩码:255.255.255.0,网关:192.168.122.1,DNS:8.8.8.8
-
-
安装 Python 3.8.10 32位(下载地址)
-
安装时勾选 “Add Python to PATH”
-
-
安装 Pillow:
python -m pip install Pillow==9.5.0 -
部署 CAPE Agent:
-
下载
agent.py→ 重命名为agent.pyw -
按
Win+R输入shell:common startup,将agent.pyw放入该文件夹
-
-
关闭 Windows Defender 实时保护(通过组策略):
-
gpedit.msc→ 计算机配置 → 管理模板 → Windows 组件 → Microsoft Defender 防病毒 → 启用“关闭 Microsoft Defender 防病毒”
-
-
禁用 Windows Update 服务:
services.msc→ Windows Update → 禁用并停止 -
关闭防火墙:控制面板 → Windows Defender 防火墙 → 全部关闭
3.5 测试 Agent
在宿主机执行:
curl http://192.168.122.100:8000
应返回 JSON 格式的 Agent 信息。
3.6 拍摄运行中快照(关键)
# 确保虚拟机已开机且 agent 可访问 sudo virsh snapshot-create-as Cape-Win10 cape-running --disk-only --atomic
验证快照状态:
sudo virsh snapshot-info Cape-Win10 cape-running # State: running
四、配置 CAPEv2 服务
4.1 创建专用运行用户 cape
sudo useradd -m -s /bin/bash cape # 为 cape 用户安装 Poetry sudo -u cape python3.10 -m pip install --user poetry sudo -u cape poetry config repositories.pypi https://pypi.tuna.tsinghua.edu.cn/simple
4.2 修改配置文件
编辑 /opt/CAPEv2/conf/kvm.conf:
[machinery] machinery = kvm [kvm] machines = cuckoo1 interface = virbr0 dsn = qemu:///system [cuckoo1] label = Cape-Win10 platform = windows ip = 192.168.122.100 arch = x86 snapshot = cape-running
4.3 创建 systemd 服务
以下服务文件需创建在 /etc/systemd/system/: WorkingDirectory为项目目录
cape-rooter.service:
[Unit] Description=CAPE rooter After=network.target [Service] WorkingDirectory=/opt/CAPEv2 ExecStart=/home/cape/.local/bin/poetry run python utils/rooter.py -g cape User=root Group=root Restart=always RestartSec=5m [Install] WantedBy=multi-user.target
cape-web.service:
[Unit] Description=CAPE WSGI app After=cape-rooter.service [Service] WorkingDirectory=/opt/CAPEv2/web ExecStart=/home/cape/.local/bin/poetry run python manage.py runserver_plus 0.0.0.0:8000 --traceback --keep-meta-shutdown User=cape Group=cape Restart=always RestartSec=5m [Install] WantedBy=multi-user.target
cape-processor.service:
[Unit] Description=CAPE report processor After=cape-rooter.service [Service] WorkingDirectory=/opt/CAPEv2 ExecStart=/home/cape/.local/bin/poetry run python utils/process.py -p1 -pt 900 auto User=cape Group=cape Restart=always RestartSec=5m LimitNOFILE=100000 [Install] WantedBy=multi-user.target
cape.service(调度器):
[Unit] Description=CAPE scheduler After=cape-rooter.service [Service] WorkingDirectory=/opt/CAPEv2 ExecStart=/home/cape/.local/bin/poetry run python cuckoo.py User=cape Group=cape Restart=always RestartSec=5m [Install] WantedBy=multi-user.target
4.4 启动所有服务
sudo systemctl daemon-reload sudo systemctl enable --now cape-rooter cape-web cape-processor cape sudo systemctl status cape-rooter cape-web cape-processor cape
其中,每个服务作用为
cape.service cuckoo.py 主调度器,负责接收、调度分析任务。
cape-processor.service process.py 分析处理器,负责处理分析结果并生成报告。
cape-web.service manage.py Web 界面,提供基于 Django 的网页管理后台。
cape-rooter.service rooter.py 网络路由,以 root 权限运行,负责管理沙箱的网络通信
五、验证与提交任务
5.1 访问 Web 界面
浏览器打开 http://<宿主机IP>:8000,默认用户名/密码:cape/cape
5.2 命令行提交测试任务
sudo -u cape /home/cape/.local/bin/poetry run python /opt/CAPEv2/utils/submit.py /tmp/eicar.com

六、常见问题与解决办法
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
virt-install 报 “Host does not support virtualization” |
嵌套虚拟化未开启 | 检查 VMware/BIOS 设置,加载 kvm_intel nested=1,重启 libvirtd |
| Docker 磁盘空间不足 | 根分区过小 | 添加新硬盘,迁移 /var/lib/libvirt/images 或整个 /opt/CAPEv2 |
cape-processor 反复重启,日志显示 “missing id” |
服务参数顺序错误 | ExecStart 改为 ... utils/process.py -p7 -pt 900 auto |
cape-processor 报 “No module named 'libvirt'” |
Python 虚拟环境缺少 libvirt 包 | sudo -u cape poetry run pip install libvirt-python |
cape-processor 报 “Cannot allocate memory” |
物理内存不足 | 降低 -p1 并行数,增加 swap,减少虚拟机内存 |
| 快照状态为 shutoff | 快照是在虚拟机关闭时拍摄的 | 重新启动虚拟机,开机后执行 virsh snapshot-create-as |
libvirt 连接被拒绝 |
cape 用户不在 libvirt 组 |
sudo usermod -aG libvirt cape;重启 libvirtd |
| Poetry 下载依赖超时 | 访问国外源慢 | 配置国内镜像源(清华、阿里云),增加超时 poetry config installer.timeout 600 |
| Web 界面无法访问 | 服务监听 127.0.0.1 或防火墙阻挡 | 修改 cape-web.service 中的 0.0.0.0:8000;sudo ufw allow 8000 |
| 虚拟机 Agent 无响应 | Windows 防火墙阻挡或 agent 未运行 | 关闭防火墙,检查启动文件夹,手动运行 agent.pyw 测试 |
| 提交任务一直 pending | 调度器未运行或快照错误 | sudo systemctl status cape;检查 kvm.conf 中的快照名是否正确 |
No space left on device |
根分区满 | 清理日志(journalctl --vacuum-size=200M),迁移项目到数据盘 |
-
解决不能自动生成报告,添加循环脚本
sudo tee /usr/local/bin/cape-processor-loop.sh > /dev/null << 'EOF' #!/bin/bash LOG_FILE="/var/log/cape-processor.log" echo "$(date): CAPE Processor Loop Started" >> $LOG_FILE cd /var/lib/libvirt/images/CAPEv2-master while true; do echo "$(date): Checking for completed tasks..." >> $LOG_FILE # 添加 auto 参数 /home/cape/.local/bin/poetry run python utils/process.py auto -p 1 --disable-memory-limit >> $LOG_FILE 2>&1 sleep 30 done EOF sudo chmod +x /usr/local/bin/cape-processor-clean-loop.sh #更改配置 /etc/systemd/system/cape-processor.service,改为指向脚本 # 3. 修改服务文件,使用这个新脚本 sudo tee /etc/systemd/system/cape-processor.service > /dev/null << 'EOF' [Unit] Description=CAPE Report Processor (Clean Loop) After=network.target mongodb.service [Service] User=sqa Group=sqa WorkingDirectory=/var/lib/libvirt/images/CAPEv2-master ExecStart=/usr/local/bin/cape-processor-clean-loop.sh Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF # 重新加载并启动服务 sudo systemctl daemon-reload sudo systemctl restart cape-processor # 查看服务状态 sudo systemctl status cape-processor # 查看cape-process日志 tail -f /var/log/cape-processor.log
七、维护建议
-
定期清理日志:
sudo journalctl --vacuum-size=500M -
监控磁盘空间:
df -h,尤其注意/var/lib/libvirt/images和根分区 -
更新 CAPEv2:
cd /opt/CAPEv2 && git pull && poetry install -
备份虚拟机快照和数据库
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)