[发明专利]Webshell脚本检测方法、装置、电子设备及存储介质有效
申请号: | 202110463957.X | 申请日: | 2021-04-28 |
公开(公告)号: | CN113190849B | 公开(公告)日: | 2023-03-03 |
发明(设计)人: | 程克非;王晖迪 | 申请(专利权)人: | 重庆邮电大学 |
主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F21/14;G06F8/41 |
代理公司: | 重庆辉腾律师事务所 50215 | 代理人: | 卢胜斌 |
地址: | 400065 重*** | 国省代码: | 重庆;50 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | webshell 脚本 检测 方法 装置 电子设备 存储 介质 | ||
1.一种Webshell脚本检测方法,其特征在于,包括:
采集脚本数据,所述脚本数据包括不同脚本编程语言类型的Webshell脚本和其他网页脚本;
对所述脚本数据按照其对应的脚本编程语言进行预处理;
将预处理后的脚本数据进行语义分析,按照其对应的脚本编程语言抽取出抽象语法树序列;
将抽象语法树序列输入到词向量嵌入模型中获取词嵌入和样本特征词向量;
将所述词嵌入和样本特征词向量输入到预先训练好的Text-CNN神经网络中,对不同维度的词嵌入和样本特征词向量进行融合,词嵌入表示为其中,表示词向量k的n维嵌入表示;αi表示词向量k的第i个维度的权重,βi表示词向量k被编码之后的第i个维度的向量表示;υ表示词向量中所有维度归一化之后的结果;n表示词向量维度;从而检测出Webshell脚本。
2.根据权利要求1所述的一种Webshell脚本检测方法,其特征在于,所述对所述脚本数据按照其对应的脚本编程语言进行预处理包括:
确定所述脚本数据的脚本编程语言类型,包括php,jsp和asp;
使用md5算法对所述脚本数据进行去重处理;
对去重后的脚本数据执行混淆检测处理,检测到混淆后采用相应的去混淆算法恢复出样本数据;
对恢复出的php样本数据采用正则表达式提取出样本中的php源码;
对恢复出的jsp样本数据中unicode编码的样本进行unicode解码后,直接提取出样本的jsp源码;
对恢复出的asp脚本数据中utf-7编码的样本进行utf-7解码后,采用正则表达式提取出样本中的vb源码。
3.根据权利要求2所述的一种Webshell脚本检测方法,其特征在于,所述按照其对应的脚本编程语言抽取出抽象语法树序列包括:
采用自定义规则将所述php源码转换为抽象语法树的语义参数和语义节点;
广度优先遍历所述抽象语法树,访问每一个语义节点;
判断所述语义节点的类型,若所述语义节点是内嵌HTML节点,则以递归的形式将该语义节点的内容去更新所述抽象语法树,否则输出所述语义节点的名称;
直至遍历完成所有语义节点,将所有输出的语义节点名称作为php抽象语法树序列。
4.根据权利要求2所述的一种Webshell脚本检测方法,其特征在于,所述按照其对应的脚本编程语言抽取出抽象语法树序列还包括:
将所述jsp源码编译为java源码;
采用自定义规则将所述java源码转换为抽象语法树的语义参数和语义节点;
广度优先遍历抽象语法树,访问每一个语义节点;
判断当前分支的所述语义节点的类型,当所述语义节点为非注释或基础类名称节点时,则输出语义节点的名称,并继续访问语义节点;当所述语义节点为声明、定义或者初始化类型时,则直接继续访问语义节点;
直至遍历完成所有语义节点,将所有输出的语义节点名称作为java抽象语法树序列。
5.根据权利要求4所述的一种Webshell脚本检测方法,其特征在于,在访问每一个语义节点之前还包括当所述语义节点类型为调用方法时,且所述调用方法为jsp servlet中的方法时,则完成当前分支的解析,继续进行下一分支。
6.根据权利要求2所述的一种Webshell脚本检测方法,其特征在于,所述按照其对应的脚本编程语言抽取出抽象语法树序列包括:
采用自定义规则将所述vb源码解析为抽象语法树;
广度优先遍历抽象语法树,访问每一个语义节点;
判断所述语义节点的类型,当所述语义节点不是注释节点,输出所述语义节点的名称;
直至遍历访问完成所有语义节点,将所有输出的语义节点名称作为vb抽象语法树序列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆邮电大学,未经重庆邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110463957.X/1.html,转载请声明来源钻瓜专利网。