Honeyd

作者: 小小怪吃吃吃 | 来源:发表于2019-07-10 16:39 被阅读0次

    参考链接:
    1、https://blog.csdn.net/jack237/article/details/6828771
    2、http://netsecurity.51cto.com/art/201101/242209_all.htm
    3、https://www.oschina.net/uploads/doc/honeyd.pdf

    Honeyd是一个小型守护进程,可以在网络上创建虚拟主机。可以将主机配置为运行任意服务,并且可以调整它们的个性以使它们看起来运行某些操作系统。
    Honeyd可以使一台主机在局域网中模拟出多个地址以满足网络实验环境的要求。(- 目前已经测试了多达65536个用于网络仿真。)
    Honeyd通过提供威胁检测和评估机制来提高网络安全性。它还通过在虚拟系统中隐藏真实系统来阻止攻击者。

    一、介绍

    1、虚拟蜜罐
        虚拟蜜罐可以一种快速的方式配置若干个蜜罐,虚拟蜜罐软件能够模仿 IP 栈,OS,和真实系统的应用程序,一旦你建立了你的虚拟蜜罐系统,在它被攻陷了后你也很容易重建。通常情况下,模仿是完全在内存中实现的。虚拟蜜罐软件也允许在单一的物理主机上配置一个完全的密网,一个虚拟蜜罐系统可被用来模仿成千上万个系统,每个系统使用成千上万个端口且使用不同的IP.
    2、Honeyd蜜罐
        Honeyd就是一款优秀的虚拟蜜罐软件。它能够产生虚拟的主机,这些主机能够被配置以提供任意的服务,系统特征也是与之相适应,以至于使之看起来像真实的系统在运行。

    二、安装

    1、支持平台:linux、unix等。
    2、安装依赖项:源码安装
    Honeyd 软件依赖于 Libevent 事件处理 API、Libdnet 数据包构造与发送库、Libpcap 数
    据包捕获库、Libdnsres DNS反向解析函数库以及Arpd工具。

    各个库作用:
    1)libevent:事件通知。是一个非同步事件通知(Asynchronous Event Notification)的函数库。通过使用 libevent,开发人员可以设定某些事件发生时所执行的函数,可以代替以往程序所使用的循环检查。(libevent API 提供了一种机制:当一个特殊事件在一个文件描述符上发生或者一个事先设定的时间到达的时候执行一个 callback 函数,另外,callback 也支持由信号或者规则的timeout 引发的 callback。)
    2)Libdnet:数据包创建。是一个提供了跨平台的网络相关 API(Application Programming Interface)的函数库(主要是较底层的网络操作),包括 arp 缓存,路由表查询,IP 包及物理帧的传输等。
    3)Libpcap:数据包嗅探。是一个数据包捕获(Packet Sniffing)的函数库,大多数网络监控软件都以它为基础。
    4)arpd: 在运行 honeyd 之前,需要保证 honeyd 的主机对配置的 honeypot 的 ip 做出 arp 请求的应答。可以通过运行 arpd 软件来做出 arp 应答。arpd 将对指定的 IP 地址范围内未使用的 IP 用 honeyd 主机的 MAC 地址做出 arp 应答。
    

    3、arpd:在运行honeyd之前,我们需要保证 honeyd 的主机对我们配置的honeypot的ip做出arp请求的应答。可以通过运行arpd软件来做出 arp 应答。arpd 将对指定的 IP 地址范围内未使用的 IP 用 honeyd 主机的 MAC 地址做出arp应答。
    4、安装honeyd。http://www.honeyd.org/release.php?version=1.5c

    5、具体安装步骤:

    安装依赖包:
    sudo apt-get install build-essential g++ gcc进行安装。
    注:在装gcc之前需要装build-essential,其作用是提供软件包列表信息。
    
    详见[http://www.citi.umich.edu/u/provos/honeyd/](http://www.citi.umich.edu/u/provos/honeyd/)。
    1、下载libenvent源码:[http://libevent.org/old-releases.html](http://libevent.org/old-releases.html)
    2、下载libdnet源码:[http://libdnet.sourceforge.net/](http://libdnet.sourceforge.net/)
    3、下载libdcap源码:[http://www.tcpdump.org/release/](http://www.tcpdump.org/release/)
    4、源码安装:
    先解压:tar -xzvf filename
    切换到解压后的目录执行:./configure ;make ;make install。
    **注:libevent,libdnet,libdcap 安装在/usr 目录下,在配置时,用./configure –-prefix=/usr**
    5、通过预编译包安装:下载软件包,直接解压并使用。http://www.tracking-hackers.com/solutions/honeyd/honeyd-linux-kit-0.5a.tgz
    通过源码安装:需先编译,可参考[https://cloud.tencent.com/developer/article/1019325](https://cloud.tencent.com/developer/article/1019325)。
    

    三、运行

    1、相关参数含义如下:


    参数含义
    honeyd [OPTIONS] [net ...]
    
    OPTIONS:
    -d:非守护程序的形式,允许冗长的调试信息。
    -P:轮询模式。
    -l:日志文件指定了日志包和日志文件的连接。
    -s:将服务状态输出记录到logfile。
    -i:监听接口,指定侦听的接口,可以指定多个接口。
    -p:从文件中读取nmap样式的指纹。
    -x:从文件中读取xprobe风格的指纹,这个文件决定了 honeyd 如何响应 ICMP 指纹工具。
    -a:从文件中读取nmap-xprobe关联。
    -0:从文件中读取pf样式的OS指纹。
    -u:设置Honeyd应该运行的uid 。
    -g:设置Honeyd应该运行的gid。
    -f:从文件中读取配置。
    -c host:port:name:pass:报告开始收集。
    --webserver-port=port:Web服务器侦听的端口。
    --webserver-root=path:文档树的根。
    --fix-webserver-permissions:更改所有权和权限。
    --rrdtool-path=path:到rrdtool的路径。
    --disable-webserver:禁用内部Web服务器。
    --disable-update:禁用检查安全修复程序。
    -V, --version
    -h,--help
    --include-dir:用作插件开发,指定 honeyd 存贮它的头文件的位置。
    
    net:
    指定IP地址或者网络或者IP地址范围,如果没有指定,honeyd将监视它能看见的任何IP地址的流量。
    

    2、常用运行命令(若防火墙开启,则honeyd模仿的主机或网络可能无法被探测到)
    1、./honeyd -f honeyd.conf -p nmap.prints -x xprobe2.conf -a nmap.assoc -0 pf.os -l /var/log/honeyd 192.168.1.100-192.168.1.253
    2、模拟单机:

    ./arpd 172.31.0.0/16   
    ./honeyd –f honeyd1.conf 172.31.35.10-172.31.35.20  
    

    3、模拟网络拓扑:

    sudo ./arpd 172.31.0.0/16   
    ./honeyd –f honeyd2.conf 172.31.0.0-172.31.1.255
    

    四、配置

    1、模拟单机
    配置文件如下:

    create default
    set default default tcp action filtered
    set default default udp action filtered
    set default default icmp action filtered
    
    create template
    set template ethernet "3com"
    set template personality "Linux 2.4.7 (X86)"
    
    bind 192.168.1.125 template
    

    上面的配置文件创建了一个叫做template的模板,将IP:192.168.1.125绑定到这个模板上。上面的这个windows模板告诉honeyd,当一个客户端试图用NMap或者XProbe探测honeypot的指纹时,把它自己伪装成Linux 2.4.7 (X86)的系统。default模块,对于关闭的端口,honeyd将发出对于TCP协议、UDP协议、ICMP协议已被过滤的消息。

    2、模拟网络
    网络拓扑的配置文件如下:

    #route entry 10.0.0.1
    #route 10.0.0.1 link 10.2.0.0/24
    #route 10.0.0.1 add net 10.3.0.0/16 10.3.0.1 latency 8ms bandwidth 10Mbps
    #route 10.3.0.1 link 10.3.0.0/24
    #route 10.3.0.1 add net 10.3.1.0/24 10.3.1.1 latency 7ms loss 0.5
    #route 10.3.1.1 link 10.3.1.0/24
    
    create default
    set default default tcp action filtered
    set default default udp action filtered
    set default default icmp action filtered
    
    # Example of a simple host template and its binding
    create windows
    set windows personality "OpenBSD 4.0 (x86)"
    set windows uptime 1728650
    set windows maxfds 35
    add windows tcp port 80 "scripts/web.sh"
    add windows tcp port 22 "scripts/test.sh"
    add windows tcp port 23 "scripts/router-telnet.pl"
    add windows udp port 53 open
    set windows ethernet "dell" 
    set windows default tcp action closed
    
    #create router
    #set router personality "Cisco 2514 router (IOS 12.1)"
    #set router default tcp action closed
    #add router tcp port 22 "scripts/test.sh"
    #add router tcp port 23 "scripts/router-telnet.pl"
    
    #bind 10.3.0.1 router
    #bind 10.3.1.1 router
    #bind 10.3.1.12 template
    #bind 10.3.1.11 template
    bind 192.168.3.137 windows
    #set 10.3.1.11 personality "Microsoft Windows NT 4.0 SP3"
    #set 10.3.1.10 personality "IBM AIX 4.2"
    

    “route entry”配置用来指定入口点,“route link”配置命令用来指定哪个网络是直接可达的,即不需要更远的跳数来到达。

    3、honeyd对应用层协议模拟

    Honeyd提供仿真服务脚本来对应用层的协议进行模拟,安装honneyd后,可以在源代码包中的scripts目录下找到honeyd提供的脚本。Honeyd提供的脚本的语法并不复杂,基本的规则就是当黑客登陆后,输入命令,脚本会做出相应的输出回应,最简单就是通过case语句来区别命令,对不同的命令用echo命令来做出响应。Honeyd提供的脚本一般比较很简单,用户想要编写更为复杂的脚本,可以用以honeyd提供的脚本为模板来改写。

    在honeyd的配置文件中可以指定某个端口的仿真服务脚本,如:
    add windows tcp port 21 open
    改写为:
    add windows tcp port 21 "sh scripts/ftp.sh"
    就可以使honeyd运行仿真服务脚本ftp.sh,来模拟ftp服务。仿真服务脚本要指定路径,才能被honeyd找到。
    

    五、日志

    honeyd 对黑客在终端的输入提供了完善的日志,该日志文件在运行honeyd 时已经指定,即使用-f参数加指定的日志文件名。一般指定日志文件为/var/log/honeyd,可以通过查看该日志获得黑客登陆的信息和一些攻击的方法。

    六、源码分析

    Honeyd
    |  |--compat
    |  |  |--用到的相关代码
    |  |--debian
    |  |  |--honeyd的默认配置在Debian中使用'honeyd'用户。
    |  |--doc
    |  |  |--各类相关文档
    |  |--dpkt
    |  |--os-test
    |  |  |--内含一个ostest脚本
    |  |--pypcap
    |  |  |--pcap流量包
    |  |--regress
    |  |  |--对nmap等探测活动的响应
    |  |--sample-config
    |  |  |--配置文件样式
    |  |--scripts
    |  |  |--Honeyd提供仿真服务脚本来对应用层的协议进行模拟
    |  |--subsystems
    |  |  |--为了替代为每个连接建立一个进程,honeyd 框架也支持subsystems 和 internal services。
    |  |  |--一个 subsysytem 是一个能运行在虚拟蜜罐名字空间下的应用程序。当相应的虚拟蜜罐被初始化的时候,subsystem 指定的应用程序就被启动了。
    |  |  |--一个subsystem 能够绑定到端口,接受连接,发起网络通讯。当一个 subsystem 作为外部程序运行的时候,一个内部的服务就是一个能在 honeyd 中运行的 python 脚本。比起 subsystem 来,internal service 需要的资源更少。
    |  |--webserver
    |  |  |--web服务器相关仿真及前端样式
    

    honeyd 的软件架构由如下几个组件构成:一个配置数据库,一个中央包分发器,协议处理器,一个特征引擎,以及一个可选的路由器组件。
    进来的包首先被中央包分配器处理,它首先检查 IP 包的长度并确认包的校验和。honeyd 框架知道主要的 3 种 Internet 协议:TCP,UDP,ICMP。其他协议的包将被日志记录并丢弃。在处理包之前,分配器必须查询配置数据库来找到一个与目的 IP 相符合的蜜罐配置,如果没有指定的配置存在,一个默认的模板将被使用。给定一个配置,包和相应的配置将被分发给指定的协议处理器。

    理解
    协议处理器
    ICMP 协议处理器支持大多数 ICMP 请求。在默认情况下,所有的 honeypot 支持对 echo requests 和 process destination unreachable 消息的应答。对其他消息的响应决定与配置的个性特征。
    对于 TCP 和 UDP 协议,honeyd 框架能建立连接到任意的服务。服务是外部程序,能从标准输入获取数据,并把输入发送到标准输出。服务的行为完全取决于外部应用程序。当一个连接请求被收到,honeyd 框架检查包是否是一个已经建立好的连接的一部分。如果是的话,任何新的数据都发往已经建立好的连接的应用程序。如果包是一个连接请求,一个新的进程将被创建来运行合适的服务。为了替代为每个连接建立一个进程,honeyd 框架也支持subsystems 和 internal services。一个 subsysytem 是一个能运行在虚拟蜜罐名字空间下的应用程序。当相应的虚拟蜜罐被初始化的时候,subsystem 指定的应用程序就被启动了。一个subsystem 能够绑定到端口,接受连接,发起网络通讯。当一个 subsystem 作为外部程序运行的时候,一个内部的服务就是一个能在 honeyd 中运行的 python 脚本。比起 subsystem 来,internal service 需要的资源更少。
    UDP 数据报直接传递给应用程序。当 honeyd 框架接受到一个发送给关闭端口的数据包的时候,如果配置的个性特征允许,它将发送一个 ICMP port unreachable。在 发 送 ICMP port unreachable 的过程中,honeyd 框架允许像 traceroute 一样的工具去发现被模仿的网络拓扑。

    另外,建立一个到本地服务的连接,honeyd 框架也支持连接的重定向。连接的重定向可能是静态的,或者取决于连接的四个要素(源目的端口,源目的地址)。重定向可以使我们把对虚拟蜜罐上的服务的连接请求定向到一个运行着的真实服务上。例如,我们可以重定向一个 DNS 请求到一个合适的名字服务器上。

    在一个包被发送到网络前,它会被个性引擎处理。个性引擎调整包的内容,以至于它看起来像被配置的操作系统的协议栈中产生的。

    七、测试

    nc 10.211.55.23 23


    路由方式

    八、优点

    1、honeyd 是一款非常优秀的虚拟蜜罐软件,能完成蜜罐的大部分功能,花费的资源相对较少。
    2、能完成对网络拓扑的模拟,对抗指纹探测。
    3、honeyd 的使用很方便,仅需要一个配置文件,就可以完成响应的部署。
    4、此外,honeyd 的使用也是相当广泛。在引诱黑客攻击,反蠕虫,遏制垃圾邮件等方面都有广泛的应用。

    八、改进

    相关文章

      网友评论

          本文标题:Honeyd

          本文链接:https://www.haomeiwen.com/subject/eihxcctx.html