记录下安装沙盒cuckoo的过程,差不多花费了一个星期,这中间遇到了各种各样的坑
首先是安装系统,我是原来的系统是win10,安装ubuntu版本是18.04 lts
Ubuntu 18.04官网下载地址:
https://releases.ubuntu.com/18.04/ubuntu-18.04.5-desktop-amd64.iso.torrent?_ga=2.21914808.2028854723.1605333772-1051256952.1605169591
下载好之后,在我的电脑里进行划分硬盘,可以参考下面帖子的划分硬盘及用u盘刻录等部分:
https://www.cnblogs.com/masbay/p/10745170.html
之后需要关闭safe boot,这个在win10的恢复选项里点击高级启动里的重新启动后可以找到主板的管理选项,其中就有safe boot的选项。不同的电脑可能不一样,如果有fast boot的选项那么也要一起关闭
接下来是通过u盘安装ubuntu,18.04版本我遇到的问题是
1.安装后进入界面卡死-解决方法:在安装的时候启用在线更新,开手机热点
2.亮度无法调节-解决方法:更新linux内核版本,但可能会和之后的安装冲突
3.按网上教程划分硬盘后,提示在指定区域无法安装-解决办法:划分磁盘后,安装进程会自动检测到存在windows的boot manager,然后选则系统的自带安装即可
注意!!!装好后先不要换阿里的源,也不要尝试获取root权限,我之后安装经常出现的问题就是突然wifi模块部件失效,在root权限下也会出现提示权限不够等等。网上提示是linux内核版本太低导致冲突的原因。
接下来先是安装python依赖部分
先apt-get install apparmor-utils
这个包需要先安装,因为它要求的python版本是3.6以下,因此需要先安装防止冲突。
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 mysql-server mysql-client libmysqlclient-dev
sudo apt-get install python-m2crypto
sudo apt install volatility
如果安装的包和之前冲突了,可以用aptitude这个包管理器来解决
sudo apt-get install aptitude
aptitude install <有冲突的包>
接下来安装mysql
注意:在最新版的mysql安装过程中,不会再提示手动设置root用户的密码,则需要用命令设置root初始密码:
sudo mysql_secure_installation
然后按照提示一步一步来即可。
另外, root连接需要sudo命令,否则会出现以下结果
$ mysql -uroot -p
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
解决方法:
$ sudo mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ service mysql restart
安装Cuckoo
Cuckoo推荐在虚拟环境中安装。virtualenv是一个创建隔绝的Python环境的工具,在之前的步骤中已经安装上了。
$ virtualenv venv
#以后启动也需要在通过venv启动
$ . venv/bin/activate (注意是 . 后面有空格)
(venv)$ pip install -U pip setuptools
(venv)$ pip install -U cuckoo
安装tcpdump
$ sudo apt-get install tcpdump apparmor-utils
$ sudo aa-disable /usr/sbin/tcpdump
$ sudo groupadd pcap
$ sudo usermod -a -G pcap simon
#simon = [ubuntu username]
#simon是当前的用户名,账户叫什么就换什么
#这一步要确定自己当前用户不是root,如果是root要通过su命令切回来,不然cuckoo会提示tcp权限不够
$ sudo chgrp pcap /usr/sbin/tcpdump
$ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump 启用root账户
#(如果系统里没有setcap命令,则需要安装libpcap包;
$ sudo apt-get install libcap2-bin)
#可以使用以下命令验证上一个命令的结果:
$ getcap /usr/sbin/tcpdump
之后下载file.master.tar.gz进行签名操作(可以到官方社区去下载,我下载好后传了个百度云)
链接:https://pan.baidu.com/s/1KpOPK96D_H67wi330THCYw
提取码:l05s
下载到ubuntu后,在之前的venv环境里用
cuckoo community --file master.tar.gz
来加载签名
接下来是安装virtualbox5.2
只能是5.2,因为高版本不支持cuckoo。我尝试了直接从官网下deb文件进行安装,但是会报错,通过apt-get方法最后成功安装
安装前需要确认电脑支持虚拟化,关闭了safeboot等
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" >> /etc/apt/sources.list.d/virtualbox.list'
sudo apt update
sudo apt-get install virtualbox-5.2
安装后大概率提示error,会提示缺少一个5.3.0-xxx版本的header,这时候根据报错信息补上
sudo apt-get -y install gcc make linux-headers-<提示缺少的版本> dkms
之后重新安装即可
sudo apt-get remove virtualbox-5.2
sudo apt-get install virtualbox-5.2
下载win7镜像作为靶机。注意使用的镜像不能大于4G,大于4G会报错
我用的win7镜像:
链接:https://pan.baidu.com/s/1jCo-KG4cHIPaIkhMgVtPoA
提取码:bw1b
下载好后就是安装win7虚拟机,输入激活码,设置用户,强烈建议虚拟机名字设为cuckoo1
之后需要给虚拟机增加下配置,不然速度会很慢
参考 https://blog.csdn.net/ass121/article/details/82561541
可以给虚拟机增加显存内存,处理器配置等等,只要不那么卡就行
接下来打开win7虚拟机,
以管理员身份运行cmd,输入net user administrator /active:yes
激活administrator,然后注销,以administrator这个用户名重新登录
(不这样做的话之后会cuckoo会提示init failed)
之后需要在win7里关闭防火墙,并开启后缀名显示
我的电脑->文件夹选项->常规选项,在显示所有文件夹里打勾,然后点击查看,在高级设置中找到隐藏已知文件类型的扩展名并去除勾,点击确定即可。
之后安装和本机交互的虚拟工具
选择Devices目录里的Insert Guest Additions CD Image这个选项,然后进虚拟机进行查看
双击进行安装即可,并在设置里把粘贴和文件拖动都设置为双向
进行网络配置:
在VirtualBox中全局工具->Host Network Manager中新建Host-Only虚拟网卡,默认是vboxnet0,IP为192.168.56.1(默认的地址),关闭DHCP服务。在配好host-only网卡后,需要再配一块nat模式的网卡,地址设为192.168.57.1,网卡为vboxnet1这样虚拟机才可以上网
之后在网络里把win7的ip设为192.168.56.101(101是cuckoo默认的),配置网关和掩码
弄好后确定虚拟机和ubuntu能互相ping通,且虚拟机能正常上网即可
之后用虚拟机下载python2.7运行并安装,地址:https://www.cr173.com/soft/22163.html
在配置的时候注意到customize这一步要把
最后的自动配置路径和特性全点上
之后继续配置win 7:
安装python2.7环境后
将Host机中~/.cuckoo/agent/agent.py文件拷贝到客户机里的系统开机启动目录中,显示隐藏文件夹
在Win7默认路径是C:\Users[username]\AppData\Roaming\MicroSoft\Windows\Start Menu\Programs\Startup
将后缀名改为pyw(使agent运行时没有GUI窗口)
重启win7,确保agent.pyw运行(在任务管理器中查看进程,或在命令行中执行netstat -an查看是否有8000端口的监听)
一切正常,关主机和虚拟机的防火墙后再拍摄快照
这里记录下virtualbox恢复快照的方法,virtualbox很贴心的提供了gui的拍摄快照界面,但是恢复快照需要通过命令行。。。
vboxmanage snapshot <虚拟机名称> list --details 来看能用的快照
vboxmanage snapshot <虚拟机名称> restore <快照名称>
最后配置
先用ifconfig 等来看网卡名称
将流量从虚拟机转发到主机
Ens160要换成自己网卡的名称
iptables -t nat -A POSTROUTING -o ens160 -s 192.168.56.0/24 -j MASQUERADE
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT
iptables -A FORWARD -j LOG
iptables -nL -v
#192.168.56.0这个网段是之前hostonly网卡的网段
#开启内核转发
$ echo 1 | sudo tee -a /proc/sys/net/ipv4/ip_forward
$ sudo sysctl -w net.ipv4.ip_forward=1
# 安装iptables-president,使iptables规则持久化,否则重启后会丢失规则
**#这一步最后在试用cuckoo成功无报错后再做!!!!ubuntu的iptables设置后再删除更新很麻烦,很可能会让网络部分崩掉**
apt-get install iptables-persistent
修改cuckoo配置文件
$ gedit ~/.cuckoo/conf/cuckoo.conf
照着下面改
version_check = no
[resultserver]
upload_max_size = 314572800
gedit ~/.cuckoo/conf/virtualbox.conf
[virtualbox]
mode = gui
machines = cuckoo1
[cuckoo1]
#注意前两个cuckoo1是类似于标签,最后一个cuckoo1才是虚拟机实际的名字,为防止麻
#烦最好统一成cuckoo1,cuckoo2这样的
label = cuckoo1
platform = windows
ip = 192.168.56.101
snapshot = snapshot1
gedit ~/.cuckoo/conf/reporting.conf
[mongodb]
enabled = yes
host = 127.0.0.1
port = 27017
db = cuckoo
store_memdump = yes
paginate = 100
之后可以提交文件进沙箱里查看结果
首先开启mongodb服务
$sudo systemctl enable mongodb
$systemctl start mongodb
提交样本:
$ cuckoo submit /tmp/sample1.exe (你要提交的文件)
Success: File "/tmp/sample1.exe" added as task with ID #1
$ cuckoo
#运行cuckoo分析样本
分析结束后结果会储存在.cuckoo的storage文件夹下
其他报错解决
https://blog.csdn.net/niatruc/article/details/108576818