1. 前言
最近我要配置一个 CAPEv2 的沙箱 to 完成我的毕设相关内容。配置过程真 TM 的气人,这篇 Blog 主要用来记录下我踩到的坑和 Bug。In a nut shell,I 讨厌,hate,憎む配置环境。
到后面我发现一个博主有一个不错的博客用来配置 CAPEv2 ,which is CAPEv2沙箱安装部署(Ubuntu22.04虚拟机),这个比官方的文档,which is too exhaustive for a 新人,要好一点的 ,我只想配置一个能用的,它告诉我每个参数怎么做什么。
总体来说 s a n d b o x = v m + a n a l y s i s sandbox = vm + analysis sandbox=vm+analysis which means 沙箱是一个 带有自动分析功能的虚拟机 。首先要有这样一个概念才能够理解后面环境配置的两部分内容,以及一些 坑。
安装环境的话是在一台 Ubuntu 22.04 的服务器上,因此只有 cmd 的操作方式,没有 GUI 的方便。
2. KVM配置
CAPEv2 官方推荐使用 KVM 作为 sandbox 的 vm 部分。然后这部分是一个独立模块,不必采用与官方文档相同的安装方式(我就被这个坑了😭)。
2.1 推荐方案
这里就先把成功的方案列出来吧:apt 安装 instead of kvm-qemu.sh
bash
# install KVM using apt
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils libvirt-dev libvirt-daemon
# create a Windows 10 virtual machine
sudo virt-install \
--name Cape-Win10 \
--ram 16384 \
--disk path=/var/lib/libvirt/images/cape-win10.qcow2,size=50 \
--vcpus 4 \
--os-variant win10 \
--network default \
--graphics vnc,listen=0.0.0.0,port=5900 \
--cdrom win10.iso \
--noautoconsole
virt-install 一定要带 sudo ,不然就会连用户的 session 而不是系统的。参数含义如下:
- name: 虚拟机名称
- ram:内存 16G
- disk path:存储虚拟机的位置,用默认位置就好,大小为 50 G
- vcpus:虚拟 CPU 核数
- os-variant:系统为 win10
- network:采用 default 网络
- graphic:设置 VNC 连接,这个用来就行虚拟机内部的配置,这个一定要有如果在服务器上的话。
- cdrom:操作系统镜像的路径
- noautoconsole:无自动终端
创建虚拟机之后需要完成 安装 python(32位),防火墙与Defender的关闭, agent.py 的部署与自启动,静态ip配置,自动更新关闭。
-
安装 python 32
python3.8.10 32 bit,直接使用这个链接下载的安装器在虚拟机中安装即可。同时需要使用python -m pip install Pillow==9.5.0安装 pillow。 -
防火墙与Defender的关闭
这个直接在 windows 控制面板和 defender 中关闭即可。
-
agent.py 的部署与自启动
下载 agent.py,并将其后缀从.py改为.pyw, 然后按 Win + R 输入shell:common startup将其复制到其中。 -
静态ip配置
官方文档描述 CAPEv2 不支持 DHCP ,所以需要给虚拟机配置一个静态 ip 地址。

-
自动更新关闭
Windows 10+ 自动更新的关闭有些麻烦,主要涉及到服务,本地策略,注册表,定时任务等多个方面。可以参考这篇文章中描述的过程去完全关闭。
2.2 坑
这部分是写给自己看的,没兴趣可以直接跳过。
配置 KVM 主要踩了两个坑:源码安装与apt安装;用户与系统 session;
-
grass your mum。我一开始让 DeepSeek 帮我生成一个安装方案,其中让我使用
apt直接安装 KVM 包,然后我照着这个做了。装好之后我又看到了 CAPEv2 的 readme.md,其中说有一个kvm-qemu.sh脚本可以直接安装 KVM ,然后我当时还不知道 KVM 是一个独立的模块,就感觉自己按照 DeepSeek 给的方式做错了于是自己就有去运行这个脚本装了一个。

运行之后编译出现问题,然后也理清楚了 KVM 是一个单独模块,于是就准备清楚掉编译安装的 KVM 然后重新使用
apt安装 KVM 。清除的时候感觉好麻烦,用习惯了 Windows GUI 的 man 对于 Ubuntu 的软件管理方式非常 unfamiliar。一开始尝试使用apt直接重新安装,结果出现了依赖错误,which 是由与没有 clear 掉编译安装的部分内容。其实思路都是一样的找到文件位置,然后 delete 掉,但 Ubuntu 让我找了好久。虽然一句话就带过这部分内容,但就是这么个重新安装 grass your mum。大概也是遇到问题都不知道 why 就更别提解决了,
apt给出 error message 让人很懵逼,问了半天 AI,apt remove,apt clean等很多命令都 try 了一下,结果屁用没有(很显然的事情,根本就不是用apt安装的)。后来终于 try 到直接删除掉文件就终于解决了问题,grass your mum。 -
sun your mum。没想到 qemu 有一个系统的 session 和一个用户的 session。

由于我是在 Ubuntu 上进行的操作,所以希望自己的虚拟机能够放置在 fishwheel 用户的私有空间中,于是就使用
sudo usermod -aG fishwheel libvirt-qemu将其添加到自己的用户组中,同时在创建虚拟机的时候也将虚拟机存储到 fishwheel 文件夹下。但 something bad 就这样发生了。由于是用户 session,导致虚拟机无法与主机中的虚拟网卡进行桥接,因此就没有独立的 ip 地址,一句话来说就是在主机中无法
ping通虚拟机,更别说配置静态 ip 地址了。然后我就去问 AI 这个有方案解决吗,又跟着尝试了 so many 方式。一开始企图给虚拟机创建网卡,结果没有权限;接着就是看能不能让 system 能够访问我的私有文件,权限不够;最后不得不将虚拟机 clone 到
/var/lib/libvirt/images/这个标准位置存储,这才使得主机与虚拟机能够ping通。最后一点是,Windows上的网卡类型最好是 e1000 而不要设置为 virtio 会导致无法识别的问题。
sun your mum
最后感觉自己遇到的这个两个 KVM 如果有 GUI 的话就不会碰到了吧,自己在 VMware 上装虚拟机从来没有遇到过这样的问题。
3. CAPEv2安装
CAPEv2 的安装是这样的,没有什么大问题,直接运行 cape2.sh 脚本就好。然后知道如果安装成功会创建一个 cape 用户,并且会安装在 /opt/CAPEv2 中。

TM 的这里也有一个坑,运行脚本安装是会安装 PostgreSQL which has a 命令行的图形化配置界面,然后我在里面选择的时候就发现无法进行操作,我的输入没有被正确解析。比如:输入回车就只是换行;空格就是显示空格;没有解析这些字符,我就按 Ctrl + C 把这个结束了。我不知道 CAPEv2 会被安装到 /opt 目录中,看到 cape 用户还以为安装成功了。结果发现怎么弄都跑不起来,气死了。
解决 PostgreSQL 的配置问题可以将 cape2.sh 中的安装命令复制出来自己一条条执行,然后将脚本中的命令注释掉。

然后就是 poetry install 问题,这个我解决不了,就自己在 cape 搭了一个 conda python 环境。
- 直接安装

- 删掉 package-mode 和 [tool.poetry]

- 仅添加 [tool.poetry]

- 将 [tool.poetry] 添加到开头。

反正就是运行不成功。
4. 运行
- 进入 cape 用户
bash
sudo su - cape -c /bin/bash
- 运行 cuckoo.py
bash
python /opt/CAPEv2/cuckoo.py
# if can't run, stop running service first
sudo systemctl stop cape.service
- 命令行提交样本
bash
submit: cape$ python /opt/CAPEv2/utils/submit.py --timeout 60 /path/to/binary
clear: cape$ python /opt/CAPEv2/utils/cleaners.py --clean
如果网页版提交遇到这种情况,可以考虑使用命令行提交。
