一种蜜罐系统攻击行为数据异步http发送方法及装置与流程

文档序号:23426328发布日期:2020-12-25 11:56阅读:175来源:国知局
一种蜜罐系统攻击行为数据异步http发送方法及装置与流程

本发明涉及蜜罐技术领域,特别涉及一种蜜罐系统攻击行为数据异步http发送方法及装置。



背景技术:

随着云计算、虚拟化技术广泛应用,结合蜜罐系统的发展,大量的蜜罐系统的前沿部署;基于“连接访问即攻击信息”的理念,如何将蜜罐系统采集到的海量攻击行为数据快速、高效的发送到数据处理中心、形成有效的威胁情报,已经成为一种衡量蜜罐系统的重要性能指标。

通常,网络数据传输方式有:a、采用操作系统层sockerapi,通过tcp或udp协议进行传输;b、采用各数据库客户端api,将数据直接传入数据库服务端;c、采用基于soap简单对象访问协议的webservice的远程调用方式;d、采用基于http协议的restfulapi等数据发送方式。

目前,现有大多数蜜罐系统发送攻击行为数据的方式,主要采用以下方法:

1、采用操作系统层sockerapi,通过tcp或udp协议进行传输。该方法先通过“socket”建立与数据中心服务器的物理连接,并将攻击行为数据进行二进制化封包后进行数据发送。

2、采用各数据库客户端api,将数据直接传入数据库服务端。如采用mysql提供的capi接口与mysql数据库服务器端建立连接后,将攻击行为数据通过api直接存入事先建立的表中。

3、采用基于soap简单对象访问协议的webservice的远程调用方式。该方法通过soap简单对象访问协议将攻击行为数据封装成xml格式的数据,通过rpc远程过程调用的方式将数据发送到webservice端。

而现有技术采用操作系统层sockerapi,通过tcp或udp协议进行传输方式,由于要将攻击行为数据进行二进制化编解码处理,不利于异构系统中共享;比如采用pyhon、nodejs、go等语言开发的服务端程序为了解析出具体的攻击行为数据,需要分别提供不同语言的ffi外部扩展功能的bind,这样不仅阻碍了数据的互通性,还加大了系统复杂性和开发成本。

采用各数据库客户端api,将数据直接传入数据库服务端。该方式通过使用具体的数据库存客户端api,简化了数据发送过程;但由于采用结构化存储数据,需要事先预定义好数据表结构,这样就无法满足日益变化的攻击行为特性,降低了系统的可扩展性和可维护性。

采用基于soap简单对象访问协议的webservice的远程调用方式,由soap简单对象访问协议采用繁重的xml语言描述,增加了数据传输总量,降低了数据传输效率。这个在高交互、高并发的蜜罐系统中,将增加网络带宽的要求和增加蜜罐内存使用率,从而降低整个蜜罐系统性能。

而虽然专利文献cn111431881a提供了一种基于windows操作系统的诱捕节点实现技术及装置,包括步骤:s01.攻击者发起扫描连接;s02.启动windows诱捕节点转发服务与攻击者建立连接;s03.windows诱捕节点将身份信息转发给linux中间层转发服务;s04.linux中间层转发服务发起与蜜罐主机服务的连接请求;s05.蜜罐主机服务响应连接,转发给linux中间层转发服务;s06.linux中间层转发服务将连接响应信息转发回windows诱捕节点;s07.windows诱捕节点转发服务响应信息回应给攻击者;其提到了windows诱捕节点转发服务采用libuv库的异步io通信机制,将攻击者身份信息、攻击行为信息通过开源的cereal序列化库打包,并异步发送给linux中间层转发服务;但是并没有涉及到具体的异步发送手段。



技术实现要素:

为解决现有技术中的技术问题,本发明提供了一种蜜罐系统攻击行为数据异步http发送方法及装置,通过充分的技术分析,深度融合开源libcurlmultiinterface、linuxepoll及多线程技术,采用基于http传输协议的restful风格的接口方式,将攻击行为数据json化后,通过http协议的get、post等动作谓词,定义各种uri格式接口与数据中心服务端进行数据交换。通过本发明解决了异构系统中的数据互通性问题、降低了数据处理复杂性,从而降低了系统开发难度及开发成本。而且由于数据传输接口采用http的restfulapi技术,丰富了蜜罐系统的部署方式,可同时适应传统蜜网方式,也可适应分布式部署方式。

具体地,一方面,本发明提供了一种蜜罐系统攻击行为数据异步http发送方法,包括如下步骤:

s1:蜜罐系统向任务分发接口模块发送采集到的攻击行为数据;

s2:任务分发接口模块处理攻击行为数据,并生成线程安全的数据发送任务;

s3:任务分发接口模块生成数据发送任务句柄,并向事件处理线程模块投递任务;

s4:事件处理线程模块在event-loop线程中将任务关联poll句柄,并向http操作处理模块调用关联multi句柄,驱动libcurlhttp请求操作;

s5:http操作处理模块利用multi句柄为每一次的libcurlhttp请求操作产生相应的socket描述符fd,并向http操作处理模块投递读、写io请求;

s6:http操作处理模块收到读、写io请求,启动socket连接、读写io操作,事件处理线程模块在event-loop线程中处理poll对应的socket描述符fd和读、写io请求,并将读、写io操作结果通知到http操作处理模块;

s7:http操作处理模块对接收到的读、写io操作结果处理后,返回任务分发接口模块。

优选地,步骤s2中任务分发接口模块json化处理攻击行为数据,并生成线程安全的数据发送任务uri。

优选地,步骤s4中驱动libcurlhttp请求操作,包括以下步骤:

s41:当事件处理线程模块获取到数据发送任务url后,为该数据发送任务url生成easy句柄;

s42:通过libcurl的curl_multi_add_handle接口将步骤s41的发送任务easy句柄添加到multi句柄中,此时libcurl内部产生相对应的socket描述符fd,并通过curlmopt_sockerfunction回调函数关联事件处理线程的poll句柄和向http操作处理模块投递读、写io请求;

s43:http操作处理模块收到读、写io请求后,由libcurl内部发启socket连接、读写io操作。

优选地,任务分发接口模块将生成数据发送任务句柄通过采用http的restfulapi技术的数据传输接口投递到事件处理线程模块。

优选地,步骤s7具体包括如下步骤:

s71:http操作处理模块接收到读、写io操作完成通知后,根据socket描述符fd找到在http操作处理模块关联的easy句柄;

s72:根据easy句柄,找到对应数据发送任务;

s73:将读、写io操作结果返回给数据发送任务;

s74:清理easy句柄和数据发送任务相关资源。

优选地,步骤s6中事件处理线程模块在event-loop线程中处理poll对应的socket描述符fd和读、写io请求,具体包括如下步骤:

s61:通过数据发送任务的easy句柄关联到multi句柄时,libcurl库将产生对应的socket描述符fd发起联接,并将写io请求与poll句柄关联;待事件处理线程将对应的socket描述符fd写完成通知,事件处理线程得到对应的socket描述符fd写完成通知,并根据对应的数据发送任务,并将数据发送任务标志已经发送,移出发送事件队列,等待数据服务器处理结果;

s62:等到接收到读io操作结果,表明攻击数据任务发送成功,数据服务器处理后,将数据服务器处理结果返回给数据发送任务。其中,本发明中提供的写(读)完成通知,就是linuxpoll异步机制,当调用write或read后,等实际操作完成了,linux内核才通知相应的poll句柄已经完成操作的机制。其中,事件处理线程得到对应的socket描述符fd写完成通知后,在关联easy句柄时,会关联curlmopt_sockerfunction回调函数,向http操作处理模块进行通知的。

优选地,所述事件处理线程模块包括异步io事件循环模块,异步io事件循环模块包括io事件列队、任务处理模块和io事件处理模块,任务处理模块从io事件列队中获取任务,任务处理模块在event-loop线程中将任务关联poll句柄,并向http操作处理模块调用关联multi句柄,驱动libcurlhttp请求操作,http操作处理模块利用multi句柄为每一次的libcurlhttp请求操作产生相应的socket描述符fd,并向io事件处理模块投递读、写io请求。

优选地,读、写io操作中的写io操作是向数据服务器通过socket发送攻击事件数据;读io操作是读取数据服务器返回的结果,读、写io操作是将攻击事件数据发送给数据服务器,并确认数据服务器是否收到。

另一方面,本发明提供了一种蜜罐系统攻击行为数据异步http发送装置,包括任务分发接口模块、事件处理线程模块和http操作处理模块;

所述任务分发接口模块用于将蜜罐系统采集到的每一次攻击行为数据经过处理后,生成线程安全的数据发送任务,并将该任务投递到事件处理线程队列中;

事件处理线程模块通过启动event-loop事件循环线程和使用libcurl库的multiinterface关联poll句柄,驱动libcurlhttp请求操作;

http操作处理模块利用multi句柄为每一次的libcurlhttp请求操作产生相应的socket描述符fd,并向事件处理线程模块投递读、写io请求,并通过事件处理线程模块在event-loop线程中处理poll对应的socketfd读、写io操作,并调用http操作处理模块读、写io操作结果处理后,经过http操作处理模块的读、写io操作结果处理后,返回任务分发接口模块。

优选地,所述事件处理线程模块包括异步io事件循环模块,异步io事件循环模块包括io事件列队、任务处理模块和io事件处理模块,任务处理模块从io事件列队中获取任务,任务处理模块在event-loop线程中将任务关联poll句柄,并向http操作处理模块调用关联multi句柄,驱动libcurlhttp请求操作,http操作处理模块利用multi句柄为每一次的libcurlhttp请求操作产生相应的socket描述符fd,并向io事件处理模块投递读、写io请求。如权利要求1所述的蜜罐系统攻击行为数据异步http发送装置。

所述任务分发接口模块用于将蜜罐系统采集到的每一次攻击行为数据经过处理后,生成线程安全的数据发送任务,并将该任务投递到事件处理线程队列中。

优选地,任务分发接口模块将生成数据发送任务句柄通过采用http的restfulapi技术的数据传输接口投递到io事件列队中。

优选地,所述任务分发接口模块用于将蜜罐系统采集到的每一次攻击行为数据经过json化处理后,生成线程安全的数据发送任务uri,并将该任务投递到事件处理线程队列中。

与现有技术相对比,本发明的有益效果如下:

(1)本发明由于采用了linuxepoll机制的独立的事件处理线程技术,将同步http发送请求转换成基于生产-消费都模型的异步io模式,使得蜜罐系统网络吞吐率提升了近6倍,同时还减少了内存占用。

(2)本发明由于采用了开源libcurlmultiinterface,在海量攻击行为数据并发的情况下,可以降低数据中心服务器的端口及socket描述符的资源占用,提高数据中心服务器的整体服务性能。

(3)在高负载的蜜罐系统中,由于采用异步io技术,提高蜜罐系统的数据处理效率,大约降低了8%的攻击行为数据信息丢包率,降低了攻击行为无法监控的风险。

(4)由于数据传输接口采用http的restfulapi技术,丰富了蜜罐系统的部署方式,可同时适应传统蜜网方式,使得蜜罐系统可以分布式部署。

(5)由于采用libcurlmultiinterface、linuxepoll及多线程技术,提高了数据发送效率,在保证高并发的同时,降低了蜜罐内存使用率,由于采用json化的数据编码方式,很好的应对攻击行为数据的多样性,提高了系统可扩展性和可维护性。

(6)本发明提供的异构系统中的数据互通性、降低了数据处理复杂性,从而降低了系统开发难度及开发成本。

附图说明

图1为本发明提供的蜜罐系统攻击行为数据异步http发送装置架构图;

图2为本发明提供的蜜罐系统攻击行为数据异步http发送方法流程图。

具体实施方式

下面结合附图1,对本发明的具体实施方式作详细的说明。

参图1所示,图1为本发明提供的蜜罐系统攻击行为数据异步http发送装置架构图;本发明是一种基于开源的libcurlhttp协议传输库和linuxepoll及多线程技术的有机结合,基于http协议的restful风格的接口方式实现的异步传输攻击行为数据的技术方案。本方案通过使用linux多系统程技术,将接口层和网络(socker)读写io操作功能分离,通过linuxepoll系统功能将所有网络(socker)读写io操作封装成一个事件处理线程;接口层将所有蜜罐中要发送的攻击行为数据封装多线程安全的事件任务,并将事件任务投递事件处理线程队列中;最终事件处理线程将事件任务利用libcurlmultiinterface接口与网络(socker)读写io关联,由事件处理线程进行统一发送。

本发明提供了一种蜜罐系统攻击行为数据异步http发送装置,包括任务分发接口模块、事件处理线程模块和http操作处理模块三大模块;

一、任务分发接口模块技术原理如下:

该模块采用linux多线程通信机制,将蜜罐系统采集到的每一次攻击行为数据经过json处理后,生成线程安全的数据发送任务,并将该任务事件处理线程队列中。最终,通过事件处理线程模块驱动,将任务发送结果返回。具体功能如下:

1、攻击行为数据json化处理。

2、生成线程安全的数据发送任务。

3、处理任务发送结果。

4、导出数据发送接口。

二、基于linuxepoll和多线程的事件处理线程模块技术原理

该模块采用linuxepoll系统功能及多线程机制,通过启动独立的event-loop事件循环线程和使用libcurl库的multiinterface来关联poll句柄,从而分离libcurlhttp请求操作,实现异步的http发送机制。该模块采用经典的生产-消费者模型,每一次事件循环都执行一个由任务分发接口模块产生的数据发送任务,并通过libcurl库的multiinterface关联的poll句柄,从而不断驱动所有的libcurlhttp请求操作。具体功能如下:

1、维护数据发送任务(io事件)队列。

2、关联libcurlmultihandler(multi句柄)。

3、驱动libcurlhttpio操作。

三、基于libcurl的http操作处理模块技术原理

模块主要采用开源libcurl库中的multiinterface技术,利用libcurlmultihander(multi句柄)为每一次的http请求操作产生一个socker描述符fd,并通过异步io事件循环模块中的关联libcurlmultihandler功能,从而完成http请求的读、写操作。该模块功能具体如下:

1、维护http请求操作的socket描述符资源池。

2、完成具体http请求的读写操作。

3、反馈http请求任务的结果。

具体地,本发明提供了一种蜜罐系统攻击行为数据异步http发送装置,包括任务分发接口模块、事件处理线程模块和http操作处理模块;

所述任务分发接口模块用于将蜜罐系统采集到的每一次攻击行为数据经过处理后,生成线程安全的数据发送任务,并将该任务投递到事件处理线程队列中;

事件处理线程模块通过启动event-loop事件循环线程和使用libcurl库的multiinterface关联poll句柄,驱动libcurlhttp请求操作;

http操作处理模块利用multi句柄为每一次的libcurlhttp请求操作产生相应的socket描述符fd,并向事件处理线程模块投递读、写io请求,并通过事件处理线程模块在event-loop线程中处理poll对应的socketfd读、写io操作,并调用http操作处理模块读、写io操作结果处理后,经过http操作处理模块的读、写io操作结果处理后,返回任务分发接口模块。

所述事件处理线程模块包括异步io事件循环模块,异步io事件循环模块包括io事件列队、任务处理模块和io事件处理模块,任务处理模块从io事件列队中获取任务,任务处理模块在event-loop线程中将任务关联poll句柄,并向http操作处理模块调用关联multi句柄,驱动libcurlhttp请求操作,http操作处理模块利用multi句柄为每一次的libcurlhttp请求操作产生相应的socket描述符fd,并向io事件处理模块投递读、写io请求。如权利要求1所述的蜜罐系统攻击行为数据异步http发送装置。

所述任务分发接口模块用于将蜜罐系统采集到的每一次攻击行为数据经过处理后,生成线程安全的数据发送任务,并将该任务投递到事件处理线程队列中。

作为优选实施方式,任务分发接口模块将生成数据发送任务句柄通过采用http的restfulapi技术的数据传输接口投递到io事件列队中。

作为优选实施方式,所述任务分发接口模块用于将蜜罐系统采集到的每一次攻击行为数据经过json化处理后,生成线程安全的数据发送任务uri,并将该任务投递到事件处理线程队列中。

如图1-2所示,具体地,本发明提供了一种蜜罐系统攻击行为数据异步http发送方法,包括如下步骤:

s1:蜜罐系统向任务分发接口模块发送采集到的攻击行为数据;

s2:任务分发接口模块处理攻击行为数据,并生成线程安全的数据发送任务;

s3:任务分发接口模块生成数据发送任务句柄,并向事件处理线程模块投递任务;

s4:事件处理线程模块在event-loop线程中将任务关联poll句柄,并向http操作处理模块调用关联multi句柄,驱动libcurlhttp请求操作;

s5:http操作处理模块利用multi句柄为每一次的libcurlhttp请求操作产生相应的socket描述符fd,并向http操作处理模块投递读、写io请求;

s6:http操作处理模块收到读、写io请求,启动socket连接、读写io操作,事件处理线程模块在event-loop线程中处理poll对应的socket描述符fd和读、写io请求,并将读、写io操作结果通知到http操作处理模块;

步骤s6中事件处理线程模块在event-loop线程中处理poll对应的socket描述符fd和读、写io请求,具体包括如下步骤:

s61:通过数据发送任务的easy句柄关联到multi句柄时,libcurl库将产生对应的socket描述符fd发起联接,并将写io请求与poll句柄关联;待事件处理线程将对应的socket描述符fd写完成通知,事件处理线程得到对应的socket描述符fd写完成通知,并根据对应的数据发送任务,并将数据发送任务标志已经发送,移出发送事件队列,等待数据服务器处理结果;

s62:等到接收到读io操作结果,表明攻击数据任务发送成功,数据服务器处理后,将数据服务器处理结果返回给数据发送任务。其中,本发明中提供的写(读)完成通知,就是linuxpoll异步机制,当调用write或read后,等实际操作完成了,linux内核才通知相应的poll句柄已经完成操作的机制。其中,事件处理线程得到对应的socket描述符fd写完成通知后,在关联easy句柄时,会关联curlmopt_sockerfunction回调函数,向http操作处理模块进行通知的。

s7:http操作处理模块对接收到的读、写io操作结果处理后,返回任务分发接口模块。

作为优选实施方式,本发明提供的步骤s7具体包括如下步骤:

s71:http操作处理模块接收到读、写io操作完成通知后,根据socket描述符fd找到在http操作处理模块关联的easy句柄;

s72:根据easy句柄,找到对应数据发送任务;

s73:将读、写io操作结果返回给数据发送任务;

s74:清理easy句柄和数据发送任务相关资源。

其中,本发明步骤s2中任务分发接口模块json化处理攻击行为数据,并生成线程安全的数据发送任务uri。

作为优选实施方式,本发明提供的步骤s4中驱动libcurlhttp请求操作,包括以下步骤:

s41:当事件处理线程模块获取到数据发送任务url后,为该数据发送任务url生成easy句柄;

s42:通过libcurl的curl_multi_add_handle接口将步骤s41的发送任务easy句柄添加到multi句柄中,此时libcurl内部产生相对应的socket描述符fd,并通过curlmopt_sockerfunction回调函数关联事件处理线程的poll句柄和向http操作处理模块投递读、写io请求;

s43:http操作处理模块收到读、写io请求后,由libcurl内部发启socket连接、读写io操作。

作为优选实施方式,本发明提供的任务分发接口模块将生成数据发送任务句柄通过采用http的restfulapi技术的数据传输接口投递到事件处理线程模块。

本发明提供的事件处理线程模块包括异步io事件循环模块,异步io事件循环模块包括io事件列队、任务处理模块和io事件处理模块,任务处理模块从io事件列队中获取任务,任务处理模块在event-loop线程中将任务关联poll句柄,并向http操作处理模块调用关联multi句柄,驱动libcurlhttp请求操作,http操作处理模块利用multi句柄为每一次的libcurlhttp请求操作产生相应的socket描述符fd,并向io事件处理模块投递读、写io请求。

其中,读、写io操作中的写io操作是向数据服务器通过socket发送攻击事件数据;读io操作是读取数据服务器返回的结果,读、写io操作是将攻击事件数据发送给数据服务器,并确认数据服务器是否收到。

本发明攻击行为数据经过任务分发接口模块生成数据发送任务后,所有io操作和结果处理都在事件处理线程模块中的event-loop线程中处理,从而形成了发送、处理的高性能异步http发送流程。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1