Cuckoo
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虚拟化嵌套
安装依赖
由于在具有中国特色的互联网环境下, 建议在安装下面各个依赖和组件时使用科学上网~
1
| 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
|

安装pip
1 2
| curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -O
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -O sudo python get-pip.py
|

安装VirtualBox
注意在安装VirtualBox时,尽量选择>5.1的版本.虽然5.1也可以正常使用,但在cuckoo启动时会显示VirtualBox存在风险
1 2 3 4 5 6
| 下载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 安装
下载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
Volatility是一款开源的内存取证分析工具,支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证方式
1 2 3 4
| git clone https://github.com/volatilityfoundation/volatility.git cd volatility sudo python setup.py build
git clone https://github.com/volatilityfoundation/volatility.git cd volatility sudo python setup.py build sudo python setup.py install
|


安装python依赖包
1
| sudo -H pip install distorm3==3.4.4 yara-python==3.6.3 pydeep openpyxl ujson jupyter pip setuptools
|


组件设置
1 2 3
| sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump getcap /usr/sbin/tcpdump
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump getcap /usr/sbin/tcpdump sudo aa-disable /usr/sbin/tcpdump
|

安装cuckoo
1 2
| sudo -H pip install -U cuckoo cuckoo
|


安装完成后运行一次cuckoo让其生成默认配置文件
默认配置位于/home/xxxx/.cuckoo/conf

至此, cuckoo主体已安装完成,要想cuckoo正常工作,还需要对虚拟网络,防火墙等进行一系列设置.
虚拟网络设置
1 2 3 4
| 创建仅主机虚拟网络 vboxmanage hostonlyif create 设置虚拟网络网关地址 vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
|

将虚拟网络安装为服务并设置为自启动
1 2 3 4 5
| sudo mkdir /opt/systemd/ sudo nano /opt/systemd/vboxhostonly 写入以下内容,保存退出
|

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cd /opt/systemd/ sudo chmod a+x vboxhostonly 创建服务 sudo touch /etc/systemd/system/vboxhostonlynic.service
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
|

1 2 3 4
| 重载服务 systemctl daemon-reload 设置虚拟网络自启动 systemctl 重载服务 systemctl daemon-reload 设置虚拟网络自启动 systemctl enable vboxhostonlynic.service
|

配置iptables-persistent
1 2 3 4 5 6 7
| 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 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配置文件
cuckoo.conf

memory_dump=yes
忘记截图了
auxiliary.conf

virtualbox.conf

processing.conf

memory.conf

reporting.conf

安装配置分析机
在VirtualBox中安装Windows7 unlimited sp1 x64, 安装过程此处不再赘述
注意
- 分析机标签名称,ip和快照要与配置文件中一致
- 快照要使用运行中快照
- 设置静态ip后检查是否可以正常连接互联网,如不能联网检查iptables配置
- 分析机网络选择HostOnly
组策略配置
1
| windows设置->安全设置->本地策略->安全选项->安全选项->用户账户控制: 管理员批准模式中管理员的提升权限的行为 下选择windows设置->安全设置->本地策略->安全选项->安全选项->用户账户控制: 管理员批准模式中管理员的提升权限的行为 下选择"不提示,直接升"
|

1
| windows设置->安全设置->本地策略->安全选项->安全选项->用户账户控制:检测应用程序安装并提升提升,下选择windows设置->安全设置->本地策略->安全选项->安全选项->用户账户控制:检测应用程序安装并提升提升,下选择"禁用"
|

1
| windows设置->安全设置->本地策略->安全选项->安全选项->用户账户控制:以管理员批准模式运行所有管理员,选择windows设置->安全设置->本地策略->安全选项->安全选项->用户账户控制:以管理员批准模式运行所有管理员,选择"禁用"
|

安装python 2.7.18和pillow
安装python时注意勾选添加到环境变量
由于中国特色网络原因需要换pip源
1 2 3 4
| [global] timeout = 6000 index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[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
1 2 3 4 5 6 7 8
| 拉取最新的规则库 cuckoo community 启动cuckoo cuckoo 启动本地web管理页面 cuckoo web 远程访问web管理页面 cuckoo web runserver 0.0.0.0:8000
|

启动cuckoo

启动web页面

默认管理地址http://localhost:8000

输入配置的密码即可访问

样本测试
笔者以Synaptics
蠕虫病毒进行测试

上传样本后选择要分析的行为, 分析时长, 以及要使用的分析机, 之后提交即可.

等待状态变为reported说明已经分析完成,点击任务可查看分析报告


总结
总体来说cuckoo还是一款比较完善且专业的开源沙箱分析系统, 对于研究分析恶意软件和应急响应人员来说都是一个很不错的选择
优缺点
优点:
- 开源且免费,对于有特殊需求的人群可以很好的进行定制化
- 支持虚拟化类型多,可以跨平台使用
- 分析较为全面,几乎可以满足需求
- 不需要太高的硬件要求
- 支持导出报告
缺点:
安装和配置过于繁琐, 稍有差错会导致运行失败
英文界面, 需要使用者具有一定的英语基础
内存分析时间太长, 基本都在半小时左右
更新迭代慢(最新版本为2019年发布)
默认的规则, 样本库对恶意软件的支持较少
对于新的恶意软件需要使用者自己编写yara规则
不支持Python3
参考
官方网站
官方文档
cuckoo仓库
cuckoo 2.0.7更新日志
开源沙箱Cuckoo Sandbox 的部署