Binary:CAPEv2安装配置

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配置,自动更新关闭。

  1. 安装 python 32
    python3.8.10 32 bit,直接使用这个链接下载的安装器在虚拟机中安装即可。同时需要使用 python -m pip install Pillow==9.5.0 安装 pillow

  2. 防火墙与Defender的关闭

    这个直接在 windows 控制面板和 defender 中关闭即可。

  3. agent.py 的部署与自启动
    下载 agent.py,并将其后缀从 .py 改为.pyw, 然后按 Win + R 输入 shell:common startup 将其复制到其中。

  4. 静态ip配置
    官方文档描述 CAPEv2 不支持 DHCP ,所以需要给虚拟机配置一个静态 ip 地址。

  5. 自动更新关闭

    Windows 10+ 自动更新的关闭有些麻烦,主要涉及到服务,本地策略,注册表,定时任务等多个方面。可以参考这篇文章中描述的过程去完全关闭。

2.2 坑

这部分是写给自己看的,没兴趣可以直接跳过。

配置 KVM 主要踩了两个坑:源码安装与apt安装;用户与系统 session;

  • grass your mum。我一开始让 DeepSeek 帮我生成一个安装方案,其中让我使用 apt 直接安装 KVM 包,然后我照着这个做了。装好之后我又看到了 CAPEv2readme.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 removeapt 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
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

如果网页版提交遇到这种情况,可以考虑使用命令行提交。

相关推荐
what丶k1 小时前
你应该更新的 Java 知识:Record 特性深度解析
java·开发语言
mango_mangojuice1 小时前
C++ 学习笔记(string类)
开发语言·c++·笔记·学习
2301_822366351 小时前
C++中的智能指针详解
开发语言·c++·算法
kdniao11 小时前
PHP 页面中如何实现根据快递单号查询物流轨迹?对接快递鸟在途监控 API 实操
android·开发语言·php
郑州光合科技余经理1 小时前
同城配送调度系统实战:JAVA微服务
java·开发语言·前端·后端·微服务·中间件·php
leaves falling1 小时前
c语言-函数讲解
c语言·开发语言
癫狂的兔子1 小时前
【BUG】【Python】【Spider】Compound class names are not allowed.
开发语言·python·bug
css趣多多1 小时前
动态路由,路由重置,常量路由,$ref,表单验证流程
开发语言·javascript·ecmascript
秋深枫叶红1 小时前
嵌入式C语言阶段复习——循环语句和分支语句
c语言·开发语言
还在忙碌的吴小二1 小时前
Go-View 数据可视化大屏使用手册
开发语言·后端·信息可视化·golang