在Kali Linux 2020系统中安装、配置和使用cuckoo沙箱

您所在的位置:网站首页 debian怎么用沙箱启动程序 在Kali Linux 2020系统中安装、配置和使用cuckoo沙箱

在Kali Linux 2020系统中安装、配置和使用cuckoo沙箱

2024-07-16 09:11| 来源: 网络整理| 查看: 265

今天为大家介绍在kali linux 2020系统中cuckoo软件及沙箱的安装、配置和使用方法。

主操作系统:kali linux 2020

cockoo版本:2.0.7

虚拟化软件:virtualbox 6.1

虚拟系统:windows 7、ubuntu 18.04

硬件平台:小米笔记本电脑

一、在kali linux系统中部署cuckoo软件(一)cuckoo简介

1、什么是沙箱

工作中很多时候需要自己对一些可疑程序进行检测,可以选择VT等在线检测平台,也可以使用自己搭建的开源沙箱进行检测。所谓沙箱(sandbox),是一种将未知、不可信的软件隔离执行的安全机制,一般用来将不可信软件放在隔离环境中自动地动态执行,然后提取其运行过程中的进程行为、网络行为、文件行为等动态行为,安全研究员可以根据这些行为分析结果对恶意软件进行更深入地分析。

2、Cuckoo是什么?

Cuckoo是一款用Python编写的开源的自动化恶意软件分析系统,它的主要功能有:

(1)跟踪记录恶意软件所有的调用状况;

(2)恶意软件文件行为:恶意软件执行过程中创建新文件、修改文件、删除文件、读取文件或下载文件的行为;

(3)获取恶意软件的内存镜像;

(4)以PCAP格式记录恶意软件的网络流量;

(5)获取恶意软件执行过程中的屏幕截图;

(6)获取执行恶意软件的客户机的完整内存镜像。

3、cuckoo可以分析什么文件?

Cuckoo可以分析的文件类型包括但不限于:

Windows可执行文件

DLL文件

PDF文件

MSOffice文件

URL和HTML文件

PHP脚本文件

CPL文件

VB脚本文件

ZIP压缩包

JAR文件

Python脚本文件

APK文件

ELF文件

4、Cuckoo的架构

Cuckoo的架构也比较简单,在Host机上运行Cuckoo主程序,多个Guest机通过虚拟网络与Host机相连,每个Guest机上有一个Cuckoo Agent程序,用来做Cuckoo的监控代理,结构图如下:

(二)kali linux安装cuckoo相关的软件

1、安装python库

apt-get install python python-pip python-dev libffi-dev libssl-dev

apt-get install python-virtualenv python-setuptools

apt-get install libjpeg-dev zlib1g-dev swig

2、安装mongodb

为了使用基于djangle的web接口,需要安装mongodb。但是kali linux更新源中没有mongodb,需要引用ubuntu的更新源才能安装,具体方法如下:

(1)访问网站

https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/

选择适当版本的ubuntu,例如对于kali linux 2020系统,选择ubuntu 19.10:

(2)将ubuntu更新源的信息写入kali的配置文件

cd /etc/apt/sources.list.d

touch ubuntu.list //创建文件

vi ubuntu.list //编辑配置文件,加入下面的内容

debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/eoan main restricted universe multiverse

debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/eoan-updates main restricted universe multiverse

debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/eoan-backports main restricted universe multiverse

debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/eoan-security main restricted universe multiverse

保存退出

(3)安装软件

apt update

apt search mongodb //搜索特定的软件,使用了ubuntu的更新源则可以搜索到mongodb了

apt install mongodb mongodb-clients mongodb-server//安装软件

(4)还原更新源

vi /etc/apt/sources.list.d/ubuntu.list //编辑文件

注释掉所有的行:

保存退出。

3、安装postgresql

apt install postgresql libpq-dev

4、安装virtualbox

apt install virtualbox virtualbox-dkms virtualbox-ext-pack virtualbox-qt

5、安装tcpdump

apt-get install tcpdump//安装tcpdump,若已安装则更新

groupadd pcap//创建pcap组

usermod -a -G pcap user1 //将user1用户加入pcap组

chgrp pcap /usr/sbin/tcpdump//修改tcpdump可执行文件的属组,这样user1用户可以执行它(cuckoo以user1用户身份运行)

apt-get install libcap2-bin//为使用setcap,需安装libcap2-bin

setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

6、安装volatility

apt install volatility //默认已安装在kali中,用于内存dump取证。

7、安装M2Crypto

pip install m2crypto//用于实现加密连接

(三)账户管理

1、将当前的user1用户添加到vboxusers组

usermod -a -G vboxusers user1

2、提高允许打开文件的数量

/etc/security/limits.conf//编辑配置文件,将下面的内容粘贴到文件末尾

* hard nofile 500000

* soft nofile 500000

root hard nofile 500000

root soft nofile 500000

保存退出,重新登录后生效。

(四)安装cuckoo

pip install -U pip setuptools//安装setuptools

pip install -U cuckoo//安装cuckoo

(五)CWD(当前工作目录)

1、什么是CWD

从cuckoo 2.0.0开始有了CWD的概念。CWD所对应的目录包含了配置组件、生成的数据、cuckoo的检测结果等数据。包括但不限于如下内容:

Configuration

Cuckoo Signatures

Cuckoo Analyzer

Cuckoo Agent

Yara rules

Cuckoo Storage (where analysis results go)

CWD较cuckoo使用的传统方式有一些优势。

2、使用CWD

cuckoo -d //首次运行cuckoo命令,将自动进行CWD检查。

例如以user1身份运行cuckoo,默认的CWD为~/.cuckoo,即/home/user1/.cuckoo/。

CWD是可以配置的。下面列出了cuckoo判断CWD的顺序:

通过命令行选项--cwd(例如,--cwd ~/.cuckoo)

通过CUCKOO环境变量(例如,export CUCKOO=~/.cuckoo)

通过CUCKOO_CWD 环境变量

判断当前目录是否CWD(例如cd ~/.cuckoo)。假设在该目录中创建了CWD

默认的~/.cuckoo

如果以user1身份运行cuckoo,则不必指定CWD,默认使用/home/user1/.cuckoo/。那么为什么还要需要CWD的概念呢?原因是这样的,我们可以通过指定不同的CWD,在同一台主机上使用不同的配置同时运行多个cuckoo实例。例如想同时进行windows和安卓分析,可以指定不同的CWD,就不必再反复修改配置了。

(六)配置文件

1、cuckoo主要使用的配置文件

cuckoo.conf:主要的配置文件,最主要的是machinery,用于指定我们使用的虚拟机配置文件,默认是virtualbox。该文件同样位于conf目录下,名字是virtualbox.conf。另外一个比较重要的配置项是[resultserver]的ip和port,用于指定接收分析结果的服务器。该地址必须能够让虚拟机访问到,一般设置为虚拟网卡的地址,比如前面说过的Host-only虚拟网卡vboxnet0的IP地址192.168.56.1(也可以自己改成其他的),端口默认即可;

auxiliary.conf:辅助组件配置模块,可以配置tcpdump/mitm/sniffer等;

memory.conf:内存分析配置模块,主要用来配置Volatility的行为;

processing.conf:核心处理组件配置文件,可以开启/关闭行为分析、缓冲区分析、内存分析、截屏、Snort、字符串提取、VirusTotal辅助分析等等功能;

.conf:虚拟化配置文件,包括virtualbox/vmware/kvm/qume等。在实际的配置当中,根据自己使用的虚拟化环境,配置其中一个即可,同时,采用的这个配置文件也必须在cuckoo.conf的machinery字段指定。这里的配置选项都是针对特定虚拟化平台的,很多选项只适用于某些平台。前面我们用的是virtualbox.conf,其中mode指定virtualbox的运行模式,path指定VBoxManage的绝对路径,machines指定我们使用的虚拟机的名字(多个虚拟机需要用半角逗号隔开),platform指定虚拟客户机的系统类型,ip指定虚拟机的ip地址;

reporting.conf:报告生成模块的配置文件,用来开启jsondump或者HTML Report,还可以配置MongoDB存储分析结果(Web控制台会用到)。

2、配置cuckoo.conf

重要的参数:

[cuckoo]段的machinery:

[resultserver]段的ip和port:

[database]段的connection:

database默认为sqlite,根据需要指定数据库连接字符串。我们做测试使用默认即可。

3、配置auxiliary.conf

auxiliary模块是持续进行恶意样本分析的脚本,这个配置文件定义它们的选项。保持默认即可。

4、配置virtualbox.conf

需要修改的参数:

machines = cuckoo1 //值在virtualbox.conf中唯一即可,不必设置为虚拟机名称

[cuckoo1] //指定cuckoo1虚拟机的配置

label = win7x64 //virtualbox中的虚拟机名称

ip = 192.168.56.101 //与虚拟机中的IP地址配置相同(虚拟机需要设置固定IP地址)

resultserver_ip = 192.168.56.1 //指定host的IP地址

resultserver_port = 2042 //指定host的端口

5、配置memory.conf

要使用volatility,需要:

在$CWD/conf/processing.conf文件中启用volatility

在$CWD/conf/cuckoo.conf文件中启用Enable memory_dump

6、配置reporting.conf

[mongodb]

enabled = yes

7、其它配置文件保持默认即可。

(七)路由配置

1、为什么要允许虚拟机访问互联网

为了让恶意软件不对工作环境造成负面影响,并且虚拟机可以被分析者访问,应使虚拟机工作在host-only模式。但是这种网络模式无法满足正常的自动化恶意软件分析的要求,因为处于Host-only模式的虚拟机无法访问互联网,而很多恶意软件都需要访问网络才可以正常运行。所以还需要vboxnet0这块网卡具有代理上网的功能,使host-only网络中的虚拟机可以通过这块虚拟网卡访问互联网。如果要满足这个需求,需要在Ubuntu Host机上做两个操作:开启流量转发、用iptables做地址转换(NAT)规则。

2、host(kali linux)开启流量转发

vi /etc/sysctl.conf//编辑配置文件

net.ipv4.ip_forward=1

保存退出

sysctl -p /etc/sysctl.conf //使配置生效

3、host(kali linux)设置地址转换(NAT)规则

iptables -A FORWARD -owlan0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT//如果使用有线网卡则是-o eth0

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A POSTROUTING -t nat -j MASQUERADE

但是iptables这样设置也只是临时的,系统重启之后这些规则就会失效,如果想系统重启这些规则仍然可用,可以做以下处理:

编辑网络配置文件/etc/network/interfaces,在文件末尾添加以下两行:

pre-up iptables-restore < /etc/iptables.rules//开机时启用iptables规则

post-down iptables-save > /etc/iptables.rules//关机前保存当前所有iptables规则

这样一来,kali关机前会把iptables规则备份到/etc/iptables.rules文件中,每次开机都从/etc/iptables.rules读取规则并应用。

配置好之后,虚拟机就可以通过vboxnet0来访问互联网了。

二、windows 7虚拟机配置为cuckoo沙箱(一)创建虚拟机

1、在虚拟机中安装64位windows 7系统

安装过程略。

设置虚拟机工作在host-only网络模式:

2、虚拟机内设置固定IP地址

3、验证网络访问

由于在host中配置了IP转发和地址转换,因此在虚拟机内可以访问互联网。

(二)虚拟机中的软件安装

1、安装python和第三方库

下载安装2.7版本的python。安装后可能需要将python可执行文件的路径手工写入PATH环境变量。如果python 2.7安装在系统盘,使用下面的方法将可执行文件路径加入PATH:

系统属性—高级—环境变量—系统变量,选择path变量,点击“编辑”按钮。在原有内容之后加入下面的信息(注意使用分号作为分隔符):

;%systemdrive%\Python27\;%systemdrive%\Python27\Scripts\

echo %path% //查看环境变量配置效果

pip install pillow //在线安装pillow,cuckoo用其在虚拟机中截图

2、安装应用软件

浏览器、PDF阅读器、office套件、7zip、JDK、VC2015运行库、dotnet框架等。

过程略。

3、部署cuckoo代理程序

cd $CWD/agent //host上的操作,查看agent目录中的文件

将agent.py文件拷贝到Win7虚拟机的系统开机启动目录中:

C:\Users\administrator\AppData\Roaming\MicroSoft\Windows\Start Menu\Programs\Startup\

把agent.py后缀改成agent.pyw,这样程序启动就不会有GUI窗口了。

重启一下,测试能否自动运行:

进程列表中存在pythonw.exe,说明代理程序已經运行了。

(三)虚拟机中的系统配置

1、启用administrator账户

windows 7系统安装时创建了一个账户,而administrator账户是禁用的。沙箱工作时应使用最高权限账户,避免应用程序因权限不足造成其恶意行为无法表达。

2、关闭windows功能

(1)禁用windows自动更新

(2)关闭windows防火墙

(3)关闭UAC

3、设置用户自动登录

control userpasswords2 //设置administrator用户自动登录

(四)拍摄虚拟机快照

接下来需要对配置好的客户机建立一个快照。每次Cuckoo调用客户机分析完一个恶意样本之后,会把虚拟机恢复到这个快照的状态。

保存系统快照的时候有一点需要注意:确保在系统正常运行、且agent.pyw无界面运行的时候,执行系统快照。

(五)验证虚拟机功能

1、启动cuckoo程序

cuckoo //启动cuckoo主程序

cuckoo web //打开新的命令行窗口,启动cuckoo的web服务

http://localhost:8000///访问cuckoo的web界面

2、提交一个网址

通过命令行或者网页方式向cuckoo提交一个URL,如果能得到合理的结果,则说明cuckoo运行正常。

cuckoo submit –urlhttp://www.sina.com.cn//命令行提交URL

提交成功,那么是否能够进行分析呢?浏览器访问下面的网址:

http://127.0.0.1:8000/analysis/

查看cuckoo的分析结果:

可以看到检测的结果,说明cuckoo的主程序和虚拟机工作正常。

至此,windows 7系统作为cuckoo的虚拟机就配置完成了。

三、ubuntu 18.04虚拟机配置为cuckoo沙箱(一)创建虚拟机

1、在虚拟机中安装64位ubuntu 1804系统

过程略。

设置虚拟机工作在host-only网络模式。

2、虚拟机内设置固定IP地址

(1)配置IP地址

vi /etc/network/interfaces //编辑网络配置文件,加入下面的内容

auto enp0s3

iface enp0s3 inet static

address 192.168.56.102

netmask 255.255.255.0

network 192.168.56.0

broadcast 192.168.56.255

gateway 192.168.56.1

保存退出

systemctl restart networking//重启网络服务后生效

注意IP地址不要与其它虚拟机有冲突(前面的windows虚拟机配置为192.168.56.101)。

(2)配置dns服务器

vi /etc/resolv.conf //编辑配置文件,加入dns服务器地址

3、验证网络访问

由于在host中配置了IP转发和地址转换,因此在虚拟机内可以访问互联网。

(二)虚拟机中的软件安装

1、安装python

apt install python //用于执行cuckoo的代理程序agent.py。

2、安装必要的软件

apt-get install systemtap gcc patch linux-headers-$(uname -r)//安装依赖性软件

apt install net-tools //包含ifconfig等程序

3、安装内核调试符号

//导入安装源的key

apt-key adv –keyserver keyserver.ubuntu.com –recv-keys C8CAB6595FDFF622

//添加更新源

codename=$(lsb_release -cs)

tee /etc/apt/sources.list.d/ddebs.list



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3