本发明涉及木马检测,尤其涉及一种内存马检测方法、装置和电子设备。
背景技术:
1、内存马是无文件攻击的一种常用手段。以java为例,客户端的web请求会依次经过listener、filter、servlet等组件进行监听、判断、过滤等操作。客户端在web请求过程中,内存马可以在内存中修改已有的组件或动态注册一个新的组件,通过插入恶意的shellcode的方式实现长时间的控制服务器。
2、随着互联网技术的发展,越来越多的企业用户将核心业务系统转移到服务器上。web浏览器可以作为业务系统的窗口。内存马攻击web浏览器时,内存马可以通过web容器(如tomcat、weblogic等)或容器中的web应用漏洞(如任意命令执行、文件上传、反序列化等)将“恶意代码”驻留在应用内存中,实现攻击web浏览器。但是,内存马攻击web浏览器时留下的痕迹很少,导致服务器很难发现。因此,如何检测并拦截内存马是目前亟需解决的问题。
技术实现思路
1、为了解决上述的问题,本申请的实施例中提供了一种内存马检测方法、装置和电子设备,通过java字节码的特征分析jvm运行时的字节流进行内存马检测,可以避免了dumpclass和反编译操作,使得cpu资源消耗相比于目前的检测方式具有更低,同时避免了大量i/o操作。检测技术中引入ai算法,拥有优秀的泛化能力,提高攻击者绕过的门槛。对内存马注入行为进行实时阻断,避免应用被进一步攻击。采用java agent的方式而不是attach方式注入到应用中,不会造成应用进程崩溃,进而造成应用不可用。
2、为此,本申请的实施例中采用如下技术方案:
3、第一方面,本申请实施例提供一种内存马检测方法,包括:从java虚拟机获取class字节流;将class字节流与敏感规则库进行匹配,并根据匹配结果判断class字节流是否为风险class字节流;确定所述class字节流不是风险class字节流时,根据所述class字节流构建抽象语法树;获取所述抽象语法树的特征向量,并输入到随机森林模型中,以确定所述class字节流是否为风险class字节流。
4、在该实施例中,检测技术中引入ai算法,拥有优秀的泛化能力,提高攻击者绕过的门槛。对内存马注入行为进行实时阻断,避免应用被进一步攻击。
5、在一种实施方式中,在从java虚拟机获取class字节流之后,还包括:将所述class字节流解析为可识别的语句。
6、在一种实施方式中,所述根据所述class字节流构建抽象语法树,包括:根据所述class字节流构建所述抽象语法树,并利用规则对所述抽象语法树进行剪枝,得到修剪后的抽象语法树。
7、在一种实施方式中,所述获取所述抽象语法树的特征向量,包括:提取所述抽象语法树的表征向量;根据所述抽象语法树的表征向量和特征库,构建出所述抽象语法树的特征向量。
8、在一种实施方式中,所述方法还包括:获取所述随机森林模型输出的所述class字节流的风险分数,并判断所述class字节流的风险分数是否大于设定阈值;确定所述class字节流的风险分数不大于设定阈值时,所述class字节流没有内存马;以及确定所述class字节流的风险分数大于设定阈值时,所述class字节流为内存马。
9、在一种实施方式中,所述方法还包括:确定所述class字节流有内存马时,根据所述class字节流的风险分数和云端配置,判断是否拦截所述class字节流。
10、在一种实施方式中,所述根据匹配结果判断class字节流是否为风险class字节流,包括:确定所述class字节流为风险class字节流时,所述class字节流的风险分数为100分;以及确定所述class字节流不为风险class字节流时,所述class字节流的风险分数为0分。
11、第二方面,本申请实施例提供一种内存马检测装置,包括:收发单元,用于从java虚拟机获取class字节流;处理单元,用于将class字节流与敏感规则库进行匹配,并根据匹配结果判断class字节流是否为风险class字节流;确定所述class字节流不是风险class字节流时,根据所述class字节流构建抽象语法树;以及获取所述抽象语法树的特征向量,并输入到随机森林模型中,以确定所述class字节流是否为风险class字节流。
12、在一种实施方式中,所述处理单元,还用于将所述class字节流解析为可识别的语句。
13、在一种实施方式中,所述处理单元,具体用于根据所述class字节流构建所述抽象语法树,并利用规则对所述抽象语法树进行剪枝,得到修剪后的抽象语法树。
14、在一种实施方式中,所述处理单元,具体用于提取所述抽象语法树的表征向量;根据所述抽象语法树的表征向量和特征库,构建出所述抽象语法树的特征向量。
15、在一种实施方式中,所述处理单元,还用于获取所述随机森林模型输出的所述class字节流的风险分数,并判断所述class字节流的风险分数是否大于设定阈值;确定所述class字节流的风险分数不大于设定阈值时,所述class字节流没有内存马;以及确定所述class字节流的风险分数大于设定阈值时,所述class字节流有内存马。
16、在一种实施方式中,所述处理单元,还用于确定所述class字节流有内存马时,根据所述class字节流的风险分数和云端配置,判断是否拦截所述class字节流。
17、在一种实施方式中,所述处理单元,具体用于确定所述class字节流为风险class字节流时,所述class字节流的风险分数为100分;以及确定所述class字节流不为风险class字节流时,所述class字节流的风险分数为0分。
18、第三方面,本申请实施例提供一种电子设备,包括:至少一个存储器,至少一个收发器,至少一个处理器,所述处理器用于执行存储器中存储的指令,以使得所述电子设备执行如第一方面各个可能实现的方法。
19、第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面各个可能实现的方法。
20、第五方面,本申请实施例提供一种计算机程序产品,其特征在于,所述计算机程序产品存储有指令,所述指令在由计算机执行时,使得所述计算机实施第一方面各个可能实现的方法。
1.一种内存马检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在从java虚拟机获取class字节流之后,还包括:
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述class字节流构建抽象语法树,包括:
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述获取所述抽象语法树的特征向量,包括:
5.根据权利要求1-4任意一项所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1-6任意一项所述的方法,其特征在于,所述根据匹配结果判断class字节流是否为风险class字节流,包括:
8.一种内存马检测装置,其特征在于,包括:
9.根据权利要求8所述的装置,其特征在于,所述处理单元,还用于将所述class字节流解析为可识别的语句。
10.根据权利要求8或9所述的装置,其特征在于,所述处理单元,具体用于
11.根据权利要求8-10任意一项所述的装置,其特征在于,所述处理单元,具体用于
12.根据权利要求8-11任意一项所述的装置,其特征在于,所述处理单元,还用于
13.根据权利要求12所述的装置,其特征在于,所述处理单元,还用于
14.根据权利要求8-13任意一项所述的装置,其特征在于,所述处理单元,具体用于
15.一种电子设备,其特征在于,包括:
16.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-7中任一项的所述的方法。
17.一种计算机程序产品,其特征在于,所述计算机程序产品存储有指令,所述指令在由计算机执行时,使得所述计算机实施权利要求1-7任意一项所述的方法。