CN114244560B - 流量处理方法及装置,电子设备,存储介质 - Google Patents

流量处理方法及装置,电子设备,存储介质 Download PDF

Info

Publication number
CN114244560B
CN114244560B CN202111327821.2A CN202111327821A CN114244560B CN 114244560 B CN114244560 B CN 114244560B CN 202111327821 A CN202111327821 A CN 202111327821A CN 114244560 B CN114244560 B CN 114244560B
Authority
CN
China
Prior art keywords
data packet
network card
point information
hook point
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111327821.2A
Other languages
English (en)
Other versions
CN114244560A (zh
Inventor
李拓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qax Technology Group Inc
Secworld Information Technology Beijing Co Ltd
Original Assignee
Qax Technology Group Inc
Secworld Information Technology Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qax Technology Group Inc, Secworld Information Technology Beijing Co Ltd filed Critical Qax Technology Group Inc
Priority to CN202111327821.2A priority Critical patent/CN114244560B/zh
Publication of CN114244560A publication Critical patent/CN114244560A/zh
Application granted granted Critical
Publication of CN114244560B publication Critical patent/CN114244560B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供一种流量处理方法及装置。其中,该方法包括:接收流量数据、钩子点信息和数据包过滤规则,流量数据对应钩子点信息;将钩子点信息发送给内核态的网卡控制模块;通过数据包过滤规则过滤流量数据,得到符合数据包过滤规则的至少一个第一数据包,将钩子点信息和至少一个第一数据包发送至内核态的网卡驱动模块;捕获内核态中虚拟网卡的至少一个第二数据包,第二数据包是通过虚拟网卡的流量。实现了数据包在任意位置可被基于libpcap的流量处理工具实时留存、分析。在用户态实现了与内核包过滤功能等效的网络流量过滤规则,使数据包的过滤规则动态可配。

Description

流量处理方法及装置,电子设备,存储介质
技术领域
本发明涉及信息安全领域,尤其涉及一种流量处理方法及装置。
背景技术
出于取证追踪或诊断分析的目的,工业控制网络安全设备常需要在网络流量的处理过程中,在合适的钩子点对特定的网络流量留存样本。
现有技术中,网络安全设备把数据包样本留存的代码嵌入在数据转发流程的业务逻辑中,数据包的过滤功能依靠硬编码实现。在IT网络中,一般基于IP、端口的过滤规则就能够满足需求,但是对于工业控制网络,往往需要基于数据包内容过滤,以决定留存哪些数据包样本,而各类工业控制协议的报文格式各异,硬编码的过滤逻辑无法满足实际应用场景中动态可配的数据过滤需求。
现有基于libpcap库的开源的网络流量捕获分析工具,如wireshark等,具有强大的数据过滤分析功能,但是只能留存分析经网卡收发的数据包,不能用于用户空间程序的任意钩子点。
发明内容
针对现有技术中的问题,本发明实施例提供一种流量处理方法及装置。
具体地,本发明实施例提供了以下技术方案:
第一方面,本发明实施例提供了一种流量处理方法,应用于用户态,包括:接收流量数据、钩子点信息和数据包过滤规则,所述流量数据对应所述钩子点信息,所述钩子点信息表示所述流量数据被截获的位置;将所述钩子点信息发送给内核态的网卡控制模块,所述网卡控制模块用于创建对应所述钩子点信息的虚拟网卡;通过所述数据包过滤规则过滤所述流量数据,得到符合所述数据包过滤规则的至少一个第一数据包,将所述钩子点信息和所述至少一个第一数据包发送至内核态的网卡驱动模块,所述网卡驱动模块用于根据所述钩子点信息驱动对应所述至少一个第一数据包的所述虚拟网卡;捕获内核态中所述虚拟网卡的至少一个第二数据包,所述第二数据包是通过所述虚拟网卡的流量。
进一步地,所述通过所述数据包过滤规则过滤所述流量数据,得到符合所述数据包过滤规则的至少一个第一数据包,包括:将所述数据包过滤规则转换为BPF字节码指令;通过所述BPF字节码指令过滤所述流量数据,得到符合所述BPF字节码指令的所述至少一个第一数据包。
第二方面,本发明实施例提供了一种流量处理方法,应用于内核态,包括:通过网卡控制模块接收钩子点信息,并建立对应所述钩子点信息的虚拟网卡;通过网卡驱动模块接收和存储至少一个第一数据包和所述钩子点信息,所述至少一个第一数据包与所述钩子点信息对应,根据所述钩子点信息,将所述至少一个第一数据包发送至对应的所述虚拟网卡,所述第一数据包表示符合数据包过滤规则的数据包;通过所述虚拟网卡,得到至少一个第二数据包。
进一步地,所述网卡驱动模块包括缓存描述符和收包线程;以及,所述通过网卡驱动模块接收和存储所述至少一个第一数据包和所述钩子点信息,所述至少一个第一数据包与所述钩子点信息对应,根据所述钩子点信息,将所述至少一个第一数据包发送至对应的所述虚拟网卡,包括:通过所述缓存描述符接收和存储所述至少一个第一数据包和所述钩子点信息,所述至少一个第一数据包与所述钩子点信息对应;所述收包线程根据所述钩子点信息,将所述至少一个第一数据包发送至对应的所述虚拟网卡。
进一步地,所述通过所述虚拟网卡,得到至少一个第二数据包,包括:判断所述虚拟网卡的网卡名是否为预设网卡名,若是,则在所述虚拟网卡中运行完AF_PACKET逻辑后,得到至少一个第二数据包,将所述至少一个第二数据包丢弃。
第三方面,本发明实施例还提供了一种流量处理装置,应用于用户态,包括:第一处理模块,用于接收流量数据、钩子点信息和数据包过滤规则,所述流量数据对应所述钩子点信息,所述钩子点信息表示所述流量数据被截获的位置;第二处理模块,用于将所述钩子点信息发送给内核态的网卡控制模块,所述网卡控制模块用于创建对应所述钩子点信息的虚拟网卡;第三处理模块,用于通过所述数据包过滤规则过滤所述流量数据,得到符合所述数据包过滤规则的至少一个第一数据包,将所述钩子点信息和所述至少一个第一数据包发送至内核态的网卡驱动模块,所述网卡驱动模块用于根据所述钩子点信息驱动对应所述至少一个第一数据包的所述虚拟网卡;第四处理模块,用于捕获内核态中所述虚拟网卡的至少一个第二数据包,所述第二数据包是通过所述虚拟网卡的流量。
第四方面,本发明实施例还提供了一种流量处理装置,应用于内核态,包括:第五处理模块,用于通过网卡控制模块接收钩子点信息,并建立对应所述钩子点信息的虚拟网卡;第六处理模块,用于通过网卡驱动模块接收和存储至少一个第一数据包和所述钩子点信息,所述至少一个第一数据包与所述钩子点信息对应,根据所述钩子点信息,将所述至少一个第一数据包发送至对应的所述虚拟网卡,所述第一数据包表示符合数据包过滤规则的数据包;第七处理模块,用于通过所述虚拟网卡,得到至少一个第二数据包。
第五方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述流量处理方法的步骤。
第六方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述流量处理方法的步骤。
第五方面,本发明实施例还提供了一种计算机程序产品,其上存储有可执行指令,该指令被处理器执行时使处理器实现第一方面或第二方面所述流量处理方法的步骤。
本发明实施例提供的流量处理方法及装置,通过接收流量数据、钩子点信息和数据包过滤规则,所述流量数据对应所述钩子点信息,所述钩子点信息表示所述流量数据被截获的位置;将所述钩子点信息发送给内核态的网卡控制模块,所述网卡控制模块用于创建对应所述钩子点信息的虚拟网卡;通过所述数据包过滤规则过滤所述流量数据,得到符合所述数据包过滤规则的至少一个第一数据包,将所述钩子点信息和所述至少一个第一数据包发送至内核态的网卡驱动模块,所述网卡驱动模块用于根据所述钩子点信息驱动对应所述至少一个第一数据包的所述虚拟网卡;捕获内核态中所述虚拟网卡的至少一个第二数据包,所述第二数据包是通过所述虚拟网卡的流量。可以看出,本发明实现了数据包在任意位置可被基于libpcap的流量处理工具实时留存、分析。在用户态实现与内核包过滤功能等效的网络流量过滤规则,使数据包的过滤规则动态可配。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的流量处理方法实施例流程图;
图2为本发明的流量处理方法的另一些实施例流程图;
图3为本发明的流量处理方法的应用场景的示意图;
图4为本发明的流量处理装置实施例结构示意图;
图5为本发明的流量处理装置另一些实施例结构示意图;
图6为本发明电子设备实体实施例结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明的流量处理方法实施例流程图,应用于用户态。如图1所示,本发明实施例的流量处理方法包括:
S101,接收流量数据、钩子点信息和数据包过滤规则,流量数据对应钩子点信息,钩子点信息表示流量数据被截获的位置。
流量数据可以是包含任意内容的数据。钩子点信息截获流量数据的位置是针对应用程序的,因此不能截获网卡中的流量数据。数据包过滤规则可以是用户自定义的(比如,关于某个关键字的过滤),可以是通过调用事先定义好的规则的方式接收。接收流量数据、钩子点信息和数据包过滤规则时计算机处于用户态,用户态是操作***的两种运行级别,intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高,Ring3最低。其中特权级0(Ring0)是留给操作***代码,设备驱动程序代码使用的,它们工作于***核心态;而特权极3(Ring3)则给普通的用户程序使用,它们工作在用户态。
S102,将钩子点信息发送给内核态的网卡控制模块,网卡控制模块用于创建对应钩子点信息的虚拟网卡。
在一些实施例中,当一个任务(进程)执行***调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。内核态和用户态可以通过可编程中断、硬件中断、软中断等方式相互转换。比如,Linux使用了Ring3级别运行用户态,Ring0作为内核态,没有使用Ring1和Ring2。Ring3状态不能访问Ring0的地址空间,包括代码和数据。Linux进程的4GB地址空间,3G-4G部分大家是共享的,是内核态的地址空间,这里存放在整个内核的代码和所有的内核模块,以及内核所维护的数据。用户运行一个程序,该程序所创建的进程开始是运行在用户态的,如果要执行文件操作,网络数据发送等操作,必须通过write,send等***调用,这些***调用会调用内核中的代码来完成操作(即将钩子点信息发送给内核态的网卡控制模块,网卡控制模块通过调用内核中的代码来创建对应钩子点信息的虚拟网卡),这时,必须切换到Ring0,然后进入3GB-4GB中的内核地址空间去执行这些代码完成操作,完成后,切换回Ring3,回到用户态。这样,用户态的程序就不能随意操作内核地址空间,具有一定的安全保护作用。
S103,通过数据包过滤规则过滤流量数据,得到符合数据包过滤规则的至少一个第一数据包,将钩子点信息和至少一个第一数据包发送至内核态的网卡驱动模块,网卡驱动模块用于根据钩子点信息驱动对应至少一个第一数据包的虚拟网卡。
在一些实施例中,通过数据包过滤规则过滤流量数据可以用数据包过滤器完成,数据包过滤器对所有通过它进出的数据包进行检查,并阻止那些不符合既定规则数据包的传输。数据包过滤器可以基于如下的标准对数据包进行过滤:该数据包所属的协议(TCP、UDP等等)、源地址、目的地址、目的设备的端口号(请求类型)、数据包的传输方向,向外传到英特网或向内传给局域网、数据库中既定数据包的署名等。可以通过数据包过滤器过滤流量数据,得到至少一个第一数据包,此时从用户态转为内核态,由于钩子点信息对应流量数据(也对应第一数据包),因此,调用内核态的网卡驱动模块,根据钩子点信息(钩子点信息与虚拟网卡对应),驱动对应至少一个第一数据包的虚拟网卡(钩子点信息与至少一个第一数据包对应)。
S104,捕获内核态中虚拟网卡的至少一个第二数据包,第二数据包是通过虚拟网卡的流量。
在一些实施例中,将至少一个第一数据包送入内核状态时,至少一个第一数据包在内核中的处理过程主要是在网卡和协议栈之间进行:从网卡接收数据,交给协议栈处理;协议栈将需要发送的数据(即至少一个第二数据包)通过网络发出去。由于至少一个第一数据包在内核中的处理过程中要经过网卡(即上述的虚拟网卡),因此使得至少一个第二数据包成为通过网卡的流量,能够适用于现有的基于libpcap库的开源的网络流量捕获分析工具,如wireshark等。由于至少一个第一数据包是能够通过数据包过滤规则在任意钩子点捕获的数据,因此,使通过第一数据包得到的至少一个第二数据包实现了在任意钩子点上使用基于libpcap的流量处理工具留存网络数据样本。
本发明实施例提供的流量处理方法,通过接收流量数据、钩子点信息和数据包过滤规则,流量数据对应钩子点信息,钩子点信息表示流量数据被截获的位置;将钩子点信息发送给内核态的网卡控制模块,网卡控制模块用于创建对应钩子点信息的虚拟网卡;通过数据包过滤规则过滤流量数据,得到符合数据包过滤规则的至少一个第一数据包,将钩子点信息和至少一个第一数据包发送至内核态的网卡驱动模块,网卡驱动模块用于根据钩子点信息驱动对应至少一个第一数据包的虚拟网卡;捕获内核态中虚拟网卡的至少一个第二数据包,第二数据包是通过虚拟网卡的流量。可以看出,本发明实现了数据包在任意位置可被基于libpcap的流量处理工具实时留存、分析。在用户态实现与内核包过滤功能等效的网络流量过滤规则,使数据包的过滤规则动态可配。
在一些可选的实现方式中,通过数据包过滤规则过滤流量数据,得到符合数据包过滤规则的至少一个第一数据包,包括:将数据包过滤规则转换为BPF字节码指令;通过BPF字节码指令过滤流量数据,得到符合BPF字节码指令的至少一个第一数据包。
作为示例,伯克利包过滤器(Berkeley Packet Filter,简称BPF),其目的是为了提供一种过滤包的方法(即通过BPF字节码指令过滤流量数据),并且要避免从内核空间到用户空间的无用的数据包复制行为。它最初是由从用户空间注入到内核的一个简单的字节码构成,它在那个位置利用一个校验器进行检查,以避免内核崩溃或者安全问题,并附着到一个套接字上,接着在每个接收到的包上运行。也可以将数据包过滤规则转换为扩展式伯克利包过滤器(extended Berkeley Packet Filter,简称eBPF)字节码文件,eBPF提供了内核的数据包过滤机制。其扩充了BPF的功能,丰富了指令集。在用户态实现了BPF解释器过滤数据包,并能够动态注入基于BPF字节码的过滤规则。
作为示例,如图3所示,用户态可以包括数据发送模块、过滤指令生成模块、过滤指令执行模块和启停控制模块。
(1)数据发送模块。工作在用户态,用于将数据包发送给内核态。初始化时,可以通过mmap***调用将/dev/mem映射到进程地址空间,进而得到物理地址与用户态虚拟地址的偏移量offset。当用户态要把数据包发给内核态时,执行以下步骤:
步骤1-1、判断调用者的钩子点信息,得到目标虚拟网卡的虚拟网卡缓存描述符的物理地址pdes,转换为用户态虚拟地址;
步骤1-2、调用过滤指令执行模块,若指令执行模块返回匹配失败,则退出;
步骤1-3、从空闲数据包存储区取出一个skb的data字段的物理地址paddr;
步骤1-4、将paddr加上offset,转换为用户态虚拟地址uaddr;
步骤1-5、将待发送数据包的内容拷贝到pkt_data区;
步骤1-6、填写data_len字段;
步骤1-7、根据数据包的来源钩子点信息,填写dev_name字段;
步骤1-8、把paddr放入可用数据包存储区中。
(2)过滤指令生成模块。通过libpcap库等将用户编写的tcpdump格式的过滤规则转换为BPF字节码。
(3)过滤指令执行模块。现有技术中,BPF机器指令是下发给内核的,由操作***内核执行。本发明在用户空间另行实现了BPF字节码解释器。
执行步骤如下:
步骤2-1、分析指令,提取出操作码和操作数、跳转地址等信息;
步骤2-2、根据操作码,调用对应指令的安全性检查逻辑:如除法指令,判断除数是否为0;如未能通过检查,则退出;
步骤2-3、调用指令对应的执行逻辑,解释执行;
步骤2-4、goto step1,直到遇到ret指令,返回1(表示符合数据包过滤规则的至少一个第一数据包)或0(表示不符合数据包过滤规则的至少一个第一数据包)。
(4)启停控制模块。用于控制数据包捕获功能的开启和关闭。开启过程参考下述步骤:
步骤3-1、获取用户通过人机界面下发的开启命令,包括开启的钩子点信息和数据包过滤规则信息;
步骤3-2通过netlink套接字,通知虚拟网卡控制模块在操作***中创建指定名称的虚拟网卡。例如,样本留存的钩子点信息为Modbus协议解析模块的入口,其钩子点信息可以包括编号,比如编号为25,则创建一块名为sample25的虚拟网卡;
步骤3-3、根据用户下发的过滤规则,调用过滤指令生成模块生成BPF字节码,并通过进程间通信发送给数据发送模块;
步骤3-4、在sample25网卡上,启动基于libpcap的数据包捕获分析工具;
步骤3-5、通知数据发送模块开启指定钩子点的数据包捕获功能。
步骤3-6、数据转发进程将Modbus协议解析模块的入口流量通过数据发送模块送到内核协议栈中,并最终被libpcap工具捕获。
关闭过程过程参考下述步骤:
步骤4-1、通知数据转发进程关闭指定钩子点的数据包捕获功能;
步骤4-2、等待已经送入内核的数据包处理完成;
步骤4-3、关闭基于libpcap的数据包捕获分析工具;
步骤4-4、通过netlink套接字,通知虚拟网卡控制模块在操作***中注销指定虚拟网卡。
图2为本发明的流量处理方法的另一些实施例的流程图,应用于内核态。如图2所示,本发明实施例的流量处理方法包括:
S201,通过网卡控制模块接收钩子点信息,并建立对应钩子点信息的虚拟网卡。
在一些实施例中,把各个数据包捕获钩子点当做虚拟网卡,实现了基于网卡的数据包捕获分析工具的复用。如图3所示网卡控制模块可以用于创建虚拟和删除虚拟网卡。网卡控制模块在内核中监听一个netlink套接字,用于用户态的启停控制模块与网卡控制模块通信。网卡控制模块可以提供如下两种功能:
(1)热***虚拟网卡
在操作***内核中,建立一个虚拟网卡,并注册到内核协议栈中。网卡名称一般为sample+钩子点信息的编号。例如,病毒检测的钩子点信息编号为34,则在内核协议栈中动态***一块名为sample34的网卡。
(2)热拔出虚拟网卡
将热***的虚拟网卡从内核协议栈中注销。比如,可以使用dev_get_by_name函数,通过网卡名获取net_device的指针,调用unregister_netdevice函数,将网卡从内核协议栈中注销。
S202,通过网卡驱动模块接收和存储至少一个第一数据包和钩子点信息,至少一个第一数据包与钩子点信息对应,根据钩子点信息,将至少一个第一数据包发送至对应的虚拟网卡,第一数据包表示符合数据包过滤规则的数据包。
在一些可选的实现方式中,网卡驱动模块包括缓存描述符和收包线程;以及,通过网卡驱动模块接收和存储至少一个第一数据包和钩子点信息,至少一个第一数据包与钩子点信息对应,根据钩子点信息,将至少一个第一数据包发送至对应的虚拟网卡,包括:通过缓存描述符接收和存储至少一个第一数据包和钩子点信息,至少一个第一数据包与钩子点信息对应;收包线程根据钩子点信息,将至少一个第一数据包发送至对应的虚拟网卡。
作为示例,如图3所示,内核态包括的网卡驱动模块,其功能就是让用户态的基于libpcap的数据包捕获分析程序在抓包时能够选定一个虚拟网卡,并从该虚拟网卡捕获数据包。由于是虚拟网卡,并不和真实的物理网卡关联,虚拟网卡的物理地址为随机生成。
虚拟网卡驱动模块内部有三大核心子模块:虚拟网卡缓存描述符、收包线程和发包接口。
(1)虚拟网卡缓存描述符
虚拟网卡驱动内核实现一个基于内存的缓存描述符,其本质是在物理内存上申请的一段连续内存,内部包括两个先入先出队列:
(a)空闲数据包队列:存储的是空闲sk_buff(sk_buff是内核用于存储数据包的结构体,简称为skb)的data字段的物理地址,在***启动时一次性填充满,之后每当数据接收模块从可用数据包存储队列取出一个skb时,则往空闲数据包存储区填充一个skb。
填充步骤:
step1、调用dev_alloc_skb()函数申请一个skb,并初始化skb的data区域的virt_addr字段(其余字段由用户态数据通路子模块填充)。
在现有技术中,skb的data字段是用来存储数据包内容的。在本发明中,将data字段解释为以下格式:
表1字段含义
step2、通过virt_to_phys()函数将skb的data指针由内核虚拟地址转为物理地址paddr。
step3、将paddr放入空闲数据包存储区。
(b)可用数据包存储队列:存储的是skb的data字段的物理地址,由数据发送模块在发包时填充。
(2)收包线程
内核线程,以轮询方式从可用数据包存储队列中收包,并将数据通路送来的数据包提交给内核协议栈,步骤如下:
step1、从可用数据包存储队列中取出一个物理地址paddr,如果取出失败则进入step6;
step2、将paddr通过phys_to_virt()函数转换为内核虚拟地址kaddr;
step3、通过kaddr获取virt_addr,data_len和dev_name,并根据以上三个字段填写sk_buff的元数据部分;
step4、将sk_buff的data指针后移,指向pkt_data;
step5、根据dev_name,将数据包提交给对应虚拟网卡的收包接口,进而把数据包提交给操作***内核协议栈;
step6、内核协议栈判断网卡,若网卡名以sample开头,则走完AF_PACKET逻辑后,将数据包丢弃。不走上层协议栈,以免影响运行在本机的应用层网络程序收到数据包后主动外发数据包影响数据包留存结果;
step7让出cpu一段时间后,回到step1。
(3)发包接口
虚拟网卡并不用于数据通信,但是操作***可能会通过虚拟网卡外发DHCP等数据包。本接口在收到操作***下发的数据包时,直接释放。
S203,通过虚拟网卡,得到至少一个第二数据包。
在一些可选的实现方式中,通过虚拟网卡,得到至少一个第二数据包,包括:判断虚拟网卡的网卡名是否为预设网卡名,若是,则在虚拟网卡中运行完AF_PACKET逻辑后,得到至少一个第二数据包,将所述至少一个第二数据包丢弃。
作为示例,Linux中,AF_PACKET逻辑可以通过套接字,打开指定的网卡,然后使用recvmsg读取,实际过程需要将报文从内核区(内核态)拷贝到用户区(即用户态得到至少一个第二数据包)。还可以通过packet_mmap,使用共享内存方式,在内核空间中分配一块内核缓冲区,然后用户空间程序调用mmap映射到用户空间。将接收到的skb拷贝到那块内核缓冲区中(或者将数据包丢弃),这样用户空间的程序就可以直接读到捕获的数据包了。
本发明实施例提供的流量处理的方法,在内核实现多个虚拟的可热插拔网卡,通过物理内存映射技术,可在任意钩子点信息将经过过滤的数据包引入操作***内核的虚拟网卡中,使用户态的数据转发程序也具备内核协议栈才具有的数据包过滤代码的动态注入功能。
图4为本发明流量处理装置实施例结构示意图,应用于用户态。如图4所示,该流量处理装置,包括:
第一处理模块401,用于接收流量数据、钩子点信息和数据包过滤规则,流量数据对应钩子点信息,钩子点信息表示流量数据被截获的位置;
第二处理模块402,用于将钩子点信息发送给内核态的网卡控制模块,网卡控制模块用于创建对应钩子点信息的虚拟网卡;
第三处理模块403,用于通过数据包过滤规则过滤流量数据,得到符合数据包过滤规则的至少一个第一数据包,将钩子点信息和至少一个第一数据包发送至内核态的网卡驱动模块,网卡驱动模块用于根据钩子点信息驱动对应至少一个第一数据包的虚拟网卡;
第四处理模块404,用于捕获内核态中虚拟网卡的至少一个第二数据包,第二数据包是通过虚拟网卡的流量。
可选地,第三处理模块403还用于将数据包过滤规则转换为BPF字节码指令;通过BPF字节码指令过滤流量数据,得到符合BPF字节码指令的至少一个第一数据包。
图5为本发明流量处理装置另一些实施例结构示意图,应用于内核态。如图5所示,该流量处理装置,包括:
第五处理模块501,用于通过网卡控制模块接收钩子点信息,并建立对应钩子点信息的虚拟网卡;
第六处理模块502,用于通过网卡驱动模块接收和存储至少一个第一数据包和钩子点信息,至少一个第一数据包与钩子点信息对应,根据钩子点信息,将至少一个第一数据包发送至对应的虚拟网卡,第一数据包表示符合数据包过滤规则的数据包;
第七处理模块503,用于通过虚拟网卡,得到至少一个第二数据包。
可选地,网卡驱动模块包括缓存描述符和收包线程;以及,第六处理模块502还用于通过缓存描述符接收和存储至少一个第一数据包和钩子点信息,至少一个第一数据包与钩子点信息对应;收包线程根据钩子点信息,将至少一个第一数据包发送至对应的虚拟网卡。
可选地,第七处理模块503还用于判断虚拟网卡的网卡名是否为预设网卡名,若是,则在虚拟网卡中运行完AF_PACKET逻辑后,得到至少一个第二数据包,将所述至少一个第二数据包,将所述至少一个第二数据包丢弃。
举个例子如下:
图6示例了一种电子设备的实体结构示意图,如图6示,该电子设备可以包括:处理器(processor)601、通信接口(Communications Interface)602、存储器(memory)603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信。处理器601可以调用存储器603中的逻辑指令,以执行如下方法:接收流量数据、钩子点信息和数据包过滤规则,流量数据对应钩子点信息,钩子点信息表示流量数据被截获的位置;将钩子点信息发送给内核态的网卡控制模块,网卡控制模块用于创建对应钩子点信息的虚拟网卡;通过数据包过滤规则过滤流量数据,得到符合数据包过滤规则的至少一个第一数据包,将钩子点信息和至少一个第一数据包发送至内核态的网卡驱动模块,网卡驱动模块用于根据钩子点信息驱动对应至少一个第一数据包的虚拟网卡;捕获内核态中虚拟网卡的至少一个第二数据包,第二数据包是通过虚拟网卡的流量。
此外,上述的存储器603中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种计算机程序产品,计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述各实施例提供的流量处理方法,应用于用户态,例如包括:接收流量数据、钩子点信息和数据包过滤规则,流量数据对应钩子点信息,钩子点信息表示流量数据被截获的位置;将钩子点信息发送给内核态的网卡控制模块,网卡控制模块用于创建对应钩子点信息的虚拟网卡;通过数据包过滤规则过滤流量数据,得到符合数据包过滤规则的至少一个第一数据包,将钩子点信息和至少一个第一数据包发送至内核态的网卡驱动模块,网卡驱动模块用于根据钩子点信息驱动对应至少一个第一数据包的虚拟网卡;捕获内核态中虚拟网卡的至少一个第二数据包,第二数据包是通过虚拟网卡的流量。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的流量处理方法,应用于用户态,例如包括:接收流量数据、钩子点信息和数据包过滤规则,流量数据对应钩子点信息,钩子点信息表示流量数据被截获的位置;将钩子点信息发送给内核态的网卡控制模块,网卡控制模块用于创建对应钩子点信息的虚拟网卡;通过数据包过滤规则过滤流量数据,得到符合数据包过滤规则的至少一个第一数据包,将钩子点信息和至少一个第一数据包发送至内核态的网卡驱动模块,网卡驱动模块用于根据钩子点信息驱动对应至少一个第一数据包的虚拟网卡;捕获内核态中虚拟网卡的至少一个第二数据包,第二数据包是通过虚拟网卡的流量。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (9)

1.一种流量处理方法,其特征在于,应用于用户态,所述方法包括:
接收流量数据、钩子点信息和数据包过滤规则,所述流量数据对应所述钩子点信息,所述钩子点信息表示所述流量数据被截获的位置;
将所述钩子点信息发送给内核态的网卡控制模块,所述网卡控制模块用于创建对应所述钩子点信息的虚拟网卡;
通过所述数据包过滤规则过滤所述流量数据,得到符合所述数据包过滤规则的至少一个第一数据包,将所述钩子点信息和所述至少一个第一数据包发送至内核态的网卡驱动模块,所述网卡驱动模块用于根据所述钩子点信息驱动对应所述至少一个第一数据包的所述虚拟网卡;
捕获内核态中所述虚拟网卡的至少一个第二数据包,所述第二数据包是通过所述虚拟网卡的流量。
2.根据权利要求1所述的流量处理方法,其特征在于,所述通过所述数据包过滤规则过滤所述流量数据,得到符合所述数据包过滤规则的至少一个第一数据包,包括:
将所述数据包过滤规则转换为伯克利包过滤器字节码指令;
通过所述伯克利包过滤器字节码指令过滤所述流量数据,得到符合所述伯克利包过滤器字节码指令的所述至少一个第一数据包。
3.一种流量处理方法,其特征在于,应用于内核态,所述方法包括:
通过网卡控制模块接收钩子点信息,并建立对应所述钩子点信息的虚拟网卡;
通过网卡驱动模块接收和存储至少一个第一数据包和所述钩子点信息,所述至少一个第一数据包与所述钩子点信息对应,根据所述钩子点信息,将所述至少一个第一数据包发送至对应的所述虚拟网卡,所述第一数据包表示符合数据包过滤规则的数据包;
通过所述虚拟网卡,得到至少一个第二数据包。
4.根据权利要求3所述的流量处理方法,其特征在于,所述网卡驱动模块包括缓存描述符和收包线程;以及,
所述通过网卡驱动模块接收和存储所述至少一个第一数据包和所述钩子点信息,所述至少一个第一数据包与所述钩子点信息对应,根据所述钩子点信息,将所述至少一个第一数据包发送至对应的所述虚拟网卡,包括:
通过所述缓存描述符接收和存储所述至少一个第一数据包和所述钩子点信息,所述至少一个第一数据包与所述钩子点信息对应;
所述收包线程根据所述钩子点信息,将所述至少一个第一数据包发送至对应的所述虚拟网卡。
5.根据权利要求3或4所述的流量处理方法,其特征在于,所述通过所述虚拟网卡,得到至少一个第二数据包,包括:
判断所述虚拟网卡的网卡名是否为预设网卡名,若是,则在所述虚拟网卡中运行完AF_PACKET逻辑后,得到至少一个第二数据包,将所述至少一个第二数据包丢弃。
6.一种流量处理装置,其特征在于,应用于用户态,包括:
第一处理模块,用于接收流量数据、钩子点信息和数据包过滤规则,所述流量数据对应所述钩子点信息,所述钩子点信息表示所述流量数据被截获的位置;
第二处理模块,用于将所述钩子点信息发送给内核态的网卡控制模块,所述网卡控制模块用于创建对应所述钩子点信息的虚拟网卡;
第三处理模块,用于通过所述数据包过滤规则过滤所述流量数据,得到符合所述数据包过滤规则的至少一个第一数据包,将所述钩子点信息和所述至少一个第一数据包发送至内核态的网卡驱动模块,所述网卡驱动模块用于根据所述钩子点信息驱动对应所述至少一个第一数据包的所述虚拟网卡;
第四处理模块,用于捕获内核态中所述虚拟网卡的至少一个第二数据包,所述第二数据包是通过所述虚拟网卡的流量。
7.一种流量处理装置,其特征在于,应用于内核态,包括:
第五处理模块,用于通过网卡控制模块接收钩子点信息,并建立对应所述钩子点信息的虚拟网卡;
第六处理模块,用于通过网卡驱动模块接收和存储至少一个第一数据包和所述钩子点信息,所述至少一个第一数据包与所述钩子点信息对应,根据所述钩子点信息,将所述至少一个第一数据包发送至对应的所述虚拟网卡,所述第一数据包表示符合数据包过滤规则的数据包;
第七处理模块,用于通过所述虚拟网卡,得到至少一个第二数据包。
8.一种电子设备,包括存储器、处理器,其中,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至2任一项所述的流量处理方法或如权利要求3至5任一项所述的流量处理方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至2任一项所述的流量处理方法或如权利要求3至5任一项所述的流量处理方法的步骤。
CN202111327821.2A 2021-11-10 2021-11-10 流量处理方法及装置,电子设备,存储介质 Active CN114244560B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111327821.2A CN114244560B (zh) 2021-11-10 2021-11-10 流量处理方法及装置,电子设备,存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111327821.2A CN114244560B (zh) 2021-11-10 2021-11-10 流量处理方法及装置,电子设备,存储介质

Publications (2)

Publication Number Publication Date
CN114244560A CN114244560A (zh) 2022-03-25
CN114244560B true CN114244560B (zh) 2024-04-16

Family

ID=80749032

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111327821.2A Active CN114244560B (zh) 2021-11-10 2021-11-10 流量处理方法及装置,电子设备,存储介质

Country Status (1)

Country Link
CN (1) CN114244560B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114726633B (zh) * 2022-04-14 2023-10-03 中国电信股份有限公司 流量数据处理方法及装置、存储介质及电子设备
CN114978897B (zh) * 2022-05-17 2023-09-05 阿里巴巴(中国)有限公司 基于eBPF和应用识别技术的网络控制方法和***
CN115033407B (zh) * 2022-08-09 2022-11-04 微栈科技(浙江)有限公司 一种适用于云计算的采集识别流量的***和方法
CN115580485B (zh) * 2022-11-18 2023-03-21 网络通信与安全紫金山实验室 数据流量处理方法、装置、光网络设备及存储介质
CN115883255B (zh) * 2023-02-02 2023-06-23 中信证券股份有限公司 数据过滤方法、设备以及计算机可读介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101815014A (zh) * 2010-02-09 2010-08-25 上海百络信息技术有限公司 基于连接的实时网络数据捕获方法
CN112422453A (zh) * 2020-12-09 2021-02-26 新华三信息技术有限公司 一种报文处理的方法、装置、介质及设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8861369B2 (en) * 2011-03-07 2014-10-14 Oracle International Corporation Virtual network interface with packet filtering hooks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101815014A (zh) * 2010-02-09 2010-08-25 上海百络信息技术有限公司 基于连接的实时网络数据捕获方法
CN112422453A (zh) * 2020-12-09 2021-02-26 新华三信息技术有限公司 一种报文处理的方法、装置、介质及设备

Also Published As

Publication number Publication date
CN114244560A (zh) 2022-03-25

Similar Documents

Publication Publication Date Title
CN114244560B (zh) 流量处理方法及装置,电子设备,存储介质
US10055580B2 (en) Technologies for multi-factor security analysis and runtime control
CN109639652B (zh) 一种基于安全隔离的网间数据访问的方法及***
EP2562646B1 (en) Modifying application behaviour
US8176300B2 (en) Method and apparatus for content based searching
US9397901B2 (en) Methods, systems, and computer readable media for classifying application traffic received at a network traffic emulation device that emulates multiple application servers
US9356844B2 (en) Efficient application recognition in network traffic
CN110784361A (zh) 虚拟化云蜜网部署方法、装置、***及计算机可读存储介质
CN104994032B (zh) 一种信息处理的方法和装置
CN108259425A (zh) 攻击请求的确定方法、装置及服务器
EP3862879A1 (en) Container network interface monitoring
CN108989151B (zh) 用于网络或应用性能管理的流量采集方法
CN106161396B (zh) 一种实现虚拟机网络访问控制的方法及装置
EP3097662B1 (en) Methods, systems and computer readable media for testing network devices using simulated application traffic
CN106528267B (zh) 基于Xen特权域的网络通信监控***及方法
US10248790B2 (en) Information processing system, controlling method, and controlling computer program
CN115033407B (zh) 一种适用于云计算的采集识别流量的***和方法
CN105893112B (zh) 一种虚拟化环境下的数据包处理方法及装置
de Bruijn et al. sendmsg copy avoidance with MSG_ZEROCOPY
CN114944996B (zh) 一种数据采集方法、装置及计算机可读介质
CN116996602B (zh) 数据包的处理方法及装置、存储介质、电子设备
Matsumoto et al. Accelerating TCP/IP Communications in Rootless Containers by Socket Switching
EP4141675A1 (en) Coordinating data packet processing between kernel space and user space
CN115190077A (zh) 控制方法、装置及计算设备
Bonafiglia Improving the performance of Virtualized Network Services based on NFV and SDN.

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 332, 3 / F, Building 102, 28 xinjiekouwei street, Xicheng District, Beijing 100088

Applicant after: QAX Technology Group Inc.

Applicant after: Qianxin Wangshen information technology (Beijing) Co.,Ltd.

Address before: Room 332, 3 / F, Building 102, 28 xinjiekouwei street, Xicheng District, Beijing 100088

Applicant before: QAX Technology Group Inc.

Applicant before: LEGENDSEC INFORMATION TECHNOLOGY (BEIJING) Inc.

GR01 Patent grant
GR01 Patent grant