今天偶然看到清华大学CCERT在中国教育报发表的文章,原文地址:http://wenku.baidu.com/view/827a5417650e52ea55189841.html ,还要收费1元。于是就决定写一篇关于对蜜罐进行部署和使用的详细文章。(一篇文章我一般都需要几天时间来完成的,To be perfect 是我做任何事情都喜欢追求的。)

一、初步认识dionaea

dionaea,中文的意思即捕蝇草,是否形容蜜罐很形象?dionaea是nepenthes(猪笼草)的发展和后续,更加容易被部署和使用。何谓蜜罐?引诱攻击者发起攻击,并能记录攻击者的活动信息。蜜罐一般分为两种类型:高交互式蜜罐和低交互式蜜罐。

低交互式蜜罐只是模拟出了真正操作系统的一部分,例如模拟一个FTP服务。虽然低交互式蜜罐容易建立和维护,但模拟可能不足以吸引攻击者,还可能导致攻击者绕过系统发起攻击,从而使蜜罐在这种情况下失效。

高交互式蜜罐是一部装有真正操作系统,并可完全被攻破的系统。与攻击者进行交互的是一部包含了完整服务的真实系统。用于网络安全的高交互式蜜罐提供了真实操作系统的服务和应用程序,使其可以获得关于攻击者更可靠的信息。但是部署和维护起来十分困难,而且被攻破的系统可能会被用来攻击互联网上其他的系统,这必须承担很高的风险。所以我们主要来研究今天我们的主题低交互式蜜罐dionaea。

二、在ubuntu上完整安装dionaea

首先我们需要装一些程序和库的支持,这也是装dionaea之前必要的。先建立两个文件夹,是我们安装包路径和安装路径。

mkdir /pre/  //安装包寄存路径。
mkdir /opt/dionaea  //安装路径。

接下来我们开始配置安装。

1、预安装

root@ruo:/# aptitude install libudns-dev libglib2.0-dev libssl-dev libcurl4-openssl-dev \libreadline-dev libsqlite3-dev python-dev \libtool automake autoconf build-essential \subversion git-core \flex bison \pkg-config

2、libev

root@ruo:/pre#  wget http://dist.schmorp.de/libev/Attic/libev-4.04.tar.gz
root@ruo:/pre#  tar xfz libev-4.04.tar.gz
root@ruo:/pre#  cd libev-4.04
root@ruo:/pre/libev-4.04# ./configure --prefix=/opt/dionaea
root@ruo:/pre/libev-4.04# make install

3、libgcfg

root@ruo:/pre# git clone git://git.carnivore.it/liblcfg.git liblcfg
root@ruo:/pre# cd liblcfg/php/
root@ruo:/pre/liblcfg/php# autoreconf -vi
root@ruo:/pre/liblcfg/php# ./configure --prefix=/opt/dionaea
root@ruo:/pre/liblcfg/php# make install

4、libssl

root@ruo:/pre# wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
root@ruo:/pre# tar xfz openssl-1.0.1e.tar.gz 
root@ruo:/pre# cd openssl-1.0.1e.tar.gz
root@ruo:/pre/openssl-1.0.1e# ./Configure shared --prefix=/opt/dionaea linux-x86_64
root@ruo:/pre/openssl-1.0.1e# make && make install

5、libemu

root@ruo:/pre# git clone git://git.carnivore.it/libemu.git libemu
root@ruo:/pre# cd libemu/
root@ruo:/pre/libemu# autoreconf -vi
root@ruo:/pre/libemu# ./configure --prefix=/opt/dionaea
root@ruo:/pre/libemu# make install

6、sqlite3.3.7

root@ruo:/pre# wget http://ruo.me:9192/dionaea/sqlite-3.3.7.tar.gz
root@ruo:/pre# tar xzf sqlite-3.3.7.tar.gz
root@ruo:/pre# mkdir /home/sqlite-ix86-linux
root@ruo:/pre# cd sqlite-3.3.7
root@ruo:/pre/sqlite-3.3.7# ./configure --prefix=/home/sqlite-ix86-linux
root@ruo:/pre/sqlite-3.3.7# make && make install && make doc
root@ruo:/pre/sqlite-3.3.7# cd /home/sqlite-ix86-linux/bin/
root@ruo:/home/sqlite-ix86-linux/bin# ./sqlite3 ruo.db
SQLite version 3.3.7
Enter ".help" for instructions
sqlite> 
sqlite> .quit
root@ruo:/home/sqlite-ix86-linux/bin#

7、Python3.2

root@ruo:/pre# apt-get install axel
root@ruo:/pre# axel -n 40 http://www.python.org/ftp/python/3.2.2/Python-3.2.2.tgz -o /pre/python.tgz
root@ruo:/pre# tar xfz python.tgz 
root@ruo:/pre# cd Python-3.2.2/
root@ruo:/pre/Python-3.2.2# ./configure --enable-shared --prefix=/opt/dionaea --with-computed-gotos --enable-ipv6 LDFLAGS="-Wl,-rpath=/opt/dionaea/lib/ -L/usr/lib/x86_64-linux-gnu/"
root@ruo:/pre/Python-3.2.2# make && make install
root@ruo:/opt/dionaea/bin# ln python3.2 /usr/bin/python3

8、cython

root@ruo:/pre# axel -n 40 http://cython.org/release/Cython-0.15.tar.gz -o cython.tar.gz
root@ruo:/pre# tar xfz cython.tar.gz 
root@ruo:/pre# Cython-0.15/
root@ruo:/pre/Cython-0.15# python3 setup.py install

9、libpcap

root@ruo:/pre# axel -n 40 http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz -o libpcap.tar.gz
root@ruo:/pre# tar xfz libpcap.tar.gz 
root@ruo:/pre# cd libpcap-1.1.1/
root@ruo:/pre/libpcap-1.1.1# ./configure --prefix=/opt/dionaea
root@ruo:/pre/libpcap-1.1.1# make && make install

10、libnl

root@ruo:/pre/libnl# git clone git://git.infradead.org/users/tgr/libnl.git
root@ruo:/pre# cd libnl
root@ruo:/pre/libnl# autoreconf -vi
root@ruo:/pre/libnl# export LDFLAGS=-Wl,-rpath,/opt/dionaea/lib
root@ruo:/pre/libnl# ./configure --prefix=/opt/dionaea
root@ruo:/pre/libnl# make && make install

好了,我们的准备工作到此结束,接下来开始配置安装 dionaea。

安装dionaea

root@ruo:/pre# git clone git://git.carnivore.it/dionaea.git dionaea
root@ruo:/pre# cd dionaea/
root@ruo:/pre/dionaea# autoreconf -vi
root@ruo:/pre/dionaea# ./configure --with-lcfg-include=/opt/dionaea/include/ \
      --with-lcfg-lib=/opt/dionaea/lib/ \
      --with-python=/opt/dionaea/bin/python3.2 \
      --with-cython-dir=/opt/dionaea/bin \
      --with-udns-include=/opt/dionaea/include/ \
      --with-udns-lib=/opt/dionaea/lib/ \
      --with-emu-include=/opt/dionaea/include/ \
      --with-emu-lib=/opt/dionaea/lib/ \
      --with-gc-include=/usr/include/gc \
      --with-ev-include=/opt/dionaea/include \
      --with-ev-lib=/opt/dionaea/lib \
      --with-nl-include=/opt/dionaea/include \
      --with-nl-lib=/opt/dionaea/lib/ \
      --with-curl-config=/usr/bin/ \
      --with-pcap-include=/opt/dionaea/include \
      --with-pcap-lib=/opt/dionaea/lib/
  root@ruo:/pre/dionaea# make && make install

三、配置dionaea

dionaea默认的配置会记录所有的活动,比如调试、消息、警告、错误、信息等,我们只是自己部署测试,如果按照默认的话有时候记录的日志文件会非常巨大,所以先来修改下默认日志配置。

配置文件路径:/opt/dionaea/etc/dionaea/dionaea.comf

找到levels = “all”,加上-debug,改成levels = “all,debug”,选择调试模式。

找到levels = “warning,error”,去掉warning,改成levels = “error”,不记录警告。

对于模块的讲解,将在(三)中实例分析,这里不多赘述。

因为dionaea默认是将记录的二进制文件上传到 sendbox 中进行分析,但是为了高效方便,我们还是自己配置 Http 处理程序来接受,我们用到 wwwhoney,一个基于 python 的H ttp 蜜罐接收的小型服务器,下面我们来安装 wwwhoney。

root@ruo:/pre# wget http://ruo.me/tools/wwwhoney.tgz
root@ruo:/pre# tgz zxvf wwwhoney.tgz
root@ruo:/pre# chmod 777 wwwhoney -R

解压完毕设置好权限后我们需要修改目录下的 cgiserver.py,这也是启动程序,但是我们需要修改下里面的配置。

找到cgi_directories = [“/cgi-bin/”] ,修改成 wwwhoney 目录下的 cgi-bin 目录,比如我的 wwwhoney 目录是在/pre.wwwhoney/,所以我就修改为cgi_directories = [“/pre.wwwhoney/cgi-bin/”],端口默认9000,可以改也可以不改。

然后启动。

root@ruo:/pre/wwwhoney# python cgiserver.py &
  [1] 2226

返回了pid,说明启动成功,接下来我们打开firefox访问 http://127.0.0.1:9000/

终端返回数据。

root@ruo:/pre/wwwhoney# localhost - - [25/Jul/2013 10:59:13] "GET / HTTP/1.1" 200 -
localhost - - [25/Jul/2013 10:59:17] "GET /favicon.ico HTTP/1.1" 404 -
localhost - - [25/Jul/2013 10:59:22] "GET /binaries/ HTTP/1.1" 200 -
localhost - - [25/Jul/2013 10:59:25] "GET /cgi-bin/ HTTP/1.1" 200 -
localhost - - [25/Jul/2013 10:59:29] "GET /README HTTP/1.1" 200 -
localhost - - [25/Jul/2013 10:59:32] "GET /submit.html HTTP/1.1" 200 -

然后我们启动dionaea。

root@ruo:/opt/dionaea/bin# ./dionaea -u nobody -g nogroup -p /opt/dionaea/var/dionaea.pid -D

返回结果,成功运行鸟。

Dionaea Version 0.1.0 Compiled on Linux/x86 at Jul 23 2013 13:51:54 with gcc 4.4.3 Started o

(一)就此结束。在(二)里面,将介绍如何在dionaea.conf中进行适当的注释和添加,来确保wwwhoney进行正确的Http接收,并且会另述一种非完整的简洁安装方法,适合无基础的朋友,因为(一)中讲解的是完整安装。并且在(三)里面将会详细叙述实例分析的有效手段和多复合冗杂记录的高效途径以及配置图例进行GUI界面的查看。