Cuckoo(布谷鸟)沙箱是一个开源且免费的自动化的恶意样本分析系统。主体使用python开发, 该沙箱提供一个主要的沙箱引擎和一个使用django开发的web界面, 通过web界面或者沙箱系统提供的web api提交可疑文件,沙箱系统即可自动分析,并在分析完毕后提供一个详细的报告,概述该文件在沙箱中执行时的行为,支持分析Windows, macOS, Linux, 和 Android下的恶意文件.
Cuckoo由Cuckoo host、Analysis Guests、Virtual network构成。cuckoo host是调度中心,analysis guest是具体执行样本的沙箱环境,两者通过虚拟网卡连接。当提交样本到cuckoo host后,cuckoo host会调度一个空闲的analysis guest节点,同时将样本传递给所选择的沙箱节点进行自动化分析,分析结束之后将沙箱节点采集到的分析数据进行汇总,最后输出分析报告。
Cuckoo沙箱底层基于虚拟化技术,可以使用不同的虚拟化平台进行构建,目前支持的虚拟化平台包括:VirtualBox、KVM、VMware Workstation、XenServer。
Vmware workstation 16 Pro
Ubuntu 16.04 x64
Virtual Box 5.2
Windows 7 unlimited sp1 x64
Cuckoo 2.0.7
Python 2.7.18 x64
阐述下各软件安装位置,简单画个草图
首先需要在Vmware上虚拟化一个Ubuntu作为cuckoo的宿主机,建议cpu和内存配置不要太低, 笔者配置如下
此处需要注意的是虚拟机CPU要开启VT-X或者AMD-V虚拟化嵌套
由于在具有中国特色的互联网环境下, 建议在安装下面各个依赖和组件时使用访问国外网站~
sudo apt-get install curl git wget openconnect python-dev libffi-dev libssl-dev libfuzzy-dev libtool flex autoconf libjansson-dev python-setuptools libjpeg-dev zlib1g-dev swig mongodb postgresql libpq-dev libcap2-bin tcpdump apparmor-utils iptables-persistent ssdeep libsdl1.2debian -y --fix-missing
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -O
sudo python get-pip.py
注意在安装VirtualBox时,尽量选择>5.1的版本.虽然5.1也可以正常使用,但在cuckoo启动时会显示VirtualBox存在风险
下载VirtualBox 5.2.44
curl https://download.virtualbox.org/virtualbox/5.2.44/virtualbox-5.2_5.2.44-139111~Ubuntu~xenial_amd64.deb -O
下载VirtualBox 5.2.44扩展
curl https://download.virtualbox.org/virtualbox/5.2.44/Oracle_VM_VirtualBox_Extension_Pack-5.2.44.vbox-extpack -O
安装
sudo dpkg -i virtualbox-5.2_5.2.44-139111~Ubuntu~xenial_amd64.deb
打开VirtualBox导入扩展
Volatility是一款开源的内存取证分析工具,支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证方式
git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
sudo python setup.py build
sudo python setup.py install
sudo -H pip install distorm3==3.4.4 yara-python==3.6.3 pydeep openpyxl ujson jupyter pip setuptools
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
getcap /usr/sbin/tcpdump
sudo aa-disable /usr/sbin/tcpdump
sudo -H pip install -U cuckoo
cuckoo
安装完成后运行一次cuckoo让其生成默认配置文件
默认配置位于/home/xxxx/.cuckoo/conf
至此, cuckoo主体已安装完成,要想cuckoo正常工作,还需要对虚拟网络,防火墙等进行一系列设置.
创建仅主机虚拟网络
vboxmanage hostonlyif create
设置虚拟网络网关地址
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
将虚拟网络安装为服务并设置为自启动
sudo mkdir /opt/systemd/
sudo nano /opt/systemd/vboxhostonly
写入以下内容,保存退出
#!/bin/bash
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
cd /opt/systemd/
sudo chmod a+x vboxhostonly
创建服务
sudo touch /etc/systemd/system/vboxhostonlynic.service
sudo nano /etc/systemd/system/vboxhostonlynic.service
写入以下内容,保存退出
[Unit]
Description=Setup VirtualBox Hostonly Adapter
After=vboxdrv.service
[Service]
Type=oneshot
ExecStart=/opt/systemd/vboxhostonly
[Install]
WantedBy=multi-user.target
重载服务
systemctl daemon-reload
设置虚拟网络自启动
systemctl enable vboxhostonlynic.service
sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
ens33替换为实际网卡名称
sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
打开ipv4转发
echo 1 | sudo tee -a /proc/sys/net/ipv4/ip_forward
sudo sysctl -w net.ipv4.ip_forward=1
cuckoo.conf
memory_dump=yes
忘记截图了
auxiliary.conf
virtualbox.conf
processing.conf
memory.conf
reporting.conf
在VirtualBox中安装Windows7 unlimited sp1 x64, 安装过程此处不再赘述
注意
组策略配置
windows设置->安全设置->本地策略->安全选项->安全选项->用户账户控制: 管理员批准模式中管理员的提升权限的行为 下选择"不提示,直接升"
windows设置->安全设置->本地策略->安全选项->安全选项->用户账户控制:检测应用程序安装并提升提升,下选择"禁用"
windows设置->安全设置->本地策略->安全选项->安全选项->用户账户控制:以管理员批准模式运行所有管理员,选择"禁用"
安装python 2.7.18和pillow
安装python时注意勾选添加到环境变量 由于中国特色网络原因需要换pip源
[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
设置agent
拷贝/home/s0cke3t/.cuckoo/agent/agent.py
到分析机C:\Users\xxxxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
目录下并更改后缀为pyw
双击运行,查看是否有8000端口监听
一切设置完毕后,就可以对分析机当前状态进行快照保存,保存名称要与配置文件的一致, 保存快照后暂停并休眠分析机
至此全部配置完毕
启动cuckoo
拉取最新的规则库
cuckoo community
启动cuckoo
cuckoo
启动本地web管理页面
cuckoo web
远程访问web管理页面
cuckoo web runserver 0.0.0.0:8000
启动cuckoo
启动web页面
默认管理地址http://localhost:8000
输入配置的密码即可访问
笔者以Synaptics
蠕虫病毒进行测试
上传样本后选择要分析的行为, 分析时长, 以及要使用的分析机, 之后提交即可.
等待状态变为reported说明已经分析完成,点击任务可查看分析报告
总体来说cuckoo还是一款比较完善且专业的开源沙箱分析系统, 对于研究分析恶意软件和应急响应人员来说都是一个很不错的选择
优缺点
优点:
缺点:
官方网站
官方文档
cuckoo仓库
cuckoo 2.0.7更新日志
开源沙箱Cuckoo Sandbox 的部署