一种文件操作ip溯源方法和系统

文档序号:7418 发布日期:2021-09-17 浏览:25次 英文

一种文件操作IP溯源方法和系统

技术领域

本发明涉及网络安全领域,特别涉及一种文件操作IP溯源方法和系统。

背景技术

文件监控是一种广泛应用的部署于linux服务器上的安全监测机制。目前在linux上有多种技术方案可以对文件的读取、写入、删除、执行进行监控,但是现有的所有的文件操作监控技术方案都存在一个相同的弊端,即只能确定当前操作文件的进程是哪个,而无法确定该操作行为是哪位访问者(文件操作者)产生的,无法追溯到访问者的网络地理位置(IP地址)。

发明内容

本发明其中一个发明目的在于提供一种文件操作IP溯源方法和系统,所述方法和系统通过文件操作的进程链条和套接字链条,根据文件操作的所处的进程树追溯到祖先进程,通过祖先进程获取的套接字链条来追溯文件操作者IP,无视IP地址的伪装,因此可以有效地识别真实IP。

本发明另一个发明目的在于提供一种文件操作IP溯源方法和系统,所述方法和系统通过关键函数获取执行该关键函数的PID字典,socketfd字典,用于后续文件操作溯源PID的对比,用于获取真实的IP。

本发明另一个发明目的在于提供一种文件操作IP溯源方法和系统,所述方法和系统在溯源根据祖先进程过程中将socketfd转化为Sock结构体,进而在Sock结构体中解析出真实的IP,由于祖先进程的Sock结构体中的五元组无法被篡改,因此可以解析出文件操作的真实IP。

为了实现至少一个上述发明目的,本发明进一步提供一种文件操作IP溯源方法,所述方法包括如下步骤:

建立内核调试模块,在所述内核调试模块挂载至少两个不同关键函数;

获取执行所述关键函数进程的PID字典和socketfd字典;

建立文件监控模块,记录文件操作进程的PID和文件操作行为;

在所述内核调试模块中挂载execve函数,记录函数调用过程,获取并返回进程树;

将文件操作的进程PID和返回的进程树对比,查找所述文件操作进程PID所在的进程树,并根据所述进程树获取祖先进程;

将所述祖先进程的PID和所述PID字典、socketfd字典对比,获取祖先进程对应的socketfd,并解析祖先进程socketfd中的IP。

根据本发明其中一个较佳实施例,解析祖先进程获取socketfd中的IP方法包括:在内核中调用原生函数sockfd_lookup函数,通过所述sockfd_lookup函数将追溯祖先进程获取的socketfd转化为sock结构体,从所述sock结构体中解析出真实IP。

根据本发明另一个较佳实施例,所述内核调试模块包括Linux系统中kprobe模块和所述kprobe模块派生的kretprobe模块,所述内核调试模块跟踪记录内核函数的执行状态。

根据本发明另一个较佳实施例,所述文件监控模块连接monitor程序,所述文件监控模块记录文件读取、文件写入、文件删除、文件创建和文件执行操作,并获取上述操作的PID,将文件操作进程PID和文件操作行为返回给monitor程序。

根据本发明另一个较佳实施例,所述内核调试模块将PID字典、socketfd字典、所有进程PID和进程树输入所述monitor程序,所述monitor程序将文件操作进程PID和进程树中对比,获取包含所述文件操作进程PID的进程树,并追溯该进程树中的祖先进程。

根据本发明另一个较佳实施例,所述祖先进程的追溯方法包括:所述monitor程序获取包含文件操作进程PID的进程树后,判断当前文件操作进程PID是否存在关键函数的调用,若存在则获取该关键函数调用的socketfd解析IP,若不存在所述关键函数调用,则进一步查找该文件操作进程PID进程的父进程,直到查找到存在所述关键函数调用的祖先进程。

根据本发明另一个较佳实施例,当解析键函数调用的socketfd获取IP后,判断该当前解析获取的IP是否是外部IP,若是外部IP则返回该外部IP为访问者IP。

根据本发明另一个较佳实施例,若当前解析获取的IP为内部IP,则判断该解析IP对应的文件操作进程PID是否存在另一不同关键函数调用,若存在,则获取该不同关键函数的socketfd,进一步解析该不同关键函数的socketfd获取IP。

为了实现至少一个上述发明目的,本发明进一步提供一种文件擦操作IP溯源系统,所述系统执行上述一种文件操作IP溯源方法。

本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被处理器执行上述一种文件擦操作IP溯源方法。

附图说明

图1显示的是本发明一种文件操作IP溯源方法的一种流程示意图。

图2显示的是本发明中文件操作IP溯源一种详细流程示意图。

具体实施方式

以下描述用于揭露本发明以使本领域技术人员能够实现本发明。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定的本发明的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本发明的精神和范围的其他技术方案。

可以理解的是,术语“一”应理解为“至少一”或“一个或多个”,即在一个实施例中,一个元件的数量可以为一个,而在另外的实施例中,该元件的数量可以为多个,术语“一”不能理解为对数量的限制。

请结合图1至图2,本发明公开的一种文件操作溯源方法流程示意图,其中,所述方法利用了进程树寻找祖先进程,并根据祖先进程的套接字来寻找真实的IP,因为祖先进程中套接字的五元组无法被修改,因此可以追溯到的IP可信度更高,从而可以获取文件操作者的真实的关键信息。

具体的,首先需要建立内核调试模块,其中所述内核调试模块包括kprobe模块和其派生模块kretprobe,所述内核调试模块为Linux系统中用于跟踪获取内核函数调用状态的一种轻量级的调试技术。在内核调试模块中挂载多个关键函数,其中所述关键函数包括:recvfrom函数和accept函数,其中所述accept函数在建立等待序列中每一请求的链接时,都会产生一个套接字文件描述符socketfd,accept函数的套接字的文件描述符socketfd可以用于和客户端的交互。所述recvfrom函数在每次调用时,都会获取来自数据发送者的套接字,且通过recvfrom函数还指定接收数据的缓冲区域、接收数据的长度、接收数据的标记,并返回套接字文件描述符socketfd。需要说明的是,当存在执行所述recvfrom函数时,获取当前执行所述recvfrom函数PID(进程标识符),并根据所述PID获取执行当前所述recvfrom函数返回的文件描述符socketfd,通过上述两个关键函数可以获取PID字典和socketfd字典,所述PID字典和socketfd字典可用于判断文件操作者的攻击指令是否存在上述关键函数的调用,从而可以根据所述PID字典和socketfd字典查询到文件操作者IP。

进一步的,所述内核调试模块中还挂载execve函数,所述execve函数为系统中所有用户态函数调用的核心函数,也就是说,所有用户态的函数的调用都会用到所述execve函数,因此在所述内核调试模块中挂载execve函数可以获取每一文件操作的进程PID,由于进程在系统中呈现树状结构,因此在通过所述execve函数可以获取对文件操作的进程树,所述进程树用于追溯祖先进程。需要说明的是,同一进程树下具有一个相同的祖先进程,因此只要获取进程树下子进程的PID就可以追溯到该进程树下的同一祖先进程。

具体而言,所述内核调试模块连接monitor程序,所述内核调试模块获取来自于执行execve函数的PID,通过所述内核调试模块解析后获取对应的进程树,并将该进程树和执行execve函数的PID传入到所述monitor程序中;并且所述内核调试模块获取执行recvfrom函数和accept函数等关键函数的PID字典和socketfd字典,并将所述recvfrom函数和accept函数等关键函数的PID字典和socketfd字典传入到所述monitor程序中,以供所述monitor程序追踪祖先进程和查询文件操作者IP,所述monitor程序保存进程树以及对应函数的PID。

所述monitor程序还连接一个文件监控模块,其中所述文件监控模块用于识别并获取文件操作行为,并获取对文件操作进程的PID,其中所述文件监控模块可以识别监控包括:文件写入、文件读取、文件删除、文件创建和文件执行等文件操作行为。所述文件监控模块将所述文件操作进程的PID传入到所述monitor程序,以供所述monitor程序寻找该文件操作者IP。

在所述monitor程序中,当从所述文件监控模块获取当前文件操作行为和文件操作进程的PID后,通过查询进程树列表判断该当前文件操作进程PID是否存在当前进程树列表中,若不存在,则进一步查询下一个进程树列表。若在进程树列表中查询到该文件操作进程的PID,则说明进程树中存在文件操作行为,进一步判断该文件操作行为进程是否存在recvfrom事件,也就是recvfrom函数调用,若存在所述recvfrom事件,则根据recvfrom函数的socketfd字典和PID字典,查询到对应的socketfd。并从查询获取的socketfd中解析出文件操作者IP。若当前PID无相关的recvfrom函数调用,则进一步根据execve函数保存的进程树去查询当前进程PID父进程,并进一步循环查找到当前文件操作进程PID的祖先进程,获取祖先进程对应的PID,并进一步判断该祖先进程是否存在recvfrom函数调用。若存在,则根据当前祖先进程PID查询recvfrom函数PID字典和socketfd字典,获取recvfrom事件的祖先进程socketfd,进一步解析recvfrom事件的祖先进程socketfd解析文件操作IP。

本发明中采用在内核调试模块挂载多个关键函数可以使得文件操作IP溯源可以更准确,减少极端的网络环境下文件操作IP溯源失败的可能性。进一步的,由于内核中有些文件操作可能是因为内部操作,而非外部操作,因此本发明进一步基于上述祖先进程socketfd解析的IP判断是否是内部IP,由于内部IP的数量有限且相对固定,因此只要将祖先进程socketfd解析的IP字段和内部IP字段进行对比后即可判断是否是内部IP,当祖先进程socketfd解析的IP被判定位外部IP,则说明该外部IP为对应文件操作的外部访问者,因此可以很好地监控对文件操作的外部访问者相关信息。

当祖先进程socketfd解析的IP为内部IP,则判断上述文件操作进程PID对应进程是否存在accept事件,即是否存在accept函数调用,若存在则accept函数的PID字典和socketfd字典查找到对应的accept函数socketfd,用于解析accept函数socketfd的IP,若上述文件操作进程PID对应进程无相关的accept事件,则根据文件操作进程PID查找通过execve函数保存的进程树,追溯到祖先进程,获取祖先进程PID,查询accept函数的PID字典和socketfd字典查找到祖先进程对应的socketfd,并进一步解析accept事件祖先进程的socketfd中的IP,判断该IP是否是内部IP,若否则判断为外部文件操作访问者输出。

值得一提的是,本发明采用Linux系统中的原生函数sockfd_lookup,原生函数sockfd_lookup在程序运行时可以将祖先进程的socketfd转化为sock结构体,由于sock结构内保存有五元组数据,其中所述五元组数据包括:源IP地址,源端口,目的IP地址,目的端口和传输层协议,通过获取所述五元组数据可以获取文件操作访问者IP。由于祖先进程的sock结构体被篡改的可能性很小,因此可以获取可信度很高的文件操作者IP。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线段、电线段、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明,本发明的目的已经完整并有效地实现,本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:异常捕获方法、异常接收方法、装置、介质及设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!