参考资料:(用到的材料——cuckoo官方文档、教程、博客)
虚拟环境配置脚本
教程 : 油站 Setting Up Cuckoo Sandbox v2.0.7 on Ubuntu 18.04.4
博客
cuckoo官方文档
一、
- 官方文档里用到的,主要是安装如下的依赖包,以及各类配置,官网还有一些分析网络环境的路由规则
#依赖包 $ sudo apt-get install python python-pip python-dev libffi-dev libssl-dev $ sudo apt-get install python-virtualenv python-setuptools $ sudo apt-get install libjpeg-dev zlib1g-dev swig $ sudo apt-get install mongodb $ sudo apt-get install postgresql libpq-dev #配置virtualbox的安装源,并安装 $ echo deb http://download.virtualbox.org/virtualbox/debian xenial contrib | sudo tee -a /etc/apt/sources.list.d/virtualbox.list $ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install virtualbox-5.2 #安装和配置tcpdump $ sudo apt-get install tcpdump apparmor-utils $ sudo aa-disable /usr/sbin/tcpdump #配置tcpdump $ sudo groupadd pcap $ sudo usermod -a -G pcap cuckoo#这里cuckoo是用户名,可以自定义 $ sudo chgrp pcap /usr/sbin/tcpdump $ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump #检查是否配置妥当 $ getcap /usr/sbin/tcpdump #出现这个:/usr/sbin/tcpdump = cap_net_admin,cap_net_raw+eip $ sudo apt-get install swig $ sudo pip install m2crypto#原本有==0.24.0,可去掉 #接下来安装和配置虚拟机 sudo apt install virtualbox#测试安装的是virtualbox5.2 sudo usermod -a -G vboxusers cuckoo#将使用cuckoo的用户加入到vboxusers组 sudo apt install virtualenvwrapper #然后跑这个[脚本](https://gist.github.com/jstrosch/de20131dda2aac5cd1116dd44b8f2474) #跑完之后 source ~/.bashrc #然后创建虚拟环境,官方推荐将cuckoo的环境放在虚拟环境中 mkvirtualenv -p python2.7 cuckoo-env#cuckoo现在只支持python2.7 #继续确保一下依赖完整 pip install -U pip setuptools #然后就可以安装cuckoo了 pip install -U cuckoo #接下来安装虚拟机iso wget https://cuckoo.sh/win7ultimate.iso#速度有点慢,可以通过别的下载工具下载弄到虚拟机里 mkdir /mnt/win7#创建一个挂载点 #将挂载点的拥有者改为cuckoo,即使用cuckoo的用户的用户和组中 sudo chown cuckoo:cuckoo /mnt/win7/ sudo mount -o ro,loop win7ultimate.iso /mnt/win7#将ISO镜像文件挂载到挂载点 #再确保一下依赖装了没有,在前面的步骤应该基本上都安装完了 sudo apt-get -y install zlib1g-dev libjpeg-dev python-pip python-virtualenv python-setuptools swig #先装vmcloak pip install -U vmcloak #首先创建一个网络配置 vmcloak-vboxnet0 #安装虚拟机 vmcloak init --verbose --win7x64 win7x64base --cpus 2 --ramsize 2048#这里最好不要配单核1G这种低配置环境,因为恶意代码很可能会检测到 #先复制一下虚拟环境然后再安装软件和创建快照 vmcloak clone win7x64base win7x64cuckoo #可以看看vmcloak支持对系统直接安装什么包 vmcloak list deps #举个例子,安装个ie11 vmcloak install win7x64cuckoo ie11 #对纯净的环境创建一些快照,--count指定创建几个快照,后面的ip会在创建的快照中递增 vmcloak snapshot --count 2 win7x64cuckoo 192.168.56.101 #查看创建好的虚拟机 vmcloak list vms #目前基本准备好了,现在对cuckoo初始化,并进行配置 cuckoo init#会初始化一系列文件夹和文件在~/.cuckoo中,可以通过--cwd配置cuckoo的工作文件夹 cuckoo community --force#同步cuckoo最新的签名
二、
- 接下来主要配置这几个.conf文件:cuckoo.conf, route.conf, reporting.conf, virtualbox.conf
- route将internet配成适配器的名字,通过ip a查看,是类似ens33, ens16的名字
- reporting将mongodb配置enable为yes,原本默认时no;另外需要将singlefile中的选项配置为yes,否则看不了报告。
- virtualbox将mode配置为gui,原本时headless,gui可以看到样本在虚拟机的活动。另外,需要将刚刚创建好的几个虚拟机快照添加到这里,快速的脚本为:
while read -r vm ip; do cuckoo machine --add $vm $ip; done < <(vmcloak list vms)
- 配置网络
sudo sysctl -w net.ipv4.conf.vboxnet0.forwarding=1 sudo sysctl -w net.ipv4.conf.eth0.forwarding=1 #其他一些网络规则 sudo iptables -t nat -A POSTROUTING -o eth0 -s 192.168.56.0/24 -j MASQUERADE sudo iptables -P FORWARD DROP sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT
三、
- 使用
- cuckoo-rooter
cuckoo rooter --sudo -g cuckoo#这里cuckoo应该是指组,但是有时候不行,可以都试试用户名或者组
- cuckoo
cuckoo
- cuckoo web
然后在浏览器的localhost:8080看到提交样本,接收结果的gui界面这里需要将reporting.conf中的mongodb的enable项设置为yes,然后安装了mongodb,测试方法是命令敲mongo可以连接到mongodb服务 cuckoo web --host 127.0.0.1 --port 8080
- cuckoo clean 命令可以重置环境
- cuckoo-rooter
四、
- 遇到的问题:
-
too many file open / the maximum number of open files is low
官方提供的解决方案,好像没啥效果或者打开方式不太对,不过这个问题暂时不影响使用,后面再解决 -
cuckoo rooter的问题,说是没有将cuckoo的user加入到正确的组
解决方法,cuckoo rooter --sudo --group 这里试一下放用户名 -
如果是自己安装的系统,比如自己装了个win10,需要自己安装python2.7和agent.py和
-
解决上述问题的过程中还遇到了一个问题,也记录一下。就是不小心把当前用户移到cuckoo组,没有保留原来的组成员身份,就是usermod -g 而不是-a -G选项,导致sudo失效,而且因为环境是新装的,su没有设置密码。所以非常尴尬,没法通过sudo passwd来设置root密码,将当前用户加入sudo或sudofile中。
解决方法:进系统的时候按shift,进入recovery mode,列表选root,设置对系统的写权限mount –o rw,remount /
回车
然后passwd root
改好了密码重启,进系统之后重新将用户加入到sudo中,sudo usermod -aG sudo [username]
或者
su - visudo #加入下面这一行 <username> ALL=(ALL) ALL