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

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

相关推荐
今晚务必早点睡4 小时前
写一个Python接口:发送支付成功短信
开发语言·python
jghhh015 小时前
基于C#实现与三菱FX系列PLC串口通信
开发语言·算法·c#·信息与通信
ada7_5 小时前
LeetCode(python)22.括号生成
开发语言·数据结构·python·算法·leetcode·职场和发展
喵了meme5 小时前
C语言实战练习
c语言·开发语言
imkaifan5 小时前
bind函数--修改this指向,返回一个函数
开发语言·前端·javascript·bind函数
love530love5 小时前
EPGF 新手教程 12在 PyCharm(中文版 GUI)中创建 Poetry 项目环境,并把 Poetry 做成“项目自包含”(工具本地化为必做环节)
开发语言·ide·人工智能·windows·python·pycharm·epgf
White_Can5 小时前
《C++11:列表初始化》
c语言·开发语言·c++·vscode·stl
White_Can5 小时前
《C++11:右值引用与移动语义》
开发语言·c++·stl·c++11
比奇堡派星星5 小时前
Linux4.4使用AW9523
linux·开发语言·arm开发·驱动开发
民乐团扒谱机5 小时前
【微实验】数模美赛备赛MATLAB实战:一文速通各种“马尔可夫”(Markov Model)
开发语言·人工智能·笔记·matlab·数据挖掘·马尔科夫链·线性系统