搭建Cuckoo沙盒测试环境
Cuckoo是一款用于自动化分析恶意样本的沙箱软件。相比其他沙箱软件,Cuckoo具备强大的监控功能,能够自动将程序提交到指定的虚拟机中,并依据格式运行,同时会Hook相关的函数接口,记录下的重要的函数调用、网络访问。Cuckoo基于Python编写,通过在此基础上进行修改,可以避免重复开发,增加所需要的特殊功能。
本文的主要内容是在Linux系统上安装Cuckoo。
安装过程
1. 基本运行环境
- Python
安装Python并根据requirements.txt中的列表直接安装所需要的python模块。
- MongoDB
如果想使用基于Django的网页接口,则需要安装MongoDB
- 各个虚拟机的接口库
KVM、XenServer的API接口
2. 功能软件
安装Yara
Yara是一款用于识别和分类恶意样本的开源工具,可以理解为是一款特征匹配工具。
Yara默认没有编译对cuckoo和magic的支持,在编译时需要加上./configure --enable-cuckoo --enable-magic
选项。
安装yara-python库,使得cuckoo能够调用yara。
安装ssdeep
ssdeep能够计算一个文件的模糊哈希代码,通过计算不同样本之间的ssdeep差值,可以判断两个样本是否相近。
Tcpdump
用于截获数据。
安装cuckoo
cuckoo居然没有在ArchLinux的软件包中,这是很神奇的一件事,所以必须手动Github下载,并且手动更新。
git clone git@github.com:cuckoobox/cuckoo.git
3. 可选软件
Volatility
这是一款分析内存dumps的工具。
4. 安装虚拟机
Cuckoo支持多种虚拟机,官方推荐使用的是VirutalBox虚拟机(应该是因为开源的缘故),其他的还支持VMware、XenServer、ESX、KVM等虚拟机(参考modules/machinery目录),个人处于使用惯性,选择了使用VMware。
虚拟机内安装基本操作系统,取消防火墙,并安装Python运行环境,然后运行agent/agent.py,使得虚拟机处于等待接收参数和处理任务状态,并对此状态保存快照。
配置
cuckoo.conf
[cuckoo]machinery: 虚拟机类型,可以填virutalbox,vmware等
[resultserver]ip port: 存储结果的服务器IP,可以直接填写本机(物理机)
[database]connection: 数据库连接,不填可以直接使用SQLite数据库
auxiliary.conf
主要用于监控网卡数据相关配置
[sniffer]interface: 改为和虚拟机共用的网卡
vmware.conf
具体的虚拟机设置,本例中使用vmware.conf
machines: 具体的虚拟机配置,必须与下面的字段名称一致
vmx_path: 表示虚拟机vmx文件的路径
snapshot: 快照名称
ip: 虚拟机IP地址
processing.conf
处理样本时需要使用各种附加模块,我禁用了Virustotal。此外,如果自己添加了模块,则需要在这个文件中启用
memory.conf
用于Volatility处理模块,需要首先在processing.conf启用memory模块才行。
reporting.conf
配置报告服务器,我修改了mongodb字段,使其将数据存储到了MongoDB中
运行
启动cuckoo
python2 cuckoo.py
如果失败,可以使用-d参数,输出更多的内容用于调试确认错误信息。
提交文件分析
python2 utils/submit.py [文件路径] --url [网址]