引言: Cuckoo是一个非常流行的恶意软件或者攻击分析系统,通过cuckoo可以方便地帮助安全研究人员验证恶意程序的特征信息,本文将详细描述其运行环境的搭建过程。由于整个过程比较庞杂,故将分为4篇来详细描述其搭建过程。此为第一篇。
1. Cuckoo介绍
Cuckoo 的全称是OpenSource Cuckoo Sandbox Project。其初始由一些安全先驱开发,其中一些人也是开源honeyspot 的contributor。实际上在2010年的时候Cuckoo还是honeyNET的一个子项目。这些前辈独到的蜜罐网络研发的技巧,让Cuckoo可以轻而易举的进行URL分析、网络通讯分析、程序分析、pdf分析。
整体上,Cuckoo基于虚拟机技术,使用中央控制系统和模块设计,结合python的自动化特征,已经是颇为自动化的恶意软件行为研究环境。
出于研发历史的考量,个人推荐使用debian或ubuntu主机安装virtualbox当作Cuckoo Host,WinXP做guest。实际上Cuckoo也支持Macox和KVM 等其他环境,也支持Windows7做guest,但是相比而言window xp更为合适一下。
由于本文不是在介绍Cuckoo的原理,故这里不再详细描述其原理和功能,具体的信息大家可以到官网上去了解更多信息。
https://cuckoosandbox.org
目前最新的版本是:
2.0-RC1
2. 安装指南
2.1 Ubuntu OS Ready
Ubuntu使用16.04, 64位的系统,具体版本可以参照其官网。在安装完成之后,我们来看其版本信息:
polo@polo-notebook:~$ cat /proc/version
Linux version 4.4.0-36-generic (buildd@lcy01-01) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.2) ) #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016
在这里大家可以发现,其Kernel版本为4.4.0, Ubuntu版本号为16.04.2
2.2 检查Python是否安装以及版本验证
由于Ubuntu深度使用了python,故其默认搭载了python的运行环境,我们来检查其版本信息:
polo@polo-notebook:~$ python
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
基于结果可以发现,其Python为2.7.12;众所周知,Python分为2,3两个大的分支,这里使用python 2这个分支。
2.3 install ORM in pythonSQLAlchemy是Python类似Hibernate之于Java,解决SQL和对象之间的映射管理,其作为一个依赖包存在。
方法1: sudo apt-get install python-sqlalchemy
方法2: sudo pip install sqlalchemy
方法1基于Ubuntu的apt来进行安装, 方法2基于python的类库管理工具pip来安装。
下面来看一下apt安装的结果信息输出:
polo@polo-notebook:~$ sudo apt-get install python-sqlalchemy
[sudo] polo 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
docbook-xml docbook-xsl fonts-dejavu fonts-dejavu-extra ibus-pinyin icoutils kactivities kate-data katepart kde-l10n-engb kde-l10n-zhcn kde-runtime
kde-runtime-data kde-style-breeze kde-style-breeze-qt4 kdelibs-bin kdelibs5-data kdelibs5-plugins kdoctools kpackagelauncherqml kpackagetool5
libattica0.4 libdlrestrictions1 libgif7 libkactivities6 libkatepartinterfaces4 libkcmutils4 libkde3support4 libkdeclarative5 libkdecore5 libkdesu5
libkdeui5 libkdewebkit5 libkdnssd4 libkemoticons4 libkf5activities5 libkf5calendarevents5 libkf5declarative-data libkf5declarative5
libkf5notifications-data libkf5notifications5 libkf5package-data libkf5package5 libkf5plasma5 libkf5plasmaquick5 libkf5quickaddons5 libkf5style5
libkfile4 libkhtml5 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4 libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4 libkpty4 libkrosscore4
libktexteditor4 libkxmlrpcclient4 libnl-route-3-200 libntrack-qt4-1 libntrack0 libopencc1 libphonon4 libphonon4qt5-4 libplasma3 libpolkit-qt-1-1
libpyzy-1.0-0v5 libqca2 libqca2-plugins libqt4-designer libqt4-opengl libqt4-qt3support libqt4-svg libqtwebkit4 libsolid4 libstreamanalyzer0v5
libstreams0v5 libthreadweaver4 libxcb-composite0 libxcb-damage0 libxml2-utils ntrack-module-libnl-0 oxygen-icon-theme oxygen5-icon-theme phonon
phonon-backend-gstreamer phonon-backend-gstreamer-common plasma-framework plasma-scriptengine-javascript python-gi python-xdg
qml-module-org-kde-activities qml-module-org-kde-kquickcontrols qml-module-org-kde-kquickcontrolsaddons qml-module-qtquick-controls
qml-module-qtquick-dialogs qml-module-qtquick-privatewidgets sgml-data
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
python-sqlalchemy-ext
建议安装:
python-sqlalchemy-doc python-psycopg2 python-pymysql python-fdb python-pymssql
下列【新】软件包将被安装:
python-sqlalchemy python-sqlalchemy-ext
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 29 个软件包未被升级。
需要下载 650 kB 的归档。
解压缩后会消耗 3,885 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 python-sqlalchemy all 1.0.11+ds1-1ubuntu2 [636 kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 python-sqlalchemy-ext amd64 1.0.11+ds1-1ubuntu2 [13.4 kB]
已下载 650 kB,耗时 0秒 (847 kB/s)
正在选中未选择的软件包 python-sqlalchemy。
(正在读取数据库 ... 系统当前共安装有 238661 个文件和目录。)
正准备解包 .../python-sqlalchemy_1.0.11+ds1-1ubuntu2_all.deb ...
正在解包 python-sqlalchemy (1.0.11+ds1-1ubuntu2) ...
正在选中未选择的软件包 python-sqlalchemy-ext。
正准备解包 .../python-sqlalchemy-ext_1.0.11+ds1-1ubuntu2_amd64.deb ...
正在解包 python-sqlalchemy-ext (1.0.11+ds1-1ubuntu2) ...
正在设置 python-sqlalchemy (1.0.11+ds1-1ubuntu2) ...
正在设置 python-sqlalchemy-ext (1.0.11+ds1-1ubuntu2) ...
2.4 安装第三方python依赖包(install the third-parth dependencies in python-pip)sudo apt-get install python-dpkt python-jinja2 python-magic python-pymongo python-libvirt python-bottle python-pefile ssdeep
安装命令执行过程:
polo@polo-notebook:~$ sudo apt-get install python-dpkt python-jinja2 python-magic python-pymongo python-libvirt python-bottle python-pefile ssdeep
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
docbook-xml docbook-xsl fonts-dejavu fonts-dejavu-extra ibus-pinyin icoutils kactivities kate-data katepart kde-l10n-engb kde-l10n-zhcn kde-runtime
kde-runtime-data kde-style-breeze kde-style-breeze-qt4 kdelibs-bin kdelibs5-data kdelibs5-plugins kdoctools kpackagelauncherqml kpackagetool5
libattica0.4 libdlrestrictions1 libgif7 libkactivities6 libkatepartinterfaces4 libkcmutils4 libkde3support4 libkdeclarative5 libkdecore5 libkdesu5
libkdeui5 libkdewebkit5 libkdnssd4 libkemoticons4 libkf5activities5 libkf5calendarevents5 libkf5declarative-data libkf5declarative5
libkf5notifications-data libkf5notifications5 libkf5package-data libkf5package5 libkf5plasma5 libkf5plasmaquick5 libkf5quickaddons5 libkf5style5
libkfile4 libkhtml5 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4 libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4 libkpty4 libkrosscore4
libktexteditor4 libkxmlrpcclient4 libntrack-qt4-1 libntrack0 libopencc1 libphonon4 libphonon4qt5-4 libplasma3 libpolkit-qt-1-1 libpyzy-1.0-0v5
libqca2 libqca2-plugins libqt4-designer libqt4-opengl libqt4-qt3support libqt4-svg libqtwebkit4 libsolid4 libstreamanalyzer0v5 libstreams0v5
libthreadweaver4 libxcb-composite0 libxcb-damage0 ntrack-module-libnl-0 oxygen-icon-theme oxygen5-icon-theme phonon phonon-backend-gstreamer
phonon-backend-gstreamer-common plasma-framework plasma-scriptengine-javascript python-gi python-xdg qml-module-org-kde-activities
qml-module-org-kde-kquickcontrols qml-module-org-kde-kquickcontrolsaddons qml-module-qtquick-controls qml-module-qtquick-dialogs
qml-module-qtquick-privatewidgets sgml-data
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
augeas-lenses bridge-utils cgmanager ebtables gawk libaugeas0 libboost-random1.58.0 libboost-thread1.58.0 libnetcf1 librados2 librbd1 libsigsegv2
libvirt-bin libvirt0 libxen-4.6 libxenstore3.0 python-bson python-bson-ext python-dumbnet python-gridfs python-markupsafe python-pkg-resources
python-pymongo-ext
建议安装:
augeas-doc gawk-doc augeas-tools qemu-kvm | qemu radvd lvm2 python-jinja2-doc python-setuptools python-pymongo-doc
下列【新】软件包将被安装:
augeas-lenses bridge-utils cgmanager ebtables gawk libaugeas0 libboost-random1.58.0 libboost-thread1.58.0 libnetcf1 librados2 librbd1 libsigsegv2
libvirt-bin libvirt0 libxen-4.6 libxenstore3.0 python-bottle python-bson python-bson-ext python-dpkt python-dumbnet python-gridfs python-jinja2
python-libvirt python-magic python-markupsafe python-pefile python-pkg-resources python-pymongo python-pymongo-ext ssdeep
升级了 0 个软件包,新安装了 31 个软件包,要卸载 0 个软件包,有 29 个软件包未被升级。
需要下载 9,535 kB 的归档。
解压缩后会消耗 38.0 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 libsigsegv2 amd64 2.10-4 [14.1 kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 gawk amd64 1:4.1.3+dfsg-0.1 [398 kB]
获取:3 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 augeas-lenses all 1.4.0-0ubuntu1 [263 kB]
获取:4 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 bridge-utils amd64 1.5-9ubuntu1 [28.6 kB]
获取:5 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 cgmanager amd64 0.39-2ubuntu5 [76.4 kB]
获取:6 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 ebtables amd64 2.0.10.4-3.4ubuntu1 [79.6 kB]
获取:7 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 libaugeas0 amd64 1.4.0-0ubuntu1 [154 kB]
获取:8 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libboost-random1.58.0 amd64 1.58.0+dfsg-5ubuntu3.1 [11.7 kB]
2.5 install pydeep dependencies in python
Pydeep: Python/C bindings for the ssdeep library.
sudo apt-get install build-essential git libpcre3 libpcre3-dev libpcre++-dev
执行命令之后的输出:
polo@polo-notebook:~$ sudo apt-get install build-essential git libpcre3 libpcre3-dev libpcre++-dev
[sudo] polo 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
build-essential 已经是最新版 (12.1ubuntu2)。
build-essential 已设置为手动安装。
libpcre3 已经是最新版 (2:8.38-3.1)。
下列软件包是自动安装的并且现在不需要了:
docbook-xml docbook-xsl fonts-dejavu fonts-dejavu-extra ibus-pinyin icoutils kactivities kate-data katepart kde-l10n-engb kde-l10n-zhcn kde-runtime
kde-runtime-data kde-style-breeze kde-style-breeze-qt4 kdelibs-bin kdelibs5-data kdelibs5-plugins kdoctools kpackagelauncherqml kpackagetool5
libattica0.4 libdlrestrictions1 libgif7 libkactivities6 libkatepartinterfaces4 libkcmutils4 libkde3support4 libkdeclarative5 libkdecore5 libkdesu5
libkdeui5 libkdewebkit5 libkdnssd4 libkemoticons4 libkf5activities5 libkf5calendarevents5 libkf5declarative-data libkf5declarative5
libkf5notifications-data libkf5notifications5 libkf5package-data libkf5package5 libkf5plasma5 libkf5plasmaquick5 libkf5quickaddons5 libkf5style5
libkfile4 libkhtml5 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4 libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4 libkpty4 libkrosscore4
libktexteditor4 libkxmlrpcclient4 libntrack-qt4-1 libntrack0 libopencc1 libphonon4 libphonon4qt5-4 libplasma3 libpolkit-qt-1-1 libpyzy-1.0-0v5
libqca2 libqca2-plugins libqt4-designer libqt4-opengl libqt4-qt3support libqt4-svg libqtwebkit4 libsolid4 libstreamanalyzer0v5 libstreams0v5
libthreadweaver4 libxcb-composite0 libxcb-damage0 ntrack-module-libnl-0 oxygen-icon-theme oxygen5-icon-theme phonon phonon-backend-gstreamer
phonon-backend-gstreamer-common plasma-framework plasma-scriptengine-javascript python-gi python-xdg qml-module-org-kde-activities
qml-module-org-kde-kquickcontrols qml-module-org-kde-kquickcontrolsaddons qml-module-qtquick-controls qml-module-qtquick-dialogs
qml-module-qtquick-privatewidgets sgml-data
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
git-man liberror-perl libpcre++0v5 libpcre32-3 libpcrecpp0v5
建议安装:
git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn
下列【新】软件包将被安装:
git git-man liberror-perl libpcre++-dev libpcre++0v5 libpcre3-dev libpcre32-3 libpcrecpp0v5
升级了 0 个软件包,新安装了 8 个软件包,要卸载 0 个软件包,有 29 个软件包未被升级。
需要下载 4,499 kB 的归档。
解压缩后会消耗 29.0 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 libpcrecpp0v5 amd64 2:8.38-3.1 [15.2 kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 liberror-perl all 0.17-1.2 [19.6 kB]
获取:3 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 git-man all 1:2.7.4-0ubuntu1 [735 kB]
获取:4 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 git amd64 1:2.7.4-0ubuntu1 [3,006 kB]
获取:5 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 libpcre32-3 amd64 2:8.38-3.1 [136 kB]
获取:6 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 libpcre3-dev amd64 2:8.38-3.1 [525 kB]
获取:7 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 libpcre++0v5 amd64 0.9.5-6.1 [14.3 kB]
获取:8 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 libpcre++-dev amd64 0.9.5-6.1 [47.8 kB]
2.6 build pydeep and install it
我们将基于源代码来进行编译和安装pydeep。
download: git clone https://github.com/kbandla/pydeep.git
然后基于命令来安装:
sudo python setup.py build
在安装过程中碰到了一些问题以及具体的解决办法:
错误1:fatal error: Python.h:
polo@polo-notebook:/opt/pydeep$ python setup.py build
running build
running build_ext
building 'pydeep' extension
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/local/include/ -I/usr/include/python2.7 -c pydeep.c -o build/temp.linux-x86_64-2.7/pydeep.o
pydeep.c:1:20: fatal error: Python.h: 没有那个文件或目录
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
How to fix it ?这里的问题是由于没有安装python的开发环境以及开发包,故需要安装新的python-dev包,python2和python3不一样,请注意与喜爱。
sudo apt-get install python-dev
错误2:
fatal error: fuzzy.h
具体的错误信息如下:
polo@polo-notebook:/opt/pydeep$ sudo python setup.py install
running install
running build
running build_ext
building 'pydeep' extension
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/local/include/ -I/usr/include/python2.7 -c pydeep.c -o build/temp.linux-x86_64-2.7/pydeep.o
pydeep.c:2:19: fatal error: fuzzy.h: 没有那个文件或目录
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
How to fix it ?
此类的头文件丢失,一般都是对应的开发包缺失。 具体的解决办法如下:
sudo apt install libfuzzy-dev
2.7 安装编译、版本管理工具
automake 工具,鼎鼎大名。
Sudo apt install libfuzzy-dev
subversion, 版本管理工具,上个时代的主流工具:
sudo apt install subversion
后续步骤未完待续。