一种应用层数据的安全扫描方法及装置制造方法及图纸

技术编号:35289651 阅读:22 留言:0更新日期:2022-10-22 12:35
本发明专利技术公开一种应用层数据的安全扫描方法及装置,通过设置两个包的缓存队列,对应用层数据进行缓存并写入内存的同时减少对收发双方数据交互的延迟,并且当符合预设的条件时及时的对缓存的已接收数据进行病毒扫描,若发现威胁能够在数据转发完毕之前丢弃后续数据包以阻断数据流,保证接收方的安全。保证接收方的安全。

【技术实现步骤摘要】
一种应用层数据的安全扫描方法及装置


[0001]本专利技术属于网络安全
,尤其是涉及一种对应用层网络数据进行安全扫描的方法及装置。

技术介绍

[0002]通过对网络数据内容的有效管理在一定程度上能降低网络的安全风险。网络数据包的协议还原是实现网络内容管理的重要基础。协议还原技术就是捕获网络中的所有报文,根据标准的协议规定对报文进行重组和还原,在对底层协议进行解析的基础上,实现对应用层的协议进行分析。网络带宽的快速增长和网络信息的日益丰富,对网络数据包的协议还原在性能和功能方面都提出更高要求。
[0003]利用Libnids的流重组的功能,可以方便地屏蔽掉三层和和四层的具体实现细节,可以直接拿到应用层的数据从而方便地进行应用层协议的还原,但是由于每个包都会经过Libnids的三四层处理流程,因此在一定程度上影响了还原的性能。本专利技术在利用Libnids库的基础上,当能够判断出该流当前传输的是文件数据流(例如smtp中的附件,ftp中的文件数据),则可以跳过libnids的处理流程,直接将包的数据部分写入内存,从而提高文件还原的效率。

技术实现思路

[0004]有鉴于此,本专利技术旨在提供一种通过提高应用层数据流文件还原效率进且能有效阻断威胁的安全扫描方法及装置。
[0005]首先,提供一种应用层数据的安全扫描方法,包括将数据流还原为文件后进行扫描:获取发方的数据文件的第一个包并保存至缓存队列的第一位置后,向发方发送第一ACK;当收到发方的第二个包后将其置于第二位置,并判断是否为“FIN”;若不为“FIN”,将所述第一个包发送给收方;拦截收方返回的第二ACK,同时向发方发送该第二ACK;将所述第一个包写入内存并从缓存队列删除,将所述第二个包移动到所述第一位置,如此进行循环接收与发送,直至收到发方的“FIN”后,将内存中缓存的当前所有已接收数据还原为文件;对还原的文件进行扫描,若存在威胁则丢弃最后一个包以阻断该连接。
[0006]所述对数据流进行扫描之前,还包括捕获数据包并根据协议类型判断传输的是否为文件数据流,若是则对包的数据部分写入内存并还原为文件进行扫描,否则按照对应的协议进行IP重组、TCP流重组与数据解析。
[0007]所述将数据包写入内存,包括:根据数据包的源IP、目的IP、源端口与目的端口查找预设的哈希表中对应的TCP会话。
[0008]若在哈希表中未查找到,则判断该数据包是否为建立连接报文;若是则新建TCP会话并初始化,记录数据包的源IP、目的IP、源端口与目的端口,并
记录发送序号、确认序号、窗口大小与最大报文段的值;否则结束对该数据包的处理。
[0009]将数据包写入内存,还包括:根据数据包的序号将数据插入到内存中缓存的已接收数据。
[0010]若数据包的序号等于缓存中最后一个包的结束序号则直接将该数据包插入接收缓存的末尾,否则依次将该数据包序号与接收缓存中各个包进行比较以确定该数据包在接收缓存中的位置。
[0011]数据包缓存之前,还包括,根据预设的节点空间与最大连接数为各协议分配对应的内存空间。
[0012]同时,还提供一种应用层数据扫描装置,所述装置包括:抓包模块,捕获数据包并根据协议类型判断传输的是否为文件数据流,若是则发送至缓存模块;缓存模块,设置两个包的缓存队列,循环接收与发送数据包,将符合预设条件的数据包发送至写内存模块;写内存模块,根据数据包的源IP、目的IP、源端口与目的端口查找预设的哈希表中对应的TCP会话;若在哈希表中未查找到,则判断该数据包是否为建立连接报文:若是则新建TCP会话并初始化,记录数据包的源IP、目的IP、源端口与目的端口,并记录发送序号、确认序号、窗口大小与最大报文段的值;根据数据包的序号将数据插入到内存中缓存的已接收数据;文件还原模块,将内存中缓存的当前所有已接收数据还原为文件;扫描模块,对还原的文件进行扫描,若存在威胁则丢弃最后一个包以阻断该连接。
[0013]上述的应用层数据扫描装置,将数据流还原为文件后进行扫描:获取发方的数据文件的第一个包并保存至缓存队列的第一位置后,向发方发送第一ACK;当收到发方的第二个包后将其置于第二位置,并判断是否为“FIN”;若不为“FIN”,将所述第一个包发送给收方;拦截收方返回的第二ACK,同时向发方发送该第二ACK;将所述第一个包写入内存并从缓存队列删除,将所述第二个包移动到所述第一位置,如此进行循环接收与发送,直至收到发方的“FIN”后,将内存中缓存的当前所有已接收数据还原为文件;对还原的文件进行扫描。
[0014]采用上述技术方案的本专利技术,通过设置两个包的缓存队列,对应用层数据进行缓存并写入内存的同时减少对收发双方数据交互的延迟,并且当符合预设的条件时及时的对缓存的已接收数据进行病毒扫描,若发现威胁能够在数据转发完毕之前丢弃后续数据包以阻断数据流,保证接收方的安全。
具体实施方式
[0015]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将对本专利技术实施例中的技术方案进行清楚、完整地描述。
[0016]为了方便理解,下面对本专利技术实施例中涉及的名词进行解释:协议还原就是根据协议定义的规则,按照协议栈顺序从下向上依次对数据包进行捕获、逐层分析(MAC,IP分片重组,TCP流重组,具体内容),最终还原出用户原始交互信息
(文字,图片,文件等),该过程也可以划分为应用层之下的探测部分和应用层协议还原两部分。
[0017]TCP是一种流协议,发送者以字节流的形式传递给接收者,这意味着,在还原应用层协议之前,我们需要首先将一个个的tcp数据包组装成一个字节流,即tcp流重组。初始化TCP Session的Hash表,针对每一次TCP连接都建立一个TCP Session 。收到一个数据段,首先按照此数据段的(四元组)计算所属TCP会话是否已经在表中存在,若存在,则根据序列号将其插入到所属会话上下文的适当的位置。不存在的话,建立一个TCP Session节点并存储到HASH表中。在此过程中,如果收到的数据包与链表中某一个数据包的序列号和数据长度相同的话,说明是重发包,做丢弃处理,保证链表中每一个数据包的序列号连续,且第一个数据包为SYN包,最后一个包为FIN包(或RST包)。
[0018]在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
[0019](1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
[0020](2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
[0021](3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。...

【技术保护点】

【技术特征摘要】
1.一种应用层数据的安全扫描方法,其特征在于,包括将数据流还原为文件后进行扫描:获取发方的数据文件的第一个包并保存至缓存队列的第一位置后,向发方发送第一ACK;当收到发方的第二个包后将其置于第二位置,并判断是否为“FIN”;若不为“FIN”,将所述第一个包发送给收方;拦截收方返回的第二ACK,同时向发方发送该第二ACK;将所述第一个包写入内存并从缓存队列删除,将所述第二个包移动到所述第一位置,如此进行循环接收与发送,直至收到发方的“FIN”后,将内存中缓存的当前所有已接收数据还原为文件;对还原的文件进行扫描,若存在威胁则丢弃最后一个包以阻断该连接。2.根据权利要求1所述的扫描方法,其特征在于,所述对数据流进行扫描之前,还包括捕获数据包并根据协议类型判断传输的是否为文件数据流,若是则对包的数据部分写入内存并还原为文件进行扫描,否则按照对应的协议进行IP重组、TCP流重组与数据解析。3.根据权利要求1或2所述的扫描方法,其特征在于,所述将数据包写入内存,包括:根据数据包的源IP、目的IP、源端口与目的端口查找预设的哈希表中对应的TCP会话。4.根据权利要求3所述的扫描方法,其特征在于,若在哈希表中未查找到,则判断该数据包是否为建立连接报文;若是则新建TCP会话并初始化,记录数据包的源IP、目的IP、源端口与目的端口,并记录发送序号、确认序号、窗口大小与最大报文段的值;否则结束对该数据包的处理。5.根据权利要求4所述的扫描方法,其特征在于,将数据包写入内存,还包括:根据数据包的序号将数据插入到内存中缓存的已接收数据。6.根据权利要求5所述的扫描方法,其特征在于,若数据包的序号等于缓存中最后一个包的结束序号则直接将该数据包插入接收缓存的末尾,...

【专利技术属性】
技术研发人员:刘亚轩何建锋
申请(专利权)人:西安交大捷普网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1