基于Honeyd的蜜罐系统的架构分析及优化设计

时间:2022-10-19 01:52:11

基于Honeyd的蜜罐系统的架构分析及优化设计

摘 要:蜜罐系统是应用于计算机网络安全领域的信息系统资源,目前蜜罐及其相关技术已经开始步入大规模的商业应用阶段。本文通过研究Honeyd这款强大的蜜罐应用工具,对其在使用过程中包括各逻辑模块的的协调,在各种网络协议下的数据包处理等功能进行了详细研究,在此基础上完善了Honeyd的日志记录这一薄弱功能,并对其架构进行了分析及优化设计,使其搜集到的信息更有利用价值。

关键词:Honeyd;蜜罐;系统调用劫持

中图分类号:TP393.08

1 蜜罐技术简介

1.1 蜜罐的定义

蜜网项目组的创始人Lancee Spitzer给出了蜜罐的基本定义:蜜罐是一种安全资源,其价值在于被扫描、攻击和攻陷。这个定义表明蜜罐并无其他实际作用,因此流入/流出蜜罐的网络流量都预示了扫描、攻击和攻陷。而蜜罐的核心价值就在于对些攻击活动进行监视、检测和分析。[1]

1.2 蜜罐技术的原理

(1)模拟欺骗。通过模拟、欺骗技术诱引入侵者;(2)捕获入侵。吸引入侵者后,对入侵行为的日志记录、用户行为进行捕获记录;(3)数据分析。对攻击行为的所有记录性数据分类、挖掘、分析;(4)危险预警。经过数据分析比较,对入侵者可能的入侵行为和目的进行预测,并向网络安全人员提供预警;(5)数据控制。通过系统调用劫持技术保护蜜罐自身安全。

1.3 蜜罐的不足

(1)只能看见针对自身的攻击行为,并记录下来,没有有效的反击黑客的能力;(2)蜜罐的专有特性会使有经验的入侵者发现它,并在安全退出之前破坏日志信息;(3)蜜罐中Honeyd的日志记录机制只能记录未被加密协议的部分信息且自身保护能力不足。(4)蜜罐可能将风险引入它所在的环境,一旦它被攻陷,就有可能被作为攻击、渗透其他系统的跳板。[2]

2 Honeyd的结构分析

Honeyd是一款开源软件,通过采用很多功能强大的开源函数库,可以搭建虚拟蜜罐与蜜罐网络的轻量级守护进程,它几乎可以模拟任何一种类型的应用层服务与任意一个版本的操作系统。

2.1 Honeyd逻辑框架分析

Honeyd结构组成:(1)路由器,路由是一个可选择的逻辑部件;(2)数据包分配器;(3)协议管理器包括ICMP/UDP/TCP协议管理和服务处理单元;(4)特征引擎;(5)配置数据库包含了一切配置参数。

2.2 主要函数分析

(1)Honeyd_recv_cb():接收数据包函数,接受到数据包后便开始工作;(2)Honeyd_input():数据包转发函数,对进入的数据包进行路由转发或者直接转发;(3)Honeyd_route_packet():数据包处理函数,在处理数据包时会参考配置数据库中的配置数据,根据数据库中配置的逻辑链路,调用相关函数;(4)Honeyd_delay_packet():链路延时处理函数;(5)Honeyd_delay_cb():发送被延迟函数处理好的数据包函数;根据送来的数据包的标记进行分流。(6)Honeyd_dispatch():协议处理机函数,根据ip包的头部字段的类型,分别调用不同的协议处理函数;(7)Honeyd_ip_send():发送函数;用来加工完成协议方面处理的数据包。

2.3 路由拓扑分析

通常情况下,Honeyd架构支持平行共存的多个网络入口。在模拟网络时,当Honeyd框架系统接收到一个发送给真实系统的数据包时,该数据包会同样的周游该网络拓扑,直到发现一个可以直接响应该真实系统所处网络空间的虚拟路由器。需要的时候,Honeyd框架系统会发送ARP请求来确定真实系统的硬件地址,然后将该数据包封装在一个以太网帧里发送给该地址。类似的,Honeyd框架系统也可以利用相应的虚拟路由器来响应真实系统所发送的ARP请求。[3]

3 系统优化设计

3.1 日志模块改进需求

Honeyd的日志记录模块就是将搜集到的流量信息中分析出的各种攻击信息记录到日志文件中。通过这些信息来确定入侵者的一系列攻击行为。而Honeyd的日志记录机制一般是不会记录加密的部分信息。

此外,Honeyd的日志文件也缺少隐藏功能,这样攻击者一旦攻陷了蜜罐主机,既可将日志文件删除。所以,很有必要为Honeyd开发一个日志记录系统,它既有很高的安全性,隐蔽性,也可对加密协议进行处理,从而使Honeyd搜集到的信息更有利用价值。

3.2 Linux的系统调用设计

传统的从内核截获交互数据(攻击者与目标蜜罐终端进行交互的数据)的方法为中断sys_read()或sys_write()系统调用,在其中加入记录击键的相关函数。但是,很显然,这种方法是很不稳定的并且会明显的降低系统的额速度,因为中断的恰恰是系统使用最频繁的两个系统调用sys_read(),sys_write(),其中sys_read()在每个进程需要读写设备的时候都会用到。所以采用了一个更稳定,效率更高的办法,就是劫持tty_buffer()进程函数。

3.3 模块功能设计

(1)数据捕获:通过劫持适合的函数实现数据捕获,获得击键信息;(2)文件(目录)隐藏:通过干预使得系统调用忽略特定的目录项(要隐藏的文件),实现隐藏文件(目录)功能;(3)进程隐藏:用隐藏文件的方法来隐藏proc文件系统中的文件,从而实现对进程信息的隐藏;(4)网络连接隐藏:通常利用netstat命令读取/proc/net/tcp和/proc/net/udp文件,来查看网络连接状态的信息,对系统调用sys_read()进行替换达到隐藏目的;(5)模块本身隐藏:系统通过调用sys_query_module来查询模块信息,所以可以通过修改该系统调用隐藏指定模块。

4 结束语

虽然蜜罐系统主要是一种研究工具,但是基于Honeyd的蜜罐系统现在的应用比较广泛,而且具备真正的商业应用的能力。所以,通过对Honeyd的分析和改进,不但可以为网络管理员提供一些技术或思路上的帮助,也能给蜜罐领域的应用者提供理论与应用上的帮助。随着国家对信息安全相关产业的重视,网络安全和网络入侵也呈现多样化的发展,信息安全研究者和相关从业者也将为此付出更大的努力。

参考文献:

[1]Lance Spitzner, Honeypots:Definitions and Value of Honeypots[EB/OL]. http://,2003.5.29.

[2]王婷.基于Honeyd的蜜罐技术研究与设计[D],西南交通大学,2007(09).

[3]梁知音.Honeyd软件框架介绍[EB/OL],北京大学计算机科学技术研究所,2004.

作者简介:关兴(1985-),男,满族,辽宁沈阳人,助理工程师,研究方向:信息安全。

作者单位:东北大学软件学院实验中心,沈阳 110819;法国电信北京研发中心有限公司,北京 100086;辽宁省凌海市公安局,辽宁凌海 121200

上一篇:开关磁阻电机调速系统的中断设计 下一篇:探讨计算机网络技术及在实践中的应用