本申请涉及计算机,尤其涉及一种内存马检测方法、装置、电子设备及存储介质。
背景技术:
1、近年来,网络安全问题日益突出,个人、企业、机构等正遭受着越来越多来自不同背景的攻击者发起的网络攻击。在大多数的java中恶意攻击,攻击者通过业务存在的漏洞攻击成功后,往往会通过java内存马的形式将恶意代码驻留在业务的内存当中(不直接操作硬盘,并不会在硬盘上留下痕迹),达到持久化的目的,为攻击者再次发起攻击提供便利。
2、现有技术将查找内存马的功能代码注入到业务进程中,通过遍历业务进程所有的java类的风险等级来筛选可疑的类,再通过反编译的手段来判断是不是内存马。但是,功能代码注入对业务进程的影响大,如果功能代码崩溃了可能会导致业务进程也崩溃,并且通过风险等级来筛选可疑类存在不确定性,导致内存马检测的准确性较低。
技术实现思路
1、为了解决上述功能代码注入对业务进程的影响大,如果功能代码崩溃了可能会导致业务进程也崩溃,并且通过风险等级来筛选可疑类存在不确定性,导致内存马检测的准确性较低的技术问题,本申请提供了一种内存马检测方法、装置、电子设备及存储介质。具体技术方案如下:
2、第一方面,本申请提供了一种内存马检测方法,所述方法包括:
3、确定服务器中目标应用程序,并获取所述目标应用程序的字节码;
4、确定内存马检测策略,在所述内存马检测策略为内存马被动检测策略的情况下,查找所述字节码中的目标堆栈;
5、将所述目标堆栈存储至预设堆栈黑名单,根据所述预设堆栈黑名单中的所述目标堆栈进行内存马被动检测。
6、在一个可选的实施方式中,所述获取所述目标应用程序的字节码,包括:
7、获取所述目标应用程序的原始文件,并对所述原始文件执行解压处理得到类文件,获取所述类文件中的字节码;
8、或者,
9、确定所述目标应用程序对应的进程,并加载自定义的代理类,通过所述代理类获取所述进程中类的字节码。
10、在一个可选的实施方式中,所述在所述内存马检测策略为内存马被动检测策略的情况下,查找所述字节码中的目标堆栈,包括:
11、在所述内存马检测策略为内存马被动检测策略的情况下,查找所述字节码中具有代码执行权限的堆栈。
12、在一个可选的实施方式中,所述将所述目标堆栈存储至预设堆栈黑名单,根据所述预设堆栈黑名单中的所述目标堆栈进行内存马被动检测,包括:
13、将所述字节码中所述具有代码执行权限的堆栈存储至预设堆栈黑名单;
14、在所述预设堆栈黑名单中的所述具有代码执行权限的堆栈被调用的情况下,确定调用所述具有代码执行权限的堆栈的对象;
15、将所述对象确定为内存马攻击,并终止所述目标应用程序,或者,触发内存马攻击的告警。
16、在一个可选的实施方式中,所述方法还包括:
17、在所述内存马检测策略为内存马主动检测策略的情况下,获取所述字节码中的虚拟机的所有类;
18、遍历所述虚拟机的所有类,查找属于过滤器的子类,根据所述过滤器的子类进行内存马主动检测。
19、在一个可选的实施方式中,所述根据所述过滤器的子类进行内存马主动检测,包括:
20、检查所述过滤器的子类的父类是否为危险类;
21、在所述过滤器的子类的父类为所述危险类的情况下,将所述过滤器的子类确定为内存马攻击;
22、终止所述目标应用程序,或者,触发内存马攻击的告警;
23、和/或,
24、检查所述过滤器的子类的接口类是否为危险类;
25、在所述过滤器的子类的接口类为所述危险类的情况下,将所述过滤器的子类确定为内存马攻击;
26、终止所述目标应用程序,或者,触发内存马攻击的告警。
27、在一个可选的实施方式中,所述检查所述过滤器的子类的父类是否为危险类,包括:
28、检查所述过滤器的子类的父类是否存在对应的类文件;
29、在所述过滤器的子类的父类存在对应的类文件的情况下,确定所述过滤器的子类的父类不是危险类;
30、在所述过滤器的子类的父类未存在对应的类文件的情况下,确定所述过滤器的子类的父类为危险类;
31、所述检查所述过滤器的子类的接口类是否为危险类,包括:
32、检查所述过滤器的子类的接口类是否存在对应的类文件;
33、在所述过滤器的子类的接口类存在对应的类文件的情况下,确定所述过滤器的子类的父类不是危险类;
34、在所述过滤器的子类的接口类未存在对应的类文件的情况下,确定所述过滤器的子类的父类为危险类。
35、第二方面,本申请提供了一种内存马检测装置,所述装置包括:
36、字节码获取模块,用于确定服务器中目标应用程序,并获取所述目标应用程序的字节码;
37、堆栈查找模块,用于确定内存马检测策略,在所述内存马检测策略为内存马被动检测策略的情况下,查找所述字节码中的目标堆栈;
38、内存马检测模块,用于将所述目标堆栈存储至预设堆栈黑名单,根据所述预设堆栈黑名单中的所述目标堆栈进行内存马被动检测。
39、第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
40、存储器,用于存放计算机程序;
41、处理器,用于执行存储器上所存放的程序时,实现上述第一方面中任一所述的内存马检测方法。
42、第四方面,还提供了一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面中任一所述的内存马检测方法。
43、第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的内存马检测方法。
44、本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的该方法,确定服务器中目标应用程序,并获取目标应用程序的字节码,确定内存马检测策略,在内存马检测策略为内存马被动检测策略的情况下,查找字节码中的目标堆栈,将目标堆栈存储至预设堆栈黑名单,根据预设堆栈黑名单中的目标堆栈进行内存马被动检测。
45、通过获取目标应用程序的字节码,查找字节码中的目标堆栈,将目标堆栈存储至预设堆栈黑名单,根据预设堆栈黑名单中的目标堆栈进行内存马被动检测,如此基于字节码中的目标堆栈进行内存马被动检测,可以提高检测的准确率,不易出现漏检,丰富和提高了威胁检测和分析能力。同时避免常规代码注入方式对业务的影响,减小了在检测内存马过程中可能遇到的风险,不会对目标应用程序造成影响,保证业务的性能和安全。
1.一种内存马检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述获取所述目标应用程序的字节码,包括:
3.根据权利要求1所述的方法,其特征在于,所述在所述内存马检测策略为内存马被动检测策略的情况下,查找所述字节码中的目标堆栈,包括:
4.根据权利要求3所述的方法,其特征在于,所述将所述目标堆栈存储至预设堆栈黑名单,根据所述预设堆栈黑名单中的所述目标堆栈进行内存马被动检测,包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述根据所述过滤器的子类进行内存马主动检测,包括:
7.根据权利要求6所述的方法,其特征在于,所述检查所述过滤器的子类的父类是否为危险类,包括:
8.一种内存马检测装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
10.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。