Ubuntu20.04配置CuckooSandbox环境
Ubuntu20.04配置CuckooSandbox环境
因为最近要做恶意软件分析,阅读论文发现动态分析的效果普遍比静态分析的效果要好一些,所以需要搭建一个动态分析的环境,查阅资料发现Cuckoo Sandbox是不错的自动化分析环境,但是搭建起来还是比较复杂的,主要是在配置虚拟机环境以及网络配置方面。
基础环境
文中的环境是Ubuntu 20.04 Server,也就是服务器版,后来为了配置虚拟机尝试过GNOME还有xfce4桌面环境,其实纯服务器环境即可完成配置,但是在配置虚拟机环境时可能会卡,所以还是有必要装一个桌面环境的。
在配置环境的时候建议配置一个新用户出来,Cuckoo官方不建议使用root权限搭建环境,最好是配置一个有sudo权限的用户,在本文中我配置的新用户名为Czy,注意要使用有sudo权限的用户创建,比如root等,对了别忘了在创建好新用户后在/etc/passwd将创建用户的默认的bash环境/bin/sh更改为/bin/bash,默认的/bin/sh在登录后并不是特别好用。
sudo useradd -m Czy # 添加Czy用户并生成home目录
sudo usermod -aG sudo Czy # 添加到超级用户组即sudo权限
# /etc/passwd
Czy:x:1001:1001::/home/Czy:/bin/bash
SSH软件使用的是MobaXterm,可以直接在本地实现virtualbox的图形界面,不过还是比较卡,肯定是不如直接使用图形界面的快,但是也只是配置过程中需要使用,真正使用Cuckoo时就不需要手动启动虚拟机环境了,如果用Xbash的话需要配合Xmanager才能在本地拉起virtualbox的图形界面,此外建议安装WinSCP用来传输文件,这个为了方便可以用root登录,不过要注意用root登录后传输后的文件的所有者都是root,写文件的话需要更改权限。
安装Anaconda
首先来说明为什么要安装Anaconda ,首先在Cuckoo不建议直接使用主python环境进行配置,建议使用venv,还有一个更重要的原因,在Ubuntu 20.04已经不建议使用python2了,而到目前为止Cuckoo只支持python2,之前在16.04使用pyhton就能拉起的环境现在需要安装python2并且必须使用python2命令才能唤起,所以为了避免出现各种问题,还是选择使用Anaconda进行环境配置。
首先下载Anaconda安装包,我下载的版本为Anaconda3-2019.03-Linux-x86_64.sh,在清华的镜像站https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载即可,之后便是直接./运行该可执行文件,如果不能执行的话可能是没有x权限,直接sudo chmod 755 Anaconda3-2019.03-Linux-x86_64.sh运行即可安装,安装过程不再赘述,可以参考其他的文章 。
在conda环境中安装python 2.7,然后这个虚拟环境我命名为python2,在下边的脚本要用到。
在Conda安装的最后会提示你是否加入到环境变量,如果加入到环境变量的话那么每次ssh到服务器都会自动运行conda环境的,我个人不是很喜欢,于是我自行写了一个.sh文件,需要的时候我再去执行这个.sh文件即可唤醒环境,注意该文件的x执行权限,755一把梭就行。
其实这些都不算重点,能跑起来python 2.7的环境都是胜利。
#!/bin/bash
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/Czy/application/conda/bin/conda' 'bash.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/Czy/application/conda/etc/profile.d/conda.sh" ]; then
. "/home/Czy/application/conda/etc/profile.d/conda.sh"
else
export PATH="/home/Czy/application/conda/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
conda activate python2
source ./python2-conda.sh
安装Cuckoo
安装python库
我是直接执行了sudo pip install -U cuckoo,然后执行过程中告诉我缺啥我都再装,虽然这样不太好但是也不是不行哈哈,文档对于这块说的还是比较清楚的,这里借鉴一下其他博客说明的安装环境,如果安装失败,搜索一下错误,我就遇到过一个编译image什么的错误,是在github issue中找到一个用apt安装的依赖才解决的,但是具体记不清了。
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
安装MongoDB
为了使用基于Django的Web界面,需要使用MongoDB,也就是为了启动cuckoo web runserver 0.0.0.0:8000的环境依赖,之后还需要配置用户名密码与数据库信息,这个在下一节会细说。
sudo apt-get install mongodb
安装PostgreSQL
Cuckoo的Web服务需要一个数据库,在配置文件中可以看出sqlite、postgresql、mysql都是可以的,由于我比较熟悉Mysql的操作本来想指定Mysql作为选定数据库来着,但是由于装python_mysql的驱动一直出问题,我估计是因为我装的Mysql 8.0,而Python 2.7早已不再维护了,所以无法正常使用驱动了,所以最终还是选择PostgreSQL,当然这个也需要配置用户名密码等,这个下一节再说明。
sudo apt-get install postgresql libpq-dev
安装virtualbox
首先需要安装virtualbox,直接使用apt-get安装即可。
sudo apt-get install virtualbox
如果像我一样是使用的服务器而没有实体机,而且我的服务器在实体机上是使用VMware Workstation管理的,那么这个状态就相当于在虚拟机中安装虚拟机,那么就需要在主体实体机的VMware Workstation中修改虚拟机配置在,Processors中启用VT-X或AMD-V,也就是启动虚拟化才可以。
安装tcpdump
为了在执行期间转储恶意软件执行的网络活动,需要正确配置网络嗅探器以捕获流量并将其转储到文件中。
sudo apt-get install tcpdump apparmor-utils
sudo aa-disable /usr/sbin/tcpdump
请注意,只有在使用默认目录时才需要apparmor禁用配置文件(aa-disable命令),CWD因为apparmor会阻止创建实际的PCAP文件(另请参阅tcpdump的权限被拒绝),对于禁用apparmor的Linux平台(例如,Debian),以下命令就足以安装tcpdump 。
sudo apt-get install tcpdump
tcpdump需要root权限,但由于不希望Cuckoo以root身份运行,因此必须为二进制文件设置特定的Linux功能。
sudo groupadd pcap
sudo usermod -a -G pcap Czy # 这里是用户名
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
如果没有安装setcap则安装。
sudo apt-get install libcap2-bin
或者以其他方式(不推荐)的做法。
sudo chmod +s /usr/sbin/tcpdump
安装Volatility
Volatility是一种可选工具,可对内存转储进行取证分析,与Cuckoo结合使用,它可以自动提供对操作系统深度修改的额外可视性,并检测逃脱Cuckoo分析器监控域的rootkit技术的存在。
git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
sudo python setup.py build
sudo python setup.py install
安装M2Crypto
目前M2Crypto只有在安装SWIG时才支持该库,在Ubuntu /Debian的系统上,可以按如下方式完成。
sudo apt-get install swig
sudo pip install m2crypto==0.24.0
Cuckoo环境配置
cuckoo默认安装在当前用户目录下,即~/.cuckoo,我们可以使用cuckoo -d来启动cuckoo。
配置virtualbox虚拟机
这是个比较大的工程,为了方便我们直接在图形界面上完成这个操作。
首先我们需要准备好一个XP镜像,镜像需要自行下载,可以去MSDN下载,之后还要准备一个密钥,这个可以自行百度,多试试总有能用的,并且XP老系统了比较好找。
点击新建,这边的name填cuckoo1,因为我有一个重名的了所以写了个2,这边一定要写好是cuckoo1,选择好windows XP 32-bit系统。
之后便是分配内存和硬盘存储等,可以一路next,接下来要启动安装镜像。
在此处选择下载好的xp系统镜像,接下来就跟随着系统进行安装,安装完成后将虚拟机关机,在Setting中的Storage中将光盘形状的这个位置的启动位置移除即可,否则每次开机都会提示你按任意键从光盘启动,那么便又会启动一次安装程序。
接下来需要配置网络环境,在启动的virtualbox中新建一个虚拟网卡,配置的ip地址等如下所示。
之后在我们新建的cuckoo1的虚拟机设置网络,如下所示,Host-only是代表只允许与宿主机通信,如果需要访问外网的话,请继续看下边的网络配置。
之后我们要配置一下虚拟机的外网网络环境,刚才我们新建了这个虚拟网卡,之后为了通信我们还需要将虚拟机里设置一个固定的ip地址,也就是刚才我们设置的虚拟网卡网关的子网,但是我们如果我们直接在xp系统里设置虚拟机的ip地址之后是无法上网的,所以我们需要在ubuntu中配置一个NAT网络转发,在这里我们直接使用iptables 进行网络转发,这里每次开机都会重置,如果想要开机自动可以使用systemctl进行开机自启动管理,需要编写UNIT,在这里就不赘述了,在这里我们还是写到一个sh文件中需要的时候再执行即可。
注意在下边这个ens160是我的网卡,可以使用ifconfig查看网卡名称,之后的192.168.56.0/24就是主机以及网络号划分的子网,如果上边的ip配置都是根据文章来的话,那就只需要修改这个网卡名称即可。
echo 1 | sudo tee -a /proc/sys/net/ipv4/ip_forward
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o ens160 -s 192.168.56.0/24 -j MASQUERADE # 网卡名称 ens160
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
sudo iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT
sudo iptables -A FORWARD -j LOG
sudo ./network-transform.sh
接下来启动这个虚拟机,我们需要在这里关闭防火墙与自动更新,并且配置好ip地址。
另外还需要在虚拟机中进行网络配置以及启动一个agent.py,这个文件在~/.cuckoo/agent/agent.py,也就是说在虚拟机中也必须安装python 2.7环境,如果需要截图的话,还需要PIL包,在这里就不赘述安装过程了,无论是使用虚拟机共享磁盘还是搭建文件服务器环境等方式,或者是直接在xp虚拟机中下载python安装包并安装即可,使用python3启动简单的文件服务器命令如下。
python3 -m http.server --bind 0.0.0.0 8088
之后我们可以直接双击启动agent.py,另外也可以在C:\Document and Settings\Administrator\start menu\program\start设置让其开机自启,当然这个也没要必要,因为我们只需要创建快照即可,在运行agent.py之后,我们可以使用netstat命令查看8000端口是否被占用,如果已经占用就说明agent.py成功启动。
等环境全部搭建完成之后,我们需要创建快照,务必注意名字要命名为snapshot1,默认的为Snapshot 1,注意是首字母大写以及1之前有个空格的,所以我们要命名为snapshot1。
之后我们就关闭虚拟机即可,在运行cuckoo过程中不需要手动启动虚拟机。
创建数据库
之前我们安装了MongoDB与PostgreSQL,接下来我们需要为其创建一个用户以及创建数据库,这里统一一下用户名都为cuckoo,密码都为1234567890-=,数据库名都为cuckoo,下边的配置文件要用得到,具体过程请参照各自的数据库命令。
配置文件
所有的配置文件都在~/.cuckoo/conf/目录下,cuckoo.conf配置文件,重要位置已标出。
[cuckoo]
version_check = yes
ignore_vulnerabilities = no
api_token = uIfx
web_secret =
delete_original = no
delete_bin_copy = no
machinery = virtualbox
memory_dump = no
terminate_processes = no
reschedule = no
process_results = yes
max_analysis_count = 0
max_machines_count = 0
max_vmstartup_count = 10
freespace = 1024
tmppath =
rooter = /tmp/cuckoo-rooter
[feedback]
enabled = no
name =
company =
email =
[resultserver]
ip = 192.168.109.206 ### 主机地址
port = 2042 ### 端口
upload_max_size = 134217728
[processing].
analysis_size_limit = 134217728
resolve_dns = yes
sort_pcap = yes
[database]
connection = postgresql://cuckoo:1234567890-=@localhost:5432/cuckoo ### 数据库链接
timeout = 60
[timeouts]
default = 120
critical = 60
vm_state = 60
[remotecontrol]
enabled = no
guacd_host = localhost
guacd_port = 4822
virtualbox.conf配置文件,重要位置已标出。
[virtualbox]
mode = headless
path = /usr/bin/VBoxManage
interface = vboxnet0 ### 默认网卡
machines = cuckoo1 ### 虚拟机名称
controlports = 5000-5050
[cuckoo1]
label = cuckoo1 ### label
platform = windows
ip = 192.168.56.101 ### 虚拟机ip地址
snapshot = snapshot1 ### 快照名
interface = vboxnet0 ### 虚拟网卡
resultserver_ip =
resultserver_port =
tags =
options =
osprofile =
[honeyd]
label = honeyd
platform = linux
ip = 192.168.56.102
tags = service, honeyd
options = nictrace noagent
reporting.conf配置文件,重要位置已标出。
[feedback]
enabled = no ### 启动
[jsondump]
enabled = yes
indent = 4
calls = yes
[singlefile]
enabled = no
html = no
pdf = no
[misp]
enabled = no
url =
apikey =
mode = maldoc ipaddr hashes url
distribution = 0
analysis = 0
threat_level = 4
min_malscore = 0
tag = Cuckoo
upload_sample = no
[mongodb]
enabled = yes ### 启用mongodb
host = 127.0.0.1
port = 27017
db = cuckoo ### 数据库名
store_memdump = yes
paginate = 100
username = cuckoo ### 账号
password = 1234567890-= ### 密码
[elasticsearch]
enabled = no
hosts = 127.0.0.1
timeout = 300
calls = no
index = cuckoo
index_time_pattern = yearly
cuckoo_node =
[moloch]
enabled = no
host =
insecure = no
moloch_capture = /data/moloch/bin/moloch-capture
conf = /data/moloch/etc/config.ini
instance = cuckoo
[notification]
enabled = no
url =
identifier =
[mattermost]
enabled = no
url =
myurl =
username = cuckoo
show_virustotal = no
show_signatures = no
show_urls = no
hash_filename = no
hash_url = no
启动Cuckoo
启动Cuckoo需要两个终端,一个终端启动cuckoo,另外一个终端启动cuckoo web runserver。
cuckoo
cuckoo web runserver 0.0.0.0:8000
之后打开该web服务,在我的服务器的地址为http://192.168.109.206:8000/。
在右上角的Submit提交文件,点击Analyze即可,现在就可以在执行cuckoo的终端查看到分析进度了,在Dashboard可以整体查看概览,也可以在Rencent中查看已经完成的任务。
另外在正常情况下在分析的时候$HOME/.cuckoo/storage/analyses会出现很多xxx.exe_和xxx.dmp文件,可以使用crontab执行一些定时任务出来一下,例如我不需要则在存在时间大于6分钟的直接删除。
*/6 * * * * cd $HOME/.cuckoo/storage/analyses && find ./ -regex .*/memory/.*\.exe_ -mmin +6 -delete && find ./ -regex .*/memory/.*\.dmp -mmin +6 -delete
Blog
参考
- https://zh.codeprj.com/blog/a9f9bd1.html
- https://cuckoo.sh/docs/introduction/community.html
- https://blog.csdn.net/root__user/article/details/89251386
- https://blog.csdn.net/qq_42569334/article/details/107212245
Ubuntu20.04配置CuckooSandbox环境的更多相关文章
- Ubuntu20.04配置Java开发环境
Ubuntu20.04配置Java开发环境 JDK 1.8 安装 下载地址 下载后进行解压 tar -xvzf jdk-8u301-linux-x64.tar.gz 配置环境变量 gedit ~/.b ...
- ubuntu16.04配置java环境(重启后不会失效)
ubuntu16.04配置java环境(重启后不会失效) 1.jdk的安装包(.tar.gz)拷贝到/opt目录下 mv jdk-8u144-linux-x64.tar.gz /opt 2.解压文件 ...
- Ubuntu20.04配置 ES7.17.0集群
Ubuntu20.04配置 ES7.17.0集群 ES能做什么? elasticsearch简写es,es是一个高扩展.开源的全文检索和分析引擎,它可以准实时地快速存储.搜索.分析海量的数据. Ubu ...
- Ubuntu20.04 Java相关环境(JDK、Mysql、Redis、nacos、influxdb)部署以及运行
重装了系统,系统版本号为:Ubuntu20.04 1.云平台 登录云平台,选择要重装的服务器,关机.一键重装即可 2.安装jdk 下载jdk-8u341-linux-x64.tar.gz,并复制到服务 ...
- ubuntu 14.04 配置 java 环境
下载java包 (这里以java8为例) java包的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloa ...
- 【三维重建】Ubuntu20.04进行RealSenseD435环境配置及初步使用
一.环境配置 github上面的教程:https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux ...
- ubuntu16.04配置tensorflow-gpu环境
1.安装驱动 参考: 史上最全的ubuntu16.04安装nvidia驱动+cuda9.0+cuDnn7.0 https://blog.csdn.net/qq_31215157/article/det ...
- ubuntu14.04配置face_recognition环境
Github项目地址:https://github.com/MiChongGET/face_collection 环境搭建 1. 环境 ubuntu14.04 LTS python2.7 pip ...
- [PHP] ubuntu16.04配置Lamp环境(搭建linux+apache+mysql+php7环境)
reference : http://blog.csdn.net/Abyss_sliver/article/details/77621404 好久没有在Linux环境下进行开发了,比较常用的还是win ...
- Ubuntu20.04和Docker环境下安装Redash中文版
创建Ubunt20.04虚拟机,请参考:https://www.linuxidc.com/Linux/2020-03/162547.htm 一.安装基础环境: # 1.更换APT国内源 sudo se ...
随机推荐
- 推荐一个.NetCore开源的CMS项目,功能强大、扩展性强、支持插件的系统!
推荐一个基于.Net Core开发的开源CMS项目,该项目功能完善.涉及知识点比较多,不管是作为二次开发.还是学习都是不错的选择. 01 项目简介 Cofoundry是基于.Net开发的.代码优先开发 ...
- 数据库研发人员必看的MySQL 8.0新特性
本文汇总了MySQL8.0 面向开发的新特性,总共有12个新特性,有想快速了解8.0新特性的朋友,可以看一下哈文章目录:1.公用表达式支持-CTE2.窗口函数3.表达式作为默认值:4.CHECK支持5 ...
- (Python基础教程之七)Python字符串操作
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
- 使用缓存构建更快的 Web 应用程序
使用 Java 缓存系统缓存频繁查看的数据 使用 Java 技术的 Web 开发人员可以使用缓存实用程序快速提升他们的应用程序的性能.Java 缓存系统(Java Caching System,JCS ...
- 使用 LLVM 框架创建有效的编译器,第 2 部分
使用 clang 预处理 C/C++ 代码 无论您使用哪一种编程语言,LLVM 编译器基础架构都会提供一种强大的方法来优化您的应用程序.在这个两部分系列的第二篇文章中,了解在 LLVM 中测试代码,使 ...
- Codeforces Round 642 (Div3)
K-periodic Garland 给定一个长度位\(n\)的\(01\)串,每次操作可以将\(1\)变为\(0\)或者将\(0\)变为\(1\),现在你需要通过操作使得所有\(1\)之间的距离为\ ...
- Ubuntu使程序脱离终端运行
应用场景: 远程登陆Linux服务器运行模型训练代码,如果关闭本地终端则服务器代码中断运行!目标操作:在本地终端运行服务器代码,当关闭终端时代码能够继续在服务器上运行,且再次打开终端连接服务器时能找回 ...
- MarkDown文档的编写
MarkDown的基本语法 MarkDown的标题语法 通过#进行创建标题,#的数量控制标题的级别 MarkDown的段落语法 通过空白行将一行或者多行文本进行分隔 MarkDown的强调语法 粗 ...
- 一图一知-vue强大的slot
vue常用的slot知识点记录
- Scratch列表的知识与应用
列表及应用1 列表及应用2 练习题1