利用Honeyd搭建简易蜜罐

一次实验课:利用honeyd搭建蜜罐

Honeyd相关依赖的安装

安装g++ gcc(对相关的一些依赖进行源码编译安装)

sudo apt-get update && sudo apt-get install g++ gcc

安装Libevent(非同步事件通知的函数库)

通过使用libevent,开发人员可以设定某些事件发生时所执行的函数,可以代替以往程序所使用的循环检查

1
2
3
4
sudo tar -zxvf libevent-1.4.14b-stable.tar.gz 
sudo ./configure
sudo make
sudo make install

安装Libdnet(提供跨平台的网络相关的API函数库)

包括了ARP缓存,路由表查询,IP包及物理帧的传输

1
2
3
4
sudo tar -zxvf libdnet-1.11.tar.gz 
sudo ./configure
sudo make
sudo make install

安装Libpcap(一个数据包捕获函数库,大多数网络软件都以它为基础)

1
2
3
4
5
6
7
8
9
sudo tar -zxvf libpcap-1.7.3.tar.gz
sudo tar -zxvf libpcap-1.5.3.tar.gz
sudo ./configure
sudo make
sudo make install

#在Ubuntu下缺少 flex bison 手动安装
sudo apt-get install flex
sudo apt-get install bison

安装ARPD(运行在与Honeyd相同的系统上)

是honeyd众多协作工具中最重要的一个工具。ARPD工作时监听局域网内的流量,并通过查看honeyd系统的ARP表判断其他系统是否存活。在蜜罐系统中ARPD会对指定IP地址范围内未使用的IP用honedy的MAC地址做出arp应答。这样对指定IP地址范围内未使用的IP的连接访问都被重定向到蜜罐主机。这样设计可以在内网中最大化的诱导蠕虫病毒,诱导攻击流。

1
2
3
4
5
6
sudo tar -zxvf arpd-0.2.tar.gz 
sudo ./configure
#报错:error:expected’)’ before string constant
#解决:在arpd.c文件中添加#define __FUNCTION__
sudo make
sudo make install

安装Honeyd

1
2
3
4
sudo tar -zxvf honeyd-1.5c.tar.gz
sudo ./configure
#报错:configure: error: Couldn't figure out how to access libc
#解决:sudo ln -s /lib/x86_64-linux-gnu/libc.so.6 /usr/lib/libc.so

检测arpd和honeyd是否可以运行

arpd
1
2
3
4
5
6
7
#运行后显示链接不存在
#解决:
whereis libevent-1.4.so.2
#将libevent-1.4.so.2位置添加到/etc/ld.so.conf
sudo vim /etc/ld.so.conf
#重新加载链接
sudo ldconfig

honeyd
1
2
3
4
5
6
7
8
9
honeyd
#报错:无法加载libdnet
#解决:也是无法链接,但是这个缺少链接文件:
whereis libdnet
#生成链接
sudo cp /usr/local/lib/libdnet.1.0.1 /usr/local/lib/libdnet.so.1.0.1
#重新加载
sudo /sbin/ldconfig
sudo updatedb

简单的调试与测试

  • arpd侦听ens33网卡上的一个空闲的ip:192.168.1.71

    sudo arpd -i ens33 192.168.1.71

  • 将honeyd下的config.sample改名并配置蜜罐启动的系统及其配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    sudo mv config.sample ./honeyd.conf
    sudo vim honeyd.conf
    # Example of a simple host template and its binding
    create windows
    #创建一个windows xp系统的蜜罐
    set windows personality "Microsoft Windows XP Professional SP1"
    #设置系统重启时间
    set windows uptime 1728650
    #设置最大文件描述符
    set windows maxfds 35
    #开启80端口web服务且侦听脚本为honeyd-1.5c/scripts/web.sh
    add windows tcp port 80 "sh sh //home/toml/Desktop/honeyd/honeyd-1.5c/scripts/web.sh"
    #开启22,23端口
    add windows tcp port 22 "sh scripts/test.sh $ipsrc $dport"
    add windows tcp port 23 proxy $ipsrc:23
    #add template udp port 53 proxy 141.211.92.141:53
    #关闭默认的tcp,udp连接
    set windows default tcp action reset
    set windows default udp action reset
    #开启135,139端口
    add windows tcp port 135 open
    add windows tcp port 139 open

    bind 192.168.1.71 windows

  • 启动honeyd

    1
    sudo honeyd -d -f honeyd.conf  -p nmap.prints -x xprobe2.conf -a nmap.assoc -i ens33 192.168.1.71

  • 在同网段下ping,访问web服务

  • 蜜罐的监听显示如下(分别是本机ping蜜罐机192.168.1.71的ping包和本机访问蜜罐主机的80端口建立连接的过程)

  • 蜜罐主机应用的web服务显示的脚本内容

实验思考题

如何利用Honeyd实现跨网段的模拟。

回答:

  1. 可以利用wmware自带的NAT模式实现路由转发的功能,达到跨网段访问的目的。
  2. 可以通过自己手动配置路由表,添加路由规则实现跨网段访问的目的。

实验中的问题

  1. 对于Libpcap的安装:在Debian下1.7.3版本太高,会出现头文件的报错,使用1.5.3版本,Ubuntu系统无影响;在Ubuntu下缺少 flex bison ,需要手动安装。
  2. 安装完所有的依赖及honeyd后需要配置arpd和honeyd链接的问题,不然无法运行。

参考链接

https://blog.csdn.net/key_1997/article/details/81322352(Ubuntu系统)

https://blog.csdn.net/accepthjp/article/details/46399715

https://blog.csdn.net/LFGxiaogang/article/details/73287152