主机:Ubuntu 16
客机:Windows 7
主要分为主机(host)和客机(guest)
下面我会按顺序来进行介绍,请按顺序进行配置。
cuckoo主要组件完全用python编写,需要安装python和一些软件包,但是他只支持python2.7
$ 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 -y libtiff5-dev libjpeg8-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk
安装MongoDB是为了使用Django的web界面
$ sudo apt-get install mongodb
这里使用的是virtualbox,virtualbox最主要的作用是需要在里面搭建Windows 7虚拟机也就是客机。
$ 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
他的安装是为了转储恶意软件在执行过程中执行的网络活动
$ sudo apt-get install -y apparmor-utils
# 若使用预设的CWD目录(~/.cuckoo),則要禁用AppArmor对tcpdump的安全配置,否則AppArmor会阻止PCAP文件的创建
$ sudo aa-disable /usr/sbin/tcpdump
$ sudo apt-get install tcpdump
# tcpdump执行需要root权限,若不想让Cuckoo使用root权限執行,那么可以使用下列指令設定
$ 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
# 若沒有setcap指令,可以使用下列指令安裝
$ sudo apt-get install libcap2-bin
cuckoo利用Volatility检查样本是否有使用逃避Cuckoo分析的rootkit技术
$ sudo apt-get install -y volatility
M2Crypto仅在安装了SWIG后才支持该库。
$ sudo apt-get install swig
如果SWIG存在,则可以安装M2Crypt,首先使用以下方式
$ sudo pip install m2crypto==0.24.0
如果报错说 error: command ‘x86_64-linux-gnu-gcc’ failed with exit status 1,则尝试
sudo apt-get install python-dev \
build-essential libssl-dev libffi-dev \
libxml2-dev libxslt1-dev zlib1g-dev \
python-pip
如果依旧报相同的错误,则使用以下代码:
sudo apt install python2.7
python2.7 -m pip install M2Crypto
是可选择安装项,位CUCKOO web界面中的远程控制功能提供RDP,VNC和SSH的转换层
$ sudo apt install libguac-client-rdp0 libguac-client-vnc0 libguac-client-ssh0 guacd
创建一个新用户
$ sudo adduser cuckoo
确保新用户属于“vboxusers”组
$ sudo usermod -a -G vboxusers cuckoo
安装cuckoo
建议在virtualenv中安装
$ virtualenv venv
$ . venv/bin/activate
(venv)$ pip install -U pip setuptools
(venv)$ pip install -U cuckoo
安装完成后先不要启动,需要提高文件限制。
参考Increase “Open Files Limit”进行操作
需要注意:在第一项增加用户权限中,如果你不是用root身份进行安装,要添加自己用户名的权限,把**改成自己的用户名,或者直接增加两行自己用户名。如果所要更改的文件无法修改,则切换使用root权限进行修改。
现在可以在venv中运行cuckoo 了。
cuckoo -d
成功界面如下:
检查是否生成CWD文件 ,文件路径: /home/username(你的用户名)/.cuckoo/agent/agent.py 如果username下没有出现.cuckoo文件,因为它是隐藏文件可以使用快捷键ctrl+H显示隐藏文件。
下面介绍客机Windows 7。首先要在Ubuntu的vitrualbox中创建一个虚拟机,设定为windows 7 64位操作系统。
在windows 7中在官网中找到python2.7安装包进行安装,一直下一步就可以。完成后配置环境变量:
添加python的安装路径,路径前一定要加分号。
点击开始按钮输入cmd.在控制台测试python是否安装成功。输入python
此功能用于截屏,cuckoo生成报告中会有windows 7的截图。
首先进到C:\Python27\Scripts路径下,在此路径下安装pillow。
>cd C:\Python27\Scripts
>pip install Pillow
Collecting Pillow
Downloading Pillow-4.3.0-cp27-cp27m-win32.whl (1.3MB
100% |################################| 1.3MB 114k
Collecting olefile (from Pillow)
Downloading olefile-0.44.zip (74kB)
100% |################################| 81kB 145kB
Installing collected packages: olefile, Pillow
Running setup.py install for olefile ... done
Successfully installed Pillow-4.3.0 olefile-0.44
这时我们前面寻找的cuckoo中生成的CWD文件就起作用了。把前面主机中找到的agent.py文件上传到windows 7中,建议用send anywhere比较快速。把上传成功的agent.py文件放进C:\Users[USER]\AppData\Roaming\MicroSoft\Windows\Start Menu\Programs\Startup\ 下,并把后缀名改为.pyw。其中users是指用户名。
使用Administrator权限启动cmd,并依序在cmd中输入以下指令
[USERNAME]和[PASSWORD]需替换为登入的Windows user与对应的password
>reg add "hklm\software\Microsoft\Windows NT\CurrentVersion\WinLogon" /v DefaultUserName /d [USERNAME] /t REG_SZ /f
>reg add "hklm\software\Microsoft\Windows NT\CurrentVersion\WinLogon" /v DefaultPassword /d [PASSWORD] /t REG_SZ /f
>reg add "hklm\software\Microsoft\Windows NT\CurrentVersion\WinLogon" /v AutoAdminLogon /d 1 /t REG_SZ /f
>reg add "hklm\system\CurrentControlSet\Control\TerminalServer" /v AllowRemoteRPC /d 0x01 /t REG_DWORD /f
>reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v LocalAccountTokenFilterPolicy /d 0x01 /t REG_DWORD /f
在virtualbox中添加一块网卡,管理——主机网络管理器,按照下面信息进行设置。
设置windows 7网络,设置为Host-Only。界面名称为刚刚设置的网卡。
进入Windows 7 系统,设置win7 ip网络
检查是否配置成功,主机和客机是否能通信。
主机中操作
$ ping 192.168.56.101
客机中操作
>ping 192.168.56.1
这是在Ubuntu中的操作,因为win7无法上网,所以要通过主机才能访问网络,所以需要以下操作;
流量转发服务:
$ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
再运行:
sudo sysctl -p /etc/systl.conf
使用iptables提供NAT机制
注意:其中eth0为Ubuntu中的网卡名称,需要提前查看自己Ubuntu中的网卡名称然后修改eth0
$ 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
$ sudo iptables -A POSTROUTING -t nat -j MASQUERADE
$ sudo vim /etc/network/interfaces
# 於文件最後新增下列兩行
pre-up iptables-restore < /etc/iptables.rules # 開機時啓動iptables規則
post-down iptables-save > /etc/iptables.rules # 關機前保存當前所有的iptables的規則
执行:
sudo apt-get install iptables=persistent
sudo netfilter-persistent save
DNS服务
$ sudo apt-get install -y dnsmasq
$ sudo service dnsmasq start
在win7中查看是否有网络
ping www.baidu.com
并要保证agent.py文件时运行状态,可以在cmd控制台启动,成功后对win7进行快照 名字取为snapshot
现在我们再次转到Ubuntu中
conf档案放置在Ubuntu中得CWD/conf中,预设在~/.cuckoo/conf
配置virtualbox.conf
$ vim virtualbox.conf
machines = cuckoo1 # 指定VirtualBox中Geust OS的虛擬機名稱
[cuckoo1] # 對應machines
label = cuckoo1 .
platform = windows
ip = 192.168.56.101 # 指定VirtualBox中Geust OS的IP位置
snapshot =snapshot
配置reporting.conf
$ vim reporting.conf
[jsondump]
enabled = yes # no -> yes
indent = 4
calls = yes
[singlefile]
# Enable creation of report.html and/or report.pdf?
enabled = yes # no -> yes
# Enable creation of report.html?
html = yes # no -> yes
# Enable creation of report.pdf?
pdf = yes # no -> yes
[mongodb]
enabled = yes # no -> yes
host = 127.0.0.1
port = 27017
db = cuckoo
store_memdump = yes
paginate = 100
配置cuckoo.conf
version_check = no
machinery = virtualbox
memory_dump = yes
[resultserver]
ip = 192.168.56.1
port = 2042
进入venv中,输入命令启动cuckoo服务:
cuckoo
启动成功后,另外开出一个控制台,启动cuckoo web服务
cuckoo web
启动成功后,会给出一个网站,用浏览器进行打开:
上传文件就可以进行分析了。在分析之前首先要确认win7是否是关闭状态。到底cuckoo就此配置完毕。