CN115221524B - 业务数据保护方法、装置、设备及存储介质 - Google Patents
业务数据保护方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115221524B CN115221524B CN202211140923.8A CN202211140923A CN115221524B CN 115221524 B CN115221524 B CN 115221524B CN 202211140923 A CN202211140923 A CN 202211140923A CN 115221524 B CN115221524 B CN 115221524B
- Authority
- CN
- China
- Prior art keywords
- write operation
- module
- operation request
- service data
- service
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/564—Static detection by virus signature recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/565—Static detection by checking file integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
Abstract
本发明属于数据安全技术领域,公开了一种业务数据保护方法、装置、设备及存储介质。本发明在接收到对业务系统中业务数据的写操作请求时,基于所述写操作请求的当前进程信息确定对应的可执行文件,若所述可执行文件不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截,保证业务数据只会被业务系统自身的程序文件进行写操作,避免勒索病毒对业务数据的非法写操作,从而有效阻止勒索病毒破坏行为,提高了业务系统的业务数据安全性。
Description
技术领域
本发明涉及数据安全技术领域,尤其涉及一种业务数据保护方法、装置、设备及存储介质。
背景技术
随着互联网技术的发展,生产、办公、管理和经营等各个环节的业务系统为了进行信息记录,都会生成一些业务数据,这些业务数据对用户非常重要。
自从勒索病毒出现之后,用户的业务数据被加密的情况就层出不穷,导致业务中断,损失惨重。由于勒索病毒的读写行为和业务系统的行为很接近,目前很难找到应对勒索病毒加密的通用、有效方法。
发明内容
本发明的主要目的在于提供一种业务数据保护方法、装置、设备及存储介质,旨在解决现有技术中不能有效阻止勒索病毒对业务数据的安全威胁行为的技术问题。
为实现上述目的,本发明提供一种业务数据保护方法,所述业务数据保护方法包括以下步骤:
在接收到对业务系统中业务数据的写操作请求时,获取发起所述写操作请求的当前进程信息;
基于所述当前进程信息确定对应的可执行文件;
判断所述可执行文件是否为所述业务系统自身的程序文件;
若不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截。
可选地,所述判断所述可执行文件是否为所述业务系统自身的程序文件,包括:
获取所述可执行文件的当前存储路径;
对所述可执行文件进行数字签名和/或哈希值验证,获得验证结果;
将所述当前存储路径与所述业务系统对应的存储路径进行匹配,获得匹配结果;
基于所述匹配结果及所述验证结果判断是否为所述业务系统自身的程序文件。
可选地,所述判断所述可执行文件是否为所述业务系统自身的程序文件之后,还包括:
若为所述业务系统自身的程序文件,则从所述当前进程信息对应线程的栈内存空间中获取各函数调用的返回地址;
根据所述返回地址确定所述写操作请求的函数调用栈;
通过所述函数调用栈识别所述写操作请求是否合法;
在所述写操作请求不合法时,对所述写操作请求进行拦截。
可选地,所述根据所述返回地址确定所述写操作请求的函数调用栈,包括:
获取所述返回地址所在模块的模块名;
基于所述模块名来建立所述写操作请求的函数调用栈;
所述通过所述函数调用栈识别所述写操作请求是否合法,包括:
根据所述函数调用栈中的模块名及模块名的排列顺序生成当前调用链;
将所述当前调用链与预设特征库中的各标准调用栈的标准调用链进行比较,获得第一比较结果;
基于所述第一比较结果判断所述写操作请求是否合法。
可选地,所述基于所述第一比较结果判断所述写操作请求是否合法之前,还包括:
将所述当前调用链与本地特征库中的各本地调用栈的本地调用链进行比较,获得第二比较结果,所述本地特征库为基于本地的业务系统在预设时间段内的行为进行学习生成;
所述基于所述第一比较结果判断所述写操作请求是否合法,包括:
基于所述第一比较结果和所述第二比较结果判断所述写操作请求是否合法。
可选地,所述获取所述返回地址所在模块的模块名,包括:
基于所述当前进程信息枚举所有加载模块的模块信息,通过所述模块信息确定各加载模块的加载起始地址和加载结束地址,并根据所述返回地址、以及各加载模块的加载起始地址和加载结束地址确定所述返回地址所在模块的模块名;
或,
在模块映射表中查找与所述当前进程信息对应的模块名、以及各加载模块的加载起始地址和加载结束地址,并根据所述返回地址、以及各加载模块的加载起始地址和加载结束地址确定所述返回地址所在模块的模块名,所述模块映射表由操作系统机制注册的回调函数生成。
可选地,所述在接收到对业务系统中业务数据的写操作请求时,获取发起所述写操作请求的当前进程信息之前,还包括:
枚举操作系统中运行的进程信息,基于所述进程信息确定各业务系统自身的程序文件、以及各业务系统的业务数据;
或,
枚举操作系统安装的软件信息,基于所述软件信息确定各业务系统的配置信息,并基于所述配置信息确定各业务系统自身的程序文件、以及各业务系统的业务数据;
或,
枚举操作系统中注册的服务信息和/或开机启动项信息,基于所述服务信息和/或开机启动项信息确定各业务系统的安装目录和启动参数,通过所述安装目录和启动参数确定各业务系统的配置信息,并基于所述配置信息确定各业务系统自身的程序文件、以及各业务系统的业务数据。
此外,为实现上述目的,本发明还提供一种业务数据保护设备,所述业务数据保护设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的业务数据保护程序,所述业务数据保护程序配置为实现如上所述的业务数据保护方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有业务数据保护程序,所述业务数据保护程序被处理器执行时实现如上所述的业务数据保护方法的步骤。
此外,为实现上述目的,本发明还提供一种业务数据保护装置,所述业务数据保护装置包括:
信息获取模块,用于在接收到对业务系统中业务数据的写操作请求时,获取发起所述写操作请求的当前进程信息;
文件确定模块,用于基于所述当前进程信息确定对应的可执行文件;
文件判断模块,用于判断所述可执行文件是否为所述业务系统自身的程序文件;
请求拦截模块,用于若不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截。
本发明在接收到对业务系统中业务数据的写操作请求时,基于所述写操作请求的当前进程信息确定对应的可执行文件,若所述可执行文件不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截,保证业务数据只会被业务系统自身的程序文件进行写操作,避免勒索病毒对业务数据的非法写操作,从而有效阻止勒索病毒破坏行为,提高了业务系统的业务数据安全性。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的业务数据保护设备结构示意图;
图2为本发明业务数据保护设备方法第一实施例的流程示意图;
图3为本发明业务数据保护设备方法第二实施例中步骤S30的流程示意图;
图4为本发明业务数据保护设备方法第三实施例步骤S30之后的流程示意图;
图5为本发明业务数据保护设备装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,该业务数据保护设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对业务数据保护设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及业务数据保护程序。
在图1所示的业务数据保护设备中,网络接口1004主要用于与外部网络进行数据通信;用户接口1003主要用于接收用户的输入指令;所述业务数据保护设备通过处理器1001调用存储器1005中存储的业务数据保护程序,并执行以下操作:
在接收到对业务系统中业务数据的写操作请求时,获取发起所述写操作请求的当前进程信息;
基于所述当前进程信息确定对应的可执行文件;
判断所述可执行文件是否为所述业务系统自身的程序文件;
若不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截。
进一步地,处理器1001可以调用存储器1005中存储的业务数据保护程序,还执行以下操作:
获取所述可执行文件的当前存储路径;
对所述可执行文件进行数字签名和/或哈希值验证,获得验证结果;
将所述当前存储路径与所述业务系统对应的存储路径进行匹配,获得匹配结果;
基于所述匹配结果及所述验证结果判断是否为所述业务系统自身的程序文件。
进一步地,处理器1001可以调用存储器1005中存储的业务数据保护程序,还执行以下操作:
若为所述业务系统自身的程序文件,则从所述当前进程信息对应线程的栈内存空间中获取各函数调用的返回地址;
根据所述返回地址确定所述写操作请求的函数调用栈;
通过所述函数调用栈识别所述写操作请求是否合法;
在所述写操作请求不合法时,对所述写操作请求进行拦截。
进一步地,处理器1001可以调用存储器1005中存储的业务数据保护程序,还执行以下操作:
获取所述返回地址所在模块的模块名;
基于所述模块名来建立所述写操作请求的函数调用栈;
根据所述函数调用栈中的模块名及模块名的排列顺序生成当前调用链;
将所述当前调用链与预设特征库中的各标准调用栈的标准调用链进行比较,获得第一比较结果;
基于所述第一比较结果判断所述写操作请求是否合法。
进一步地,处理器1001可以调用存储器1005中存储的业务数据保护程序,还执行以下操作:
将所述当前调用链与本地特征库中的各本地调用栈的本地调用链进行比较,获得第二比较结果,所述本地特征库为基于本地的业务系统在预设时间段内的行为进行学习生成;
基于所述第一比较结果和所述第二比较结果判断所述写操作请求是否合法。
进一步地,处理器1001可以调用存储器1005中存储的业务数据保护程序,还执行以下操作:
基于所述当前进程信息枚举所有加载模块的模块信息,通过所述模块信息确定各加载模块的加载起始地址和加载结束地址,并根据所述返回地址、以及各加载模块的加载起始地址和加载结束地址确定所述返回地址所在模块的模块名;
或,
在模块映射表中查找与所述当前进程信息对应的模块名、以及各加载模块的加载起始地址和加载结束地址,并根据所述返回地址、以及各加载模块的加载起始地址和加载结束地址确定所述返回地址所在模块的模块名,所述模块映射表由操作系统机制注册的回调函数生成。
进一步地,处理器1001可以调用存储器1005中存储的业务数据保护程序,还执行以下操作:
枚举操作系统中运行的进程信息,基于所述进程信息确定各业务系统自身的程序文件、以及各业务系统的业务数据;
或,
枚举操作系统安装的软件信息,基于所述软件信息确定各业务系统的配置信息,并基于所述配置信息确定各业务系统自身的程序文件、以及各业务系统的业务数据;
或,
枚举操作系统中注册的服务信息和/或开机启动项信息,基于所述服务信息和/或开机启动项信息确定各业务系统的安装目录和启动参数,通过所述安装目录和启动参数确定各业务系统的配置信息,并基于所述配置信息确定各业务系统自身的程序文件、以及各业务系统的业务数据。
本实施例在接收到对业务系统中业务数据的写操作请求时,基于所述写操作请求的当前进程信息确定对应的可执行文件,若所述可执行文件不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截,保证业务数据只会被业务系统自身的程序文件进行写操作,避免勒索病毒对业务数据的非法写操作,从而有效阻止勒索病毒破坏行为,提高了业务系统的业务数据安全性。
基于上述硬件结构,提出本发明业务数据保护方法实施例。
参照图2,图2为本发明业务数据保护方法第一实施例的流程示意图。
在第一实施例中,所述业务数据保护方法包括以下步骤:
S10:在接收到对业务系统中业务数据的写操作请求时,获取发起所述写操作请求的当前进程信息。
需要说明的是,不管是业务系统还是勒索病毒,在访问、修改业务数据的时候,都是通过操作系统的系统调用来实现。当应用程序调用系统调用的时候,操作系统会把这些系统调用转换成文件系统的IO请求,实现数据的访问,所以通过HOOK操作系统的系统调用,或者通过文件系统过滤驱动,都可以捕获到对业务系统中业务数据的写操作请求。
可理解的是,本实施例以通过文件过滤驱动进行捕获为例,当然,也不排除可通过HOOK操作系统的系统调用进行捕获,或者是通过其他方式进行捕获。
在具体实现中,所述写操作请求指的是会导致业务数据发生改变操作的请求,例如:写入数据、更改名称、修改属性、删除等操作的请求,当然,还有可能包括其他操作,本实施例对此不加以限制。
应理解的是,对于写操作请求而言,通常需要由进程来实现,因此,可获取发起所述写操作请求的当前进程信息,所述当前进程信息即为发起所述写操作请求的进程的进程信息,通常来说,所述当前进程信息的形式为进程的ID,当然,还可为其他类型的进程信息,本实施例对此不加以限制。
通常情况下,业务系统的业务数据都是存在特定的目录下,一个或者多个,为了保护业务系统的业务数据不被破坏,需要先获得这些业务数据的存放位置,再进行保护。由于不同的业务系统、不同的配置方法,他们业务数据存放的位置会不一样,为了找到这些业务数据存放位置,需要获得业务主机上业务系统的类型和配置信息,再根据配置信息获得业务存放位置。
为准确获得所述业务数据的存放位置,可采用以下三种方式来获取:
第一种方式为:枚举操作系统中运行的进程信息,基于所述进程信息确定各业务系统自身的程序文件、以及各业务系统的业务数据。
例如:如操作系统中运行的一个进程信息是:“/usr/bin/postgres -D /var/db/pgsql/data -p 21114”,由进程名得知这个是Postgres数据库的进程,data -p 21114就是业务数据的存放路径。
第二种方式为:枚举操作系统安装的软件信息,基于所述软件信息确定各业务系统的配置信息,并基于所述配置信息确定各业务系统自身的程序文件、以及各业务系统的业务数据。
例如:通过windows的注册表可以知道操作系统上安装了哪些业务程序,以及每个业务程序的配置信息,通过配置信息可以得知业务数据的存储位置。
第三种方式为:枚举操作系统中注册的服务信息和/或开机启动项信息(业务系统程序一般都是配置成开机自动启动的),基于所述服务信息和/或开机启动项信息确定各业务系统的安装目录和启动参数,通过所述安装目录和启动参数确定各业务系统的配置信息(配置文件都是放在特定位置的),并基于所述配置信息确定各业务系统自身的程序文件、以及各业务系统的业务数据。
S20:基于所述当前进程信息确定对应的可执行文件。
需要说明的是,可执行文件指的是可以由操作系统进行加载执行的文件。在不同的操作系统环境下,可执行程序的呈现方式不一样,在windows操作系统下,可执行程序可以是.exe文件、.sys文件和.com等类型文件。
可理解的是,发起所述写操作请求的进程通常来说,也需要由可执行文件的调用指令生成,故而,在确定发起所述写操作请求的进程的进程信息(即当前进程信息)后,即可基于所述当前进程信息确定对应的可执行文件。
S30:判断所述可执行文件是否为所述业务系统自身的程序文件。
应理解的是,对于所述可执行文件而言,其通常来说会具有文件名,在具体判断时,可基于所述可执行文件的文件名与业务系统自身的程序文件的文件名进行匹配,来判断所述可执行文件是否为所述业务系统自身的程序文件,当然,还可采用其他方式进行判断,本实施例对此不加以限制。
S40:若不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截。
在具体实现中,若所述可执行文件不为所述业务系统自身的程序文件,则说明所述写操作请求有可能是由勒索病毒所发起,属于非法写操作,业务数据存在安全隐患,因此,需要对所述写操作请求进行拦截,也就是说,操作系统不会对所述写操作请求进行响应。
本实施例在接收到对业务系统中业务数据的写操作请求时,基于所述写操作请求的当前进程信息确定对应的可执行文件,若所述可执行文件不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截,保证业务数据只会被业务系统自身的程序文件进行写操作,避免勒索病毒对业务数据的非法写操作,从而有效阻止勒索病毒破坏行为,提高了业务系统的业务数据安全性。
参照图3,图3为本发明业务数据保护方法第二实施例中步骤S30的流程示意图,基于上述图2所示的实施例,提出本发明业务数据保护方法的第二实施例。
在第二实施例中,步骤S30包括:
S301:获取所述可执行文件的当前存储路径。
需要说明的是,对于所述可执行文件而言,其由于可执行文件的文件名可进行修改或伪装,而业务系统自身的程序文件通常会存储于固定的存储路径中,因此,为提高判断的准确性,可基于存储路径进行判断,本实施例中可先获取可执行文件的当前存储路径,也就是可执行文件的绝对路径。
S302:对所述可执行文件进行数字签名和/或哈希值验证,获得验证结果。
可理解的是,由于勒索病毒可能会把原有的业务系统中的可执行文件删除,然后把病毒程序伪装成业务系统原有的可执行文件,再对业务数据进行破坏,为了避免这种情况出现,可对所述可执行文件进行数字签名和/或哈希值验证,当然,需要提前获得各业务系统中可执行文件的数字签名信息和哈希值,以便于进行本步骤中的验证。
S303:将所述当前存储路径与所述业务系统对应的存储路径进行匹配,获得匹配结果。
在具体实现中,由于业务系统会包含一个或者多个可执行文件,故而,需要对这些业务系统的可执行文件进行逐一匹配,以获得匹配结果。
S304:基于所述匹配结果及所述验证结果判断是否为所述业务系统自身的程序文件。
应理解的是,在匹配结果为匹配成功,并且验证结果为验证成功时,即可判定所述可执行文件为所述业务系统自身的程序文件,反之,即可判定所述可执行文件不为所述业务系统自身的程序文件。
本实施例通过存储路径来判断可执行文件是否来自于业务系统自身的程序文件,对可执行文件进行数字签名和/或哈希值验证,防止勒索病毒伪装成业务系统原有的可执行文件,从而提高了判断是否为所述业务系统自身的程序文件的准确性。
参照图4,图4为本发明业务数据保护方法第三实施例中步骤S30之后的流程示意图,基于上述图2或3所示的实施例,提出本发明业务数据保护方法的第三实施例。
在第三实施例中,步骤S30之后,还包括:
S51:若为所述业务系统自身的程序文件,则从所述当前进程信息对应线程的栈内存空间中获取各函数调用的返回地址。
需要说明的是,有些勒索病毒并不是一个独立的进程,还有可能通过进程注入的方式,将恶意的代码注入到业务系统自身的程序文件生成进程中,然后再在这个进程的上下文执行破坏的操作,这种情况下,只判断是否为业务系统自身的程序文件就无法有效保护业务数据,为了针对这种情况,需要对所述写操作请求的行为进行进一步判断。
S52:根据所述返回地址确定所述写操作请求的函数调用栈。
在具体实现中,在访问业务数据的时候都是调用操作系统的系统函数来实现,比如应用程序调用C库的write函数来写业务数据文件,C库的实现会调用更下层的模块函数,如kernel32.dll的WriteFile函数,而WriteFile函数的实现又会调用下层模块ntdll.dll的NtWriteFile函数,最终写操作请求进入操作系统内核。
在进行函数调用的时候,调用模块的返回地址会先入栈,保存在线程的栈内存空间中,所以通过分析线程的栈内存空间可以获得函数调用的返回地址,对这些返回地址分析可以得知所述写操作请求的函数调用栈。
可理解的是,由于进程加载模块的时候分配的模块地址空间是随机的(进程每次启动的时候,这些模块的加载地址都是不固定的),如果直接通过返回地址确定写操作请求是源于正常的业务程序还是恶意的代码,还是比较难,需要对返回地址做转换,得到返回地址所在的模块的模块名,根据模块名来构建函数调用栈(把函数调用栈转换成模块调用栈),再进行比较,就容易很多,并且不用担心在不同的操作系统上会有兼容性问题,故而,可获取所述返回地址所在模块的模块名,然后基于所述模块名来建立所述写操作请求的函数调用栈。
应理解的是,对于一些内存病毒注入的场景,所有的注入代码都是存放在内存中,并不关联具体的模块文件,通过返回地址获取对应模块名的时候,会找不到对应的模块。这个情况下,可以认为所述写操作请求是非法请求,需要做拦截处理。
在具体实现中,为快速获取所述返回地址所在模块的模块名,可采用以下两种方式来获取所述返回地址所在模块的模块名:
第一种方式为:用户态代理程序方式;即将所述当前进程信息和返回地址发送至用户态代理程序,通过用户态代理程序基于所述当前进程信息枚举所有加载模块的模块信息,通过所述模块信息确定各加载模块的加载起始地址和加载结束地址,并根据所述返回地址、以及各加载模块的加载起始地址和加载结束地址确定所述返回地址所在模块的模块名。
假设业务进程的模块信息如下:
模块名 | 加载起始地址 | 模块大小 | 加载结束地址 |
kernel32.dll | 0x76A90000 | 0xF0000 | 0x76b80000 |
KernelBase.dll | 0x76600000 | 0x218000 | 0x76818000 |
ntdll.dll | 0x77240000 | 0x1A4000 | 0x773e4000 |
user32.dll | 0x76160000 | 0x19C000 | 0x762fc000 |
若返回地址分别是0x76A90100、0x772403e0,那么通过地址范围比较就可以知道所在的模块分别是kernel32.dll、ntdll.dll。
第二种方式为注册回调函数方式;即在模块映射表中查找与所述当前进程信息对应的模块名、以及各加载模块的加载起始地址和加载结束地址,并根据所述返回地址、以及各加载模块的加载起始地址和加载结束地址确定所述返回地址所在模块的模块名,所述模块映射表由操作系统机制注册的回调函数生成。
也就是说,可通过系统机制注册模块回调函数(如windows系统的PsSetLoadImageNotifyRoutine),当加载模块的时候操作系统都会调用该回调函数,在回调函数中可以获得当前进程信息、模块名、加载模块的加载起始地址和加载结束地址,然后构建当前进程信息对应进程的模块映射表,后续通过把返回地址和模块映射表比较,即可得知返回地址所在模块的模块名。
S53:通过所述函数调用栈识别所述写操作请求是否合法。
需要说明的是,为了识别这些函数调用栈的合法性,需要事先统计业务系统在正常情况下业务数据的写操作,获取所有标准调用栈的标准调用链,然后整理成一个预设特征库(不同的业务系统生成不同的预设特征库,如Oracle数据库对应一个预设特征库,MySql数据库对应另一个预设特征库)。
可理解的是,在通过所述函数调用栈识别所述写操作请求是否合法时,可采用以下方式进行判断:先根据所述函数调用栈中的模块名及模块名的排列顺序生成当前调用链,然后将所述当前调用链与预设特征库中的各标准调用栈的标准调用链进行比较,获得第一比较结果,再基于所述第一比较结果判断所述写操作请求是否合法。
例如:预先统计业务系统的行为时,业务系统程序都是通过MSVCRT.dll ->KernelBase.dll -> kernel32.dll -> ntdll.dll,此时,预设特征库中的标准调用栈的一个标准调用链即为MSVCRT.dll -> KernelBase.dll -> kernel32.dll -> ntdll.dll,若所述当前调用链为Wannacry.dll -> KernelBase.dll -> kernel32.dll -> ntdll.dll,此时可理解为所述写操作请求不合法,可理解为业务系统的可执行文件中被注入了Wannacry.dll模块,该模块在业务系统的进程上下文里面可能会执行业务数据破坏操作。
当然,由于操作系统、业务系统版本众多,并且不停进行更新,事先统计的业务行为生成的预设特征库可能无法覆盖所有客户业务主机的业务系统的常规行为。这样就非常容易在做防护的时候出现误判,把正常的业务系统操作当成了病毒破坏操作,进而对他做了拦截处理,引起业务故障。为了避免这个问题,可以在目标主机安装本防护系统之后,再在该目标主机上学习一段时间业务系统行为(例如学习1周),生成一个本地特征库,后续结合预置特征库和本地特征库进行拦截防护,可以避免误判的行为,以达到更好的防护效果,也就是说,在步骤S53之前,可先将所述当前调用链与本地特征库中的各本地调用栈的本地调用链进行比较,获得第二比较结果,所述本地特征库为基于本地的业务系统在预设时间段内的行为进行学习生成;
相应地,可基于所述第一比较结果和所述第二比较结果判断所述写操作请求是否合法。
S54:在所述写操作请求不合法时,对所述写操作请求进行拦截。
当然,在所述写操作请求合法时,可对所述写操作请求进行放行,此时,即可对所述写操作请求进行响应。
本实施例通过写操作请求涉及的函数调用栈来识别写操作请求是否合法,从而能够准确判断写操作请求是否合法,进而有效保护业务数据的安全。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有业务数据保护程序,所述业务数据保护程序被处理器执行时实现如下操作:
在接收到对业务系统中业务数据的写操作请求时,获取发起所述写操作请求的当前进程信息;
基于所述当前进程信息确定对应的可执行文件;
判断所述可执行文件是否为所述业务系统自身的程序文件;
若不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截。
此外,本发明实施例还提出一种业务数据保护装置,参照图5,所述装置包括:
信息获取模块501,用于在接收到对业务系统中业务数据的写操作请求时,获取发起所述写操作请求的当前进程信息;
文件确定模块502,用于基于所述当前进程信息确定对应的可执行文件;
文件判断模块503,用于判断所述可执行文件是否为所述业务系统自身的程序文件;
请求拦截模块504,用于若不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种业务数据保护方法,其特征在于,所述业务数据保护方法包括以下步骤:
在接收到对业务系统中业务数据的写操作请求时,获取发起所述写操作请求的当前进程信息;
基于所述当前进程信息确定对应的可执行文件;
判断所述可执行文件是否为所述业务系统自身的程序文件;
若不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截;
其中,所述判断所述可执行文件是否为所述业务系统自身的程序文件之后,还包括:
若为所述业务系统自身的程序文件,则从所述当前进程信息对应线程的栈内存空间中获取各函数调用的返回地址;
根据所述返回地址确定所述写操作请求的函数调用栈;
通过所述函数调用栈识别所述写操作请求是否合法;
在所述写操作请求不合法时,对所述写操作请求进行拦截;
所述根据所述返回地址确定所述写操作请求的函数调用栈,包括:
获取所述返回地址所在模块的模块名;
基于所述模块名来建立所述写操作请求的函数调用栈;
所述通过所述函数调用栈识别所述写操作请求是否合法,包括:
根据所述函数调用栈中的模块名及模块名的排列顺序生成当前调用链;
将所述当前调用链与预设特征库中的各标准调用栈的标准调用链进行比较,获得第一比较结果;
基于所述第一比较结果判断所述写操作请求是否合法。
2.如权利要求1所述的业务数据保护方法,其特征在于,所述判断所述可执行文件是否为所述业务系统自身的程序文件,包括:
获取所述可执行文件的当前存储路径;
对所述可执行文件进行数字签名和/或哈希值验证,获得验证结果;
将所述当前存储路径与所述业务系统对应的存储路径进行匹配,获得匹配结果;
基于所述匹配结果及所述验证结果判断是否为所述业务系统自身的程序文件。
3.如权利要求1所述的业务数据保护方法,其特征在于,所述基于所述第一比较结果判断所述写操作请求是否合法之前,还包括:
将所述当前调用链与本地特征库中的各本地调用栈的本地调用链进行比较,获得第二比较结果,所述本地特征库为基于本地的业务系统在预设时间段内的行为进行学习生成;
所述基于所述第一比较结果判断所述写操作请求是否合法,包括:
基于所述第一比较结果和所述第二比较结果判断所述写操作请求是否合法。
4.如权利要求1所述的业务数据保护方法,其特征在于,所述获取所述返回地址所在模块的模块名,包括:
基于所述当前进程信息枚举所有加载模块的模块信息,通过所述模块信息确定各加载模块的加载起始地址和加载结束地址,并根据所述返回地址、以及各加载模块的加载起始地址和加载结束地址确定所述返回地址所在模块的模块名;
或,
在模块映射表中查找与所述当前进程信息对应的模块名、以及各加载模块的加载起始地址和加载结束地址,并根据所述返回地址、以及各加载模块的加载起始地址和加载结束地址确定所述返回地址所在模块的模块名,所述模块映射表由操作系统机制注册的回调函数生成。
5.如权利要求1~2中任一项所述的业务数据保护方法,其特征在于,所述在接收到对业务系统中业务数据的写操作请求时,获取发起所述写操作请求的当前进程信息之前,还包括:
枚举操作系统中运行的进程信息,基于所述进程信息确定各业务系统自身的程序文件、以及各业务系统的业务数据;
或,
枚举操作系统安装的软件信息,基于所述软件信息确定各业务系统的配置信息,并基于所述配置信息确定各业务系统自身的程序文件、以及各业务系统的业务数据;
或,
枚举操作系统中注册的服务信息和/或开机启动项信息,基于所述服务信息和/或开机启动项信息确定各业务系统的安装目录和启动参数,通过所述安装目录和启动参数确定各业务系统的配置信息,并基于所述配置信息确定各业务系统自身的程序文件、以及各业务系统的业务数据。
6.一种业务数据保护设备,其特征在于,所述业务数据保护设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的业务数据保护程序,所述业务数据保护程序配置为实现如权利要求1至5中任一项所述的业务数据保护方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有业务数据保护程序,所述业务数据保护程序被处理器执行时实现如权利要求1至5中任一项所述的业务数据保护方法的步骤。
8.一种业务数据保护装置,其特征在于,所述业务数据保护装置包括:
信息获取模块,用于在接收到对业务系统中业务数据的写操作请求时,获取发起所述写操作请求的当前进程信息;
文件确定模块,用于基于所述当前进程信息确定对应的可执行文件;
文件判断模块,用于判断所述可执行文件是否为所述业务系统自身的程序文件;
请求拦截模块,用于若不为所述业务系统自身的程序文件,则对所述写操作请求进行拦截;
所述文件判断模块,还用于若为所述业务系统自身的程序文件,则从所述当前进程信息对应线程的栈内存空间中获取各函数调用的返回地址;根据所述返回地址确定所述写操作请求的函数调用栈;通过所述函数调用栈识别所述写操作请求是否合法;在所述写操作请求不合法时,对所述写操作请求进行拦截;
所述文件判断模块,还用于获取所述返回地址所在模块的模块名;基于所述模块名来建立所述写操作请求的函数调用栈;
所述文件判断模块,还用于根据所述函数调用栈中的模块名及模块名的排列顺序生成当前调用链;将所述当前调用链与预设特征库中的各标准调用栈的标准调用链进行比较,获得第一比较结果;基于所述第一比较结果判断所述写操作请求是否合法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211140923.8A CN115221524B (zh) | 2022-09-20 | 2022-09-20 | 业务数据保护方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211140923.8A CN115221524B (zh) | 2022-09-20 | 2022-09-20 | 业务数据保护方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115221524A CN115221524A (zh) | 2022-10-21 |
CN115221524B true CN115221524B (zh) | 2023-01-03 |
Family
ID=83616805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211140923.8A Active CN115221524B (zh) | 2022-09-20 | 2022-09-20 | 业务数据保护方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115221524B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116846656B (zh) * | 2023-07-18 | 2024-04-05 | 北京道迩科技有限公司 | 离线病毒防御方法及系统 |
CN117093995B (zh) * | 2023-10-17 | 2024-02-06 | 深圳市科力锐科技有限公司 | 病毒程序清除方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446918A (zh) * | 2008-12-10 | 2009-06-03 | 中兴通讯股份有限公司 | 一种实现用户态调试器调试单个函数的方法及系统 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
CN111310213A (zh) * | 2020-02-20 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种业务数据保护方法、装置、设备及可读存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10127243B2 (en) * | 2015-09-22 | 2018-11-13 | International Business Machines Corporation | Fast recovery using self-describing replica files in a distributed storage system |
CN105930740B (zh) * | 2016-04-15 | 2018-10-16 | 重庆鑫合信科技有限公司 | 软体文件被修改时的来源追溯方法、监测方法、还原方法及系统 |
CN108932428B (zh) * | 2017-05-25 | 2022-11-11 | 腾讯科技(深圳)有限公司 | 一种勒索软件的处理方法、装置、设备及可读存储介质 |
CN107480527B (zh) * | 2017-08-03 | 2021-07-30 | 深圳市联软科技股份有限公司 | 勒索软件的防范方法及系统 |
CN109800576B (zh) * | 2018-12-29 | 2021-07-23 | 360企业安全技术(珠海)有限公司 | 未知程序异常请求的监控方法、装置、及电子装置 |
CN110084057A (zh) * | 2019-03-13 | 2019-08-02 | 浙江大华技术股份有限公司 | 重要文件的安全访问方法、装置、设备和存储介质 |
CN110222508A (zh) * | 2019-06-12 | 2019-09-10 | 深圳市网心科技有限公司 | 勒索病毒防御方法、电子设备、系统及介质 |
CN113569246A (zh) * | 2020-04-28 | 2021-10-29 | 腾讯科技(深圳)有限公司 | 漏洞检测方法、装置、计算机设备和存储介质 |
US20220092170A1 (en) * | 2020-09-21 | 2022-03-24 | Yazamtech Ltd. | Malicious files detection and disarming |
CN113672925B (zh) * | 2021-08-26 | 2024-01-26 | 安天科技集团股份有限公司 | 阻止勒索软件攻击的方法、装置、存储介质及电子设备 |
CN114218563A (zh) * | 2021-12-02 | 2022-03-22 | 北京江民新科技术有限公司 | 诱捕勒索病毒的方法及系统 |
-
2022
- 2022-09-20 CN CN202211140923.8A patent/CN115221524B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446918A (zh) * | 2008-12-10 | 2009-06-03 | 中兴通讯股份有限公司 | 一种实现用户态调试器调试单个函数的方法及系统 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
CN111310213A (zh) * | 2020-02-20 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种业务数据保护方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115221524A (zh) | 2022-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645383B2 (en) | Early runtime detection and prevention of ransomware | |
CN115221524B (zh) | 业务数据保护方法、装置、设备及存储介质 | |
US8510838B1 (en) | Malware protection using file input/output virtualization | |
US7620990B2 (en) | System and method for unpacking packed executables for malware evaluation | |
EP3123311B1 (en) | Malicious code protection for computer systems based on process modification | |
US7934261B1 (en) | On-demand cleanup system | |
CN109583202B (zh) | 用于检测进程的地址空间中的恶意代码的系统和方法 | |
US9147073B2 (en) | System and method for automatic generation of heuristic algorithms for malicious object identification | |
EP3230919B1 (en) | Automated classification of exploits based on runtime environmental features | |
US20130067577A1 (en) | Malware scanning | |
US20080148399A1 (en) | Protection against stack buffer overrun exploitation | |
US20070089088A1 (en) | Dynamically determining a buffer-stack overrun | |
CN105760773A (zh) | 通过易受攻击的应用控制打开文件的系统和方法 | |
RU2723665C1 (ru) | Динамический индикатор репутации для оптимизации операций по обеспечению компьютерной безопасности | |
US9659173B2 (en) | Method for detecting a malware | |
CN107330328B (zh) | 防御病毒攻击的方法、装置及服务器 | |
CN109815700B (zh) | 应用程序的处理方法及装置、存储介质、计算机设备 | |
US8370941B1 (en) | Rootkit scanning system, method, and computer program product | |
US20080028462A1 (en) | System and method for loading and analyzing files | |
US20230297676A1 (en) | Systems and methods for code injection detection | |
CN108038380B (zh) | 用于计算机安全的接种器和抗体 | |
US8578495B2 (en) | System and method for analyzing packed files | |
US9787699B2 (en) | Malware detection | |
CN105791221B (zh) | 规则下发方法及装置 | |
CN113569240A (zh) | 恶意软件的检测方法、装置及设备 |
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 |