CN107608852A - 一种进程监控方法及装置 - Google Patents
一种进程监控方法及装置 Download PDFInfo
- Publication number
- CN107608852A CN107608852A CN201710780715.7A CN201710780715A CN107608852A CN 107608852 A CN107608852 A CN 107608852A CN 201710780715 A CN201710780715 A CN 201710780715A CN 107608852 A CN107608852 A CN 107608852A
- Authority
- CN
- China
- Prior art keywords
- monitored
- filec descriptor
- target data
- monitoring
- piece section
- 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.)
- Granted
Links
Abstract
本发明实施例提供一种进程监控方法及装置。所述方法包括:获取进程信息,从系统中获取与进程信息匹配的待监控进程;通过钩子函数截取所有的数据包片段,根据各个数据包片段获取对应的套接字的第一文件描述符;遍历待监控进程对应的打开文件描述符表,打开文件描述符表包括多个第二文件描述符,若判断获知多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,则将待监控进程与目标数据包片段关联;获取目标数据包片段的相关信息,以实现对待监控进程的监控。所述装置用于执行所述方法。本发明实施例通过钩子函数截取数据包片段,并根据第一文件描述符合第二文件描述符获得目标数据包片段,提高了对待监控进程的监控效率。
Description
技术领域
本发明实施例涉及互联网技术领域,尤其涉及一种进程监控方法及装置。
背景技术
在云计算时代,大规模集群带来了强大的计算能力,同时也增加了集群的监控难度。其中,一个关键的任务是对系统中某个进程的网络数据进行监控,以进行程序调试、网络安全检测、预警和处理等一系列任务。
Linux作为一种成熟可靠的开源操作系统被服务器所广泛使用现有的Linux系统中进程数据监控的方法以NetHogs软件为代表,其采用的方式是:
步骤(1):利用第三方的libpcap库,截取网络层数据包,从数据包中获得源地址SRC、目的地址DST。
步骤(2):从Linux系统特有的/proc/net虚拟文件系统中读取当前系统所有的连接信息,每一行记录着一个现存连接的基本信息,包括源地址、目的地址以及该连接对应的编号ID。通过比对步骤(1)中获得的地址,可以确定步骤(1)中拦截到的数据包所对应的ID。ID可以唯一标识一个连接,在Linux系统中为sockfs虚拟文件系统的inode编号。
步骤(3):从Linux特有的/proc文件系统中扫描系统现存的所有进程及其打开文件列表L,若进程存在网络连接,则其打开文件列表将记录有该连接的编号ID。通过与步骤(2)中获得的编号进行匹配,从而最终找到步骤(1)中截取到的IP数据包对应的进程信息,从而实现对该进程的网络监控、统计。
该方法存在以下不足:(1)每次截获数据包及其地址信息后,需要线性地遍历/proc/net相应的文本文件NET,以获得连接的ID。在系统存在大量连接时,NET文件的大小较大,该操作十分耗时。(2)需要遍历所有进程及其打开文件表,这也是一个十分耗时的过程。(3)/proc作为Linux系统内核向用户空间单方面传递内核信息的一个平台,其更新频率较低,对于一些存在时间较短的连接,该方法不能够及时捕捉到数据包对应的进程信息。(4)libpcap能捕获到源地址和目的地址都不是本机的数据包,这增加了筛选数据包的处理时间。
综上,现有的针对进程的监控方法存在监控耗时长、效率低的问题。
发明内容
针对现有技术存在的问题,本发明实施例提供一种进程监控方法及装置。
第一方面,本发明实施例提供一种进程监控方法,包括:
获取用户需要监控的进程信息,根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程;
通过钩子函数截取所有的数据包片段,根据各个所述数据包片段获取对应的套接字的第一文件描述符;
遍历所述待监控进程对应的打开文件描述符表,所述打开文件描述符表包括多个第二文件描述符,若判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,则将所述待监控进程与所述目标数据包片段关联;
获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控。
第二方面,本发明实施例提供一种进程监控装置,包括:
第一获取模块,用于获取用户需要监控的进程信息,根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程;
截取模块,用于通过钩子函数截取所有的数据包片段,根据各个所述数据包片段获取对应的套接字的第一文件描述符;
关联模块,用于遍历所述待监控进程对应的打开文件描述符表,所述打开文件描述符表包括多个第二文件描述符,若判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,则将所述待监控进程与所述目标数据包片段关联;
监控模块,用于获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控。
第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的方法步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,包括:
所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的方法步骤。
本发明实施例提供的一种进程监控方法及装置,通过钩子函数截取数据包片段,并根据数据包片段对应的第一文件描述符和待监控进程对应的打开文件描述符表中的第二文件描述符进行匹配,获得待监控进程与匹配成功的目标数据包片段,获取目标数据包片段的相关信息,以实现对待监控进程的监控,提高了监控的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种进程监控方法流程示意图;
图2为本发明另一实施例提供的一种进程监控方法流程示意图;
图3为本发明实施例提供的一种进程监控装置结构示意图;
图4为本发明实施例提供的一种监控系统结构示意图;
图5为本发明实施例提供的电子设备实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种进程监控方法流程示意图,如图1所示,所述方法,包括:
步骤101:获取用户需要监控的进程信息,根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程;
具体的,用户根据自身需求通过客户端可以配置需要监控的进程信息,并将配置的进程信息发送给监控装置,其中进程信息包括:进程的部分或全部的命令行,进程的标号PID,还可以包括其他信息,本发明实施例对此不做具体限定。监控装置获取到用户需要监控的进程信息之后,根据进程信息从系统中获取与进程信息匹配的待监控进程。应当说明的是,在系统中包括了多个任务进程,且该系统可以为Linux系统,在监控装置中存储有内核态守护进程。
步骤102:通过钩子函数截取所有的数据包片段,根据各个所述数据包片段获取对应的套接字的第一文件描述符;
具体的,钩子函数用于监听系统,系统中每发生一次网络活动就会产生一个数据包片段,因此,在系统中注册了钩子函数后,通过钩子函数可以截取到系统中所有的数据包片段,根据数据包片段,经过一定的操作可以获取到对应的套接字(socket)的第一文件描述符,应当说明的是,还可以获取到与数据包片段相关的socket信息以及scokfs虚拟文件系统中的inode节点编号,本发明实施例对比不做具体限定。另外,在监控之前需要将内核态守护进程嵌入到系统中,其中内核态收据进程用于执行进程监控方法,包括了钩子函数。
步骤103:遍历所述待监控进程对应的打开文件描述符表,所述打开文件描述符表包括多个第二文件描述符,若判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,则将所述待监控进程与所述目标数据包片段关联;
具体的,遍历待监控进程在系统中的打开文件描述符表,其中,打开文件描述符表中包括多个第二文件描述符,从多个数据包片段中获取一个目标数据包片段,逐一将第二文件描述符与目标数据包片段对应的第一文件描述符进行匹配,如果存在任意一个第二文件描述符与第一文件描述符匹配成功,则认为该目标数据包片段的宿主进程为待监控进程,此时,将目标数据包片段与待监控进程进行关联操作。应当说明的是,需要将获取到的所有的数据包片段对应的第一文件描述符都与待监控进程的第二文件描述符进行匹配。
步骤104:获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控。
具体的,由于目标数据包片段的第一文件描述符与待监控进程的打开文件描述符表中的某一个第二文件描述符匹配成功,则说明该目标数据包片段的宿主进程就是待监控进程,那么,对目标数据包片段的监控就是对待监控进程的监控,获取目标数据包片段的相关信息,用于对待监控进程网络信息的统计,从而实现了对待监控进程的监控。
本发明实施例通过钩子函数截取数据包片段,并根据数据包片段对应的第一文件描述符和待监控进程对应的打开文件描述符表中的第二文件描述符进行匹配,获得待监控进程与匹配成功的目标数据包片段,获取目标数据包片段的相关信息,以实现对待监控进程的监控,提高了监控的效率。
在上述实施例的基础上,所述判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,包括:
从所有的所述数据包片段中获取目标数据包片段对应的第一文件描述符;
根据所述目标数据包片段对应的第一文件描述符分别与所述打开文件描述符表中的多个第二文件描述符进行匹配,若所述多个第二文件描述符对应的物理地址中存在与所述目标数据包片段对应的第一文件描述符的物理地址相同,则判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配。
具体的,由于系统每发生一次网络活动,则会产生一个数据包片段,因此监控装置可能会获取到多个数据包片段,且每一个数据包片段都对应一个第一文件描述符,根据多个数据包片段逐一进行匹配,首先从多个数据包片段中获取一个数据包片段作为目标数据包片段;然后遍历待监控进程对应的打开文件描述符表,由于打开文件描述符表中包括多个第二文件描述符,则将多个第二文件描述符逐一的与目标数据包片段对应的第一文件描述符进行匹配,如果某一个第二文件描述符对应的物理地址与该第一文件描述符对应的物理地址相同,则说明多个文件描述符中存在与目标数据包片段的第一文件描述符相匹配,进而可以获知该目标数据包片段与待监控进程具有关联关系。
本发明实施例通过令多个第二文件描述符与第一文件描述符进行匹配,获得与待监控进程关联的目标数据包片段,而现有技术是将进程写入文件中,通过读取文件中的内容来进行匹配,避免了现有技术中数据包匹配失败的问题。
在上述实施例的基础上,所述获取用户需要监控的进程信息,包括:
通过netlink套接字通信方式与用户终端进行通信,并获取用户需要监控的所述进程信息。
具体的,监控装置通过netlink通信方式与用户终端进行信息交换,从而获取用户需要监控的进程信息,应当说明的是,除了可以获取进程信息以外,监控装置与用户终端之间还可以进行其他信息的交互,本发明实施例对此不做具体限定。
本发明实施例通过netlink的通信方式,并采用钩子函数来截取数据包片段,减少对网络协议栈的侵入,从而提高了对进程监控的效率。
在上述实施例的基础上,所述根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程,包括:
获取所述系统的任务栈中所有的任务进程,将所述进程信息与各任务进程一一匹配,若匹配成功,则将匹配成功的任务进程作为所述待监控进程;若匹配失败,则向用户终端发送提示消息,并定期扫描所述系统的任务栈,直到获取到匹配成功的任务进程为止。
具体的,系统的任务栈中包括多个任务进程,监控装置遍历系统的任务栈中的任务进程,逐一比对每个任务进程与获取用户终端的进程信息,如果匹配成功,则将匹配成功的任务进程作为待监控进程,如果系统当前不存在匹配该进程信息的任务进程,则向用户终端发送提示消息,督促其确认并重新提供有效的进程信息,在此期间,监控装置将定期扫描系统的任务栈,直到终端提供新的进程信息,或在系统的任务栈中找到匹配的待监控进程为止。例如:用户需要监控的进程为命令行带“firefox”字符,但是事实上系统并未启动firefox或相关程序,此时监控装置将定期扫描系统的任务栈,以期待符合进程信息的任务出现,通过向用户终端确认进程信息,该过程一直持续直至找到相应的待监控进程为止。应当说明的是,监控装置定期扫描,可以根据实际情况来设置周期时间。
本发明实施例通过钩子函数截取数据包片段,并根据数据包片段对应的第一文件描述符和待监控进程对应的打开文件描述符表中的第二文件描述符进行匹配,获得待监控进程与匹配成功的目标数据包片段,获取目标数据包片段的相关信息,以实现对待监控进程的监控,提高了监控的效率。
在上述实施例的基础上,所述通过钩子函数截取所有的数据包片段,包括:
将预先配置的监听函数注入到系统中,所述系统中的所述钩子函数将截取的所述数据包片段发送给所述监听函数。
具体的,Linux系统的netfilter模块提供可供注册的钩子函数,通过netfilter模块提供nf_hook_register注册函数将预先配置的监听函数注入到系统的网络栈中,其中该监听函数所选的注入位置为net_inet_post_routing,即在网络协议栈已经为该数据包片段找到并填上其关联的struct_sock数据结构后,再流经监听函数中,此时监听函数获取到了数据包片段。
本发明实施例通过将监听函数注入到系统,并通过钩子函数将截取到的数据包片段发送给监听函数,从而实现数据包片段的截取,提高了监控效率。
在上述实施例的基础上,所述根据各个所述数据包片段获取对应的套接字的第一文件描述符,包括:
从所述数据包片段中获取对应的struck sock类型的成员变量,根据所述strucksock类型的成员变量获得相关联的struct scoket数据结构,根据所述struct scoket数据结构获取对应的所述第一文件描述符。
具体的,当截取到数据包片段后,从数据包片段中获取其成员变量,即strucksock类型的数据,进一步的,从struck sock数据结构获得相关联的struct scoket结构数据,更进一步的,从struct scoket结构数据中获取其对应的第一文件描述符struct file数据结构,同时,可以获取相关联的struct inode数据结构。其中获取相关联的structinode数据结构的具体方法为:Linux系统中struct scoket总是与其相应的inode数据结构存储在物理内存相邻的位置,因此,根据struct scoket数据结构计算其在物理内存中的偏移量,可以获得struct scoket对应的struct inode数据结构。
本发明实施例通过钩子函数截取数据包片段,并根据数据包片段对应的第一文件描述符和待监控进程对应的打开文件描述符表中的第二文件描述符进行匹配,获得待监控进程与匹配成功的目标数据包片段,获取目标数据包片段的相关信息,以实现对待监控进程的监控,该方法不依赖第三方程序库、无需进行大量的监控装置与用户终端之间的数据交换、不影响原有进程的通信,能够高效透明地进行进程的网络监控,在操作系统存在大量网络连接时,对监控的效率有明显的提升。
在上述各实施例的基础上,所述获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控,包括:
利用偏移解析的方法对所述目标数据包片段进行解析,获得对应的源地址、目的地址、端口号和各层协议的承载信息大小,以实现对所述待监控进程的监控。
具体的,目标数据包片段具有标准公开的数据结构,依据该数据结构,结合偏移解析的方法对目标数据包片段进行解析,解析后可以获得源地址、目的地址、端口号和各层协议的承载信息大小,从而完成了对待监控进程的网络信息的监控。另外,还可以包括数据包片段的其他具体信息,本发明实施例对此不做具体限定。
本发明实施例通过钩子函数截取数据包片段,并根据数据包片段对应的第一文件描述符和待监控进程对应的打开文件描述符表中的第二文件描述符进行匹配,获得待监控进程与匹配成功的目标数据包片段,获取目标数据包片段的相关信息,以实现对待监控进程的监控,提高了监控的效率。
图2为本发明另一实施例提供的一种进程监控方法流程示意图,如图2所示,所述方法,包括:
S201:获取进程信息;监控装置向用户获取所需要监控的进程信息i;
S202:获取待监控进程;监控装置从系统的任务栈中获取匹配所述进程信息i的相应的待监控进程t;
需要说明的是,如果系统的任务栈不存在匹配进程信息i的待监控进程t,例如,进程信息i要求监控的程序命令行带“firefox”字符,但是事实上系统并未启动firefox或相关程序,此时内核态守护进程将定期扫描系统任务栈,以期待符合进程信息i的任务出现,同时向用户态客户端client确认进程信息i,该过程一直持续直至找到相应的待监控进程t。
S203:系统产生数据包片段;系统发生一次网络活动,产生一个数据包片段sk;
需要说明的是,系统发生网络活动是异步的,与当前内核态守护进程所处状态无关。
S204:截取数据包片段;监控装置通过钩子函数截取网络协议栈所有数据包片段sk;
S205:获取第一文件描述符;由所述数据包片段sk,通过一定的步骤获取所述数据包片段相关的socket信息以及socket所关联的第一文件描述符fd以及sockfs虚拟文件系统的inode节点编号;
需要说明的是,所述一定的步骤是指,通过sk,获得其类型为struct sock的成员变量socket,通过socket获得其类型为struct file的成员file,即文件描述符;同时,由于系统中socket总是与其关联的inode存储在相邻的位置,因此通过socket成员变量可以通过计算内存偏移获得inode位置。
S206:将第一文件描述符与每个第二文件描述符进行匹配;遍历待监控进程t在内核中的打开文件描述符表,对每个第二文件描述符,检查其物理地址是否与数据包片段sk对应的第一文件描述符fd物理地址相同;
需要说明的是,如果地址相同,则认为该数据包片段sk的宿主进程为待监控进程t,否则为其他进程。
S207:对数据包片段进行分析和检测,返回S203。
需要说明的是,该步骤仅在S206中成功匹配待监控进程t与数据包片段sk的情况下进行,否则直接进入S203。
本发明实施例通过钩子函数截取数据包片段,并根据数据包片段对应的第一文件描述符和待监控进程对应的打开文件描述符表中的第二文件描述符进行匹配,获得待监控进程与匹配成功的目标数据包片段,获取目标数据包片段的相关信息,以实现对待监控进程的监控,提高了监控的效率。
图3为本发明实施例提供的一种进程监控装置结构示意图,如图3所示,所述装置,包括:第一获取模块301、截取模块302、关联模块303和监控模块304,其中:
第一获取模块301用于获取用户需要监控的进程信息,根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程;截取模块302用于通过钩子函数截取所有的数据包片段,根据各个所述数据包片段获取对应的套接字的第一文件描述符;关联模块303用于遍历所述待监控进程对应的打开文件描述符表,所述打开文件描述符表包括多个第二文件描述符,若判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,则将所述待监控进程与所述目标数据包片段关联;监控模块304用于获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控。
具体的,用户根据自身需求通过客户端可以配置需要监控的进程信息,并将配置的进程信息发送给监控装置,其中进程信息包括:进程部分或全部的命令行,进程的标号PID,还可以包括其他信息,本发明实施例对此不做具体限定。第一获取模块301获取到用户需要监控的进程信息之后,根据进程信息从系统中获取与进程信息匹配的待监控进程。应当说明的是,在系统中包括了多个任务进程,且该系统可以为Linux系统。
钩子函数用于监听系统,系统中每发生一次网络活动就会产生一个数据包片段,因此,在系统中注册了钩子函数后,截取模块302通过钩子函数可以截取到系统中所有的数据包片段,根据数据包片段,经过一定的操作可以获取到对应的套接字(socket)的第一文件描述符,应当说明的是,还可以获取到与数据包片段相关的socket信息以及scokfs虚拟文件系统中的inode节点编号,本发明实施例对比不做具体限定。
关联模块303遍历待监控进程在系统中的打开文件描述符表,其中,打开文件描述符表中包括多个第二文件描述符,从多个数据包片段中获取一个目标数据包片段,逐一将第二文件描述符与目标数据包片段对应的第一文件描述符进行匹配,如果存在任意一个第二文件描述符与第一文件描述符匹配成功,则认为该目标数据包片段的宿主进程为待监控进程,此时,将目标数据包片段与待监控进程进行关联操作。
监控模块304对目标数据包片段的监控就是对待监控进程的监控,获取目标数据包片段的相关信息,用于对待监控进程网络信息的统计,从而实现了对待监控进程的监控。
本发明提供的系统的实施例具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
本发明实施例通过钩子函数截取数据包片段,并根据数据包片段对应的第一文件描述符和待监控进程对应的打开文件描述符表中的第二文件描述符进行匹配,获得待监控进程与匹配成功的目标数据包片段,获取目标数据包片段的相关信息,以实现对待监控进程的监控,提高了监控的效率。
图4为本发明实施例提供的一种监控系统结构示意图,如图4所述,所述系统,包括:监控装置401、Linux系统402和用户态客户端403,其中:
监控装置401:所述监控装置401通过netfilter钩子函数注入但不影响Linux系统402的网络协议栈,一方面截取数据包片段,并获得其相应的文件描述符file以及inode节点。另一方面,通过netlink与用户态客户端进行数据交换。
用户态客户端402:负责与用户进行交互,接收并显示来自监控装置401的信息,如特定进程的监控数据,同时,负责将用户的命令转达至监控装置401。
图5为本发明实施例提供的电子设备实体结构示意图,如图5所示,所述电子设备,包括:处理器(processor)501、存储器(memory)502和总线503;其中,
所述处理器501和存储器502通过所述总线503完成相互间的通信;
所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取用户需要监控的进程信息,根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程;通过钩子函数截取所有的数据包片段,根据各个所述数据包片段获取对应的套接字的第一文件描述符;遍历所述待监控进程对应的打开文件描述符表,所述打开文件描述符表包括多个第二文件描述符,若判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,则将所述待监控进程与所述目标数据包片段关联;获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取用户需要监控的进程信息,根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程;通过钩子函数截取所有的数据包片段,根据各个所述数据包片段获取对应的套接字的第一文件描述符;遍历所述待监控进程对应的打开文件描述符表,所述打开文件描述符表包括多个第二文件描述符,若判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,则将所述待监控进程与所述目标数据包片段关联;获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取用户需要监控的进程信息,根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程;通过钩子函数截取所有的数据包片段,根据各个所述数据包片段获取对应的套接字的第一文件描述符;遍历所述待监控进程对应的打开文件描述符表,所述打开文件描述符表包括多个第二文件描述符,若判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,则将所述待监控进程与所述目标数据包片段关联;获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种进程监控方法,其特征在于,包括:
获取用户需要监控的进程信息,根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程;
通过钩子函数截取所有的数据包片段,根据各个所述数据包片段获取对应的套接字的第一文件描述符;
遍历所述待监控进程对应的打开文件描述符表,所述打开文件描述符表包括多个第二文件描述符,若判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,则将所述待监控进程与所述目标数据包片段关联;
获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控。
2.根据权利要求1所述的方法,其特征在于,所述判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,包括:
从所有的所述数据包片段中获取目标数据包片段对应的第一文件描述符;
根据所述目标数据包片段对应的第一文件描述符分别与所述打开文件描述符表中的多个第二文件描述符进行匹配,若所述多个第二文件描述符对应的物理地址中存在与所述目标数据包片段对应的第一文件描述符的物理地址相同,则判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配。
3.根据权利要求1所述的方法,其特征在于,所述获取用户需要监控的进程信息,包括:
通过netlink套接字通信方式与用户终端进行通信,并获取用户需要监控的所述进程信息。
4.根据权利要求1所述的方法,其特征在于,所述根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程,包括:
获取所述系统的任务栈中所有的任务进程,将所述进程信息与各任务进程一一匹配,若匹配成功,则将匹配成功的任务进程作为所述待监控进程;若匹配失败,则向用户终端发送提示消息,并定期扫描所述系统的任务栈,直到获取到匹配成功的任务进程为止。
5.根据权利要求1所述的方法,其特征在于,所述通过钩子函数截取所有的数据包片段,包括:
将预先配置的监听函数注入到系统中,所述系统中的所述钩子函数将截取的所述数据包片段发送给所述监听函数。
6.根据权利要求1所述的方法,其特征在于,所述根据各个所述数据包片段获取对应的套接字的第一文件描述符,包括:
从所述数据包片段中获取对应的struck sock类型的成员变量,根据所述struck sock类型的成员变量获得相关联的struct scoket数据结构,根据所述struct scoket数据结构获取对应的所述第一文件描述符。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控,包括:
利用偏移解析的方法对所述目标数据包片段进行解析,获得对应的源地址、目的地址、端口号和各层协议的承载信息大小,以实现对所述待监控进程的监控。
8.一种进程监控装置,其特征在于,包括:
第一获取模块,用于获取用户需要监控的进程信息,根据所述进程信息从系统中获取与所述进程信息匹配的待监控进程;
截取模块,用于通过钩子函数截取所有的数据包片段,根据各个所述数据包片段获取对应的套接字的第一文件描述符;
关联模块,用于遍历所述待监控进程对应的打开文件描述符表,所述打开文件描述符表包括多个第二文件描述符,若判断获知所述多个第二文件描述符中存在与目标数据包片段的第一文件描述符相匹配,则将所述待监控进程与所述目标数据包片段关联;
监控模块,用于获取所述目标数据包片段的相关信息,以实现对所述待监控进程的监控。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1-7任一项所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710780715.7A CN107608852B (zh) | 2017-09-01 | 2017-09-01 | 一种进程监控方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710780715.7A CN107608852B (zh) | 2017-09-01 | 2017-09-01 | 一种进程监控方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107608852A true CN107608852A (zh) | 2018-01-19 |
CN107608852B CN107608852B (zh) | 2019-11-26 |
Family
ID=61056385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710780715.7A Active CN107608852B (zh) | 2017-09-01 | 2017-09-01 | 一种进程监控方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107608852B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032907A (zh) * | 2018-07-19 | 2018-12-18 | 清华大学 | 面向设备应用的数据监控方法及系统 |
CN109450885A (zh) * | 2018-10-29 | 2019-03-08 | 武汉斗鱼网络科技有限公司 | 网络数据拦截方法、装置、电子设备及存储介质 |
CN109491759A (zh) * | 2018-10-26 | 2019-03-19 | 深圳康佳电子科技有限公司 | 基于虚拟文件系统的进程调试方法、装置和计算机设备 |
CN110069926A (zh) * | 2019-04-11 | 2019-07-30 | 南京邮电大学 | Android重打包应用的恶意代码定位方法、存储介质和终端 |
CN110875910A (zh) * | 2018-08-31 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 一种获取网络传输信息的方法、装置及系统 |
CN111459840A (zh) * | 2020-04-26 | 2020-07-28 | 恩亿科(北京)数据科技有限公司 | 一种进程的调试方法及装置 |
CN112181670A (zh) * | 2019-07-02 | 2021-01-05 | 西安诺瓦星云科技股份有限公司 | 进程间通讯方法及装置和Linux设备 |
CN112346927A (zh) * | 2020-10-22 | 2021-02-09 | 北京罗克维尔斯科技有限公司 | 一种文件描述符的检测方法、装置、车载设备及车辆 |
CN112506747A (zh) * | 2021-02-03 | 2021-03-16 | 腾讯科技(深圳)有限公司 | 一种业务进程监控方法、装置、电子设备及存储介质 |
CN112732560A (zh) * | 2020-12-31 | 2021-04-30 | 杭州迪普科技股份有限公司 | 文件描述符泄露风险的检测方法及装置 |
CN112925754A (zh) * | 2021-03-31 | 2021-06-08 | 四川虹美智能科技有限公司 | 文件描述符溢出上报方法、装置及计算机可读介质 |
CN113067810A (zh) * | 2021-03-16 | 2021-07-02 | 广州虎牙科技有限公司 | 网络抓包方法、装置、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009129128A (ja) * | 2007-11-22 | 2009-06-11 | Fujitsu Ltd | プログラム変換プログラム,処理方法,および処理装置 |
CN102006588A (zh) * | 2010-12-28 | 2011-04-06 | 北京安天电子设备有限公司 | 智能手机网络行为监控的方法和系统 |
CN103825783A (zh) * | 2014-03-10 | 2014-05-28 | 珠海市君天电子科技有限公司 | 一种测试方法及装置 |
CN106126272A (zh) * | 2016-06-15 | 2016-11-16 | 北京小米移动软件有限公司 | 文件系统卸载方法及装置 |
CN106778245A (zh) * | 2016-11-29 | 2017-05-31 | 北京元心科技有限公司 | 移动终端及其文件共享方法 |
-
2017
- 2017-09-01 CN CN201710780715.7A patent/CN107608852B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009129128A (ja) * | 2007-11-22 | 2009-06-11 | Fujitsu Ltd | プログラム変換プログラム,処理方法,および処理装置 |
CN102006588A (zh) * | 2010-12-28 | 2011-04-06 | 北京安天电子设备有限公司 | 智能手机网络行为监控的方法和系统 |
CN103825783A (zh) * | 2014-03-10 | 2014-05-28 | 珠海市君天电子科技有限公司 | 一种测试方法及装置 |
CN106126272A (zh) * | 2016-06-15 | 2016-11-16 | 北京小米移动软件有限公司 | 文件系统卸载方法及装置 |
CN106778245A (zh) * | 2016-11-29 | 2017-05-31 | 北京元心科技有限公司 | 移动终端及其文件共享方法 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032907A (zh) * | 2018-07-19 | 2018-12-18 | 清华大学 | 面向设备应用的数据监控方法及系统 |
CN109032907B (zh) * | 2018-07-19 | 2020-11-03 | 清华大学 | 面向设备应用的数据监控方法及系统 |
CN110875910A (zh) * | 2018-08-31 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 一种获取网络传输信息的方法、装置及系统 |
CN110875910B (zh) * | 2018-08-31 | 2022-10-28 | 阿里巴巴集团控股有限公司 | 一种获取网络传输信息的方法、装置及系统 |
CN109491759A (zh) * | 2018-10-26 | 2019-03-19 | 深圳康佳电子科技有限公司 | 基于虚拟文件系统的进程调试方法、装置和计算机设备 |
CN109491759B (zh) * | 2018-10-26 | 2020-11-03 | 深圳康佳电子科技有限公司 | 基于虚拟文件系统的进程调试方法、装置和计算机设备 |
CN109450885A (zh) * | 2018-10-29 | 2019-03-08 | 武汉斗鱼网络科技有限公司 | 网络数据拦截方法、装置、电子设备及存储介质 |
CN110069926B (zh) * | 2019-04-11 | 2022-10-25 | 南京邮电大学 | Android重打包应用的恶意代码定位方法、存储介质和终端 |
CN110069926A (zh) * | 2019-04-11 | 2019-07-30 | 南京邮电大学 | Android重打包应用的恶意代码定位方法、存储介质和终端 |
CN112181670A (zh) * | 2019-07-02 | 2021-01-05 | 西安诺瓦星云科技股份有限公司 | 进程间通讯方法及装置和Linux设备 |
CN112181670B (zh) * | 2019-07-02 | 2023-04-11 | 西安诺瓦星云科技股份有限公司 | 进程间通讯方法及装置和Linux设备 |
CN111459840A (zh) * | 2020-04-26 | 2020-07-28 | 恩亿科(北京)数据科技有限公司 | 一种进程的调试方法及装置 |
CN112346927A (zh) * | 2020-10-22 | 2021-02-09 | 北京罗克维尔斯科技有限公司 | 一种文件描述符的检测方法、装置、车载设备及车辆 |
CN112346927B (zh) * | 2020-10-22 | 2024-02-27 | 北京罗克维尔斯科技有限公司 | 一种文件描述符的检测方法、装置、车载设备及车辆 |
CN112732560A (zh) * | 2020-12-31 | 2021-04-30 | 杭州迪普科技股份有限公司 | 文件描述符泄露风险的检测方法及装置 |
CN112732560B (zh) * | 2020-12-31 | 2023-10-27 | 杭州迪普科技股份有限公司 | 文件描述符泄露风险的检测方法及装置 |
CN112506747B (zh) * | 2021-02-03 | 2021-05-18 | 腾讯科技(深圳)有限公司 | 一种业务进程监控方法、装置、电子设备及存储介质 |
CN112506747A (zh) * | 2021-02-03 | 2021-03-16 | 腾讯科技(深圳)有限公司 | 一种业务进程监控方法、装置、电子设备及存储介质 |
CN113067810A (zh) * | 2021-03-16 | 2021-07-02 | 广州虎牙科技有限公司 | 网络抓包方法、装置、设备和介质 |
CN112925754A (zh) * | 2021-03-31 | 2021-06-08 | 四川虹美智能科技有限公司 | 文件描述符溢出上报方法、装置及计算机可读介质 |
CN112925754B (zh) * | 2021-03-31 | 2023-04-07 | 四川虹美智能科技有限公司 | 文件描述符溢出上报方法、装置及计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107608852B (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107608852A (zh) | 一种进程监控方法及装置 | |
CN111277578B (zh) | 加密流量分析特征提取方法、系统、存储介质、安全设备 | |
US9256831B2 (en) | Match engine for detection of multi-pattern rules | |
CN106209684B (zh) | 一种基于时间触发转发检测调度的方法 | |
JP5090661B2 (ja) | ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法 | |
US20210385251A1 (en) | System and methods for integrating datasets and automating transformation workflows using a distributed computational graph | |
US9491190B2 (en) | Dynamic selection of network traffic for file extraction shellcode detection | |
CN106650425B (zh) | 一种安全沙箱的控制方法及装置 | |
Wang et al. | Honeynet construction based on intrusion detection | |
CN114090406A (zh) | 电力物联网设备行为安全检测方法、系统、设备及存储介质 | |
US10785236B2 (en) | Generation of malware traffic signatures using natural language processing by a neural network | |
CN112688932A (zh) | 蜜罐生成方法、装置、设备及计算机可读存储介质 | |
CN110830500B (zh) | 网络攻击追踪方法、装置、电子设备及可读存储介质 | |
Chi | Intrusion detection system based on snort | |
CN115396138A (zh) | 溯源图的缩减方法及装置 | |
CN109635027A (zh) | 一种数据库访问结果集探测的实现方法 | |
CN110381082B (zh) | 基于Mininet的电力通信网络的攻击检测方法和装置 | |
Singh | Machine learning in openflow network: comparative analysis of DDoS detection techniques. | |
Al Sadi et al. | Real-time Pipeline Reconfiguration of P4 Programmable Switches to Efficiently Detect and Mitigate DDoS Attacks | |
CN106055571A (zh) | 网站识别方法及系统 | |
US20220311791A1 (en) | Systems and methods for low latency stateful threat detection and mitigation | |
US20160156643A1 (en) | Apparatus and method for generating process activity profile | |
Zhang et al. | Toward comprehensive network verification: Practices, challenges and beyond | |
Subrahmanyam et al. | A hybrid method for analysis and detection of malicious executables in IoT network | |
Boillat | DDoSGrid-Mining: Analyzing and Classifying DDoS Attack Traffic |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |