CN114662109A - 一种Webshell检测方法及装置 - Google Patents
一种Webshell检测方法及装置 Download PDFInfo
- Publication number
- CN114662109A CN114662109A CN202210435197.6A CN202210435197A CN114662109A CN 114662109 A CN114662109 A CN 114662109A CN 202210435197 A CN202210435197 A CN 202210435197A CN 114662109 A CN114662109 A CN 114662109A
- Authority
- CN
- China
- Prior art keywords
- source file
- php source
- php
- detected
- opcode
- 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.)
- Pending
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Virology (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种Webshell检测方法及装置,涉及信息安全技术领域,所述方法包括:获取待检测的PHP源文件;并编译处理,得到对应的opcode序列;将opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到对应的输入特征矩阵;将所述输入特征矩阵输入检测模型,进行检测。所述装置用于执行上述方法。本发明实施例提供的方法及装置,通过提取PHP源文件中的opcode并进行编译处理后,对每个PHP源文件对应的opcode进行检测,从而判断对应的PHP源文件是否Webshell,即便是加密或者混淆的PHP源文件,都可以上述方法进行检测,提高了Webshell检测的泛化能力和准确性。
Description
技术领域
本发明涉及信息安全技术领域,具体涉及一种Webshell检测方法及装置。
背景技术
webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理,但是由于webshell具有隐蔽性,存在着将webshell文件代码修改后当作后门使用从而达到控制网站服务器的情况。
现有技术中针对PHP类型的webshell的检测方法,根据检测对象的不同,可以分为基于日志、基于流量和基于文件的三种检测方法。首先,基于日志的WebShell检测方法主要统计Web服务器中日志文件并进行分析,从而识别出WebShell的访问数据记录。但这种方法依赖的日志条目多,对大量日志的读取分析在一定程度上影响了Web服务器性能,检测速度较慢,并且检测出WebShell时攻击已经发生,一般只能用于对攻击进行溯源;其次,基于流量分析的WebShell检测方法主要通过检测攻击者与Web服务器之间的通信过程,分析网络协议的数据包的特征如数据包参数、上传文件类型、上传文件后缀等,判断是否为攻击者和WebShell通信的流量,但是对于做了流量加密和混淆的文件,该类检测方法难以提前发现。最后,基于统计特征的文件检测方法是通过字符、关键字或者函数进行匹配检测,对于未做混淆的WebShell检测的准确率高,但是缺乏泛化能力,对混淆后的WebShell无法准确检测,并且随着WebShell变种的种类越来越多,模型过大会导致程序臃肿,影响服务器性能,增加维护成本。
发明内容
针对现有技术中的问题,本发明实施例提供一种Webshell检测方法及装置,能够至少部分地解决现有技术中存在的问题。
一方面,本发明提出一种Webshell检测方法,包括:
获取待检测的PHP源文件;
将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列;
将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵;
将所述待检测的PHP源文件对应的特征矩阵输入Webshell检测模型,输出Webshell检测结果;
其中,所述Webshell检测模型是基于PHP源文件样本训练后获得的,所述PHP源文件样本包括PHP源文件和对应的标签。
进一步的,将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列,包括:
通过词法分析将所述待检测的PHP源文件分割为PHP片段;
对所述PHP片段进行语法分析,生成抽象语法树;
将所述抽象语法树静态解析为opcode,得到所述待检测的PHP源文件对应的opcode序列。
进一步的,将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵包括:
将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的二维特征矩阵;
将所述二维特征矩阵的所有行排列成一行,得到所述待检测的PHP源文件对应的输入特征矩阵。
进一步的,基于PHP源文件样本训练获得所述Webshell检测模型的步骤包括:
对所述PHP源文件样本中的所述PHP源文件进行预处理,得到训练样本;
基于预处理后的所述PHP源文件样本对原始模型进行训练,获得所述Webshell检测模型。
进一步的,对所述PHP源文件样本中的所述PHP源文件进行预处理包括:
将所述PHP源文件经过编译处理,得到所述PHP源文件对应的opcode序列;
将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的输入特征矩阵。
进一步的,将所述PHP源文件经过编译处理,得到所述PHP源文件对应的opcode序列,包括:
通过词法分析将所述PHP源文件分割为PHP片段;
对所述PHP片段进行语法分析,生成抽象语法树;
将所述抽象语法树静态解析为opcode,得到所述PHP源文件对应的opcode序列。
进一步的,将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的输入特征矩阵包括:
将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的二维特征矩阵;
将所述二维特征矩阵的所有行排列成一行,得到所述PHP源文件对应的输入特征矩阵。
另一方面,本发明提供一种Webshell检测装置,包括:
获取模块,用于获取待检测的PHP源文件;
编译模块,用于将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列;
特征矩阵生成模块,用于将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵;
检测模块,用于将所述待检测的PHP源文件对应的特征矩阵输入Webshell检测模型,输出Webshell检测结果;
其中,所述Webshell检测模型是基于PHP源文件样本训练后获得的,所述PHP源文件样本包括PHP源文件和对应的标签。
再一方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的Webshell检测方法的步骤。
又一方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例所述基于卷积神经网络的Webshell检测方法的步骤。
本发明实施例提供的Webshell检测方法及装置,通过提取PHP源文件中的opcode并进行编译处理后,使用卷积神经网络模型对每个PHP源文件对应的opcode进行检测,从而判断对应的PHP源文件是否Webshell,即便是加密或者混淆的PHP源文件,都可以上述方法进行检测,提高了Webshell检测的泛化能力和准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明一实施例提供的Webshell检测方法的流程示意图。
图2是本发明一实施例提供的Webshell检测方法的流程示意图。
图3是本发明一实施例提供的Webshell检测方法的流程示意图。
图4是本发明一实施例提供的Webshell检测方法的流程示意图。
图5是本发明一实施例提供的Webshell检测方法的流程示意图。
图6是本发明一实施例提供的Webshell检测方法的流程示意图。
图7是本发明一实施例提供的Webshell检测方法的流程示意图。
图8是本发明一实施例提供的Webshell检测装置的结构示意图。
图9是本发明一实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1是本发明一实施例提供的Webshell检测方法的流程示意图,如图1所示,本发明实施例提供的Webshell检测方法,包括:
S101:获取待检测的PHP源文件;
该步骤中,获取待检测的PHP源文件,用于提取其中的opcode进行webshell检测。
具体的,webshell就是以asp、php、jsp或者cgi等形式存在的一种代码执行文件,主要用于网站管理、服务器管理、权限管理等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。由于其便利性和功能强大,被特别修改后的webshell也被部分人当作网站后门工具使用。
S102:将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列;
该步骤中,对所述待检测的PHP源文件进行编译处理,提取其中的opcode。
具体的,所述opcode是介于高级语言和机器语言之间的机器语言指令,在PHP语言环境下,opcode种类共200个。
通过词法分析将PHP源文件中的空格和注释删除,分割为PHP片段(token);
对PHP片段进行语法分析,生成所述PHP源文件对应的抽象语法树(AbstractSyntax Tree,AST),所述抽象语法树是是PHP源文件中语法结构的抽象表示,以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构;
将所述PHP源文件对应的抽象语法树进行静态解析,将语法树中每一个节点解析为对应的opcode,将从所述PHP源文件对应的抽象语法树解析出的opcode作为所述PHP源文件对应的opcode序列。
S103:将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵;
该步骤中,对S102中从抽象语法树中解析出的所述PHP源文件对应的opcode序列中opcode按照词频进行排序,将排序后的opcode序列转化为webshell检测模型的输入特征矩阵。
具体的,对S102中从抽象语法树中解析出的所述PHP源文件对应的opcode序列中opcode进行统计分析,统计每一种opcode的在所述PHP源文件对应的opcode序列中出现的频率,按照词频大小进行排序,其中对于未出现的opcode,其词频记为0,得到长度为200的opcode序列。
对所述按照词频大小进行排序后的opcode序列进行词向量转化,得到用于输入Webshell检测模型的输入特征矩阵。
S104:将所述待检测的PHP源文件对应的特征矩阵输入Webshell检测模型,输出Webshell检测结果;其中,所述Webshell检测模型是基于PHP源文件样本训练后获得的,所述PHP源文件样本包括PHP源文件和对应的标签。
该步骤中,将S103中的按照词频大小进行排序后的opcode序列对应的输入特征矩阵输入预先训练的Webshell检测模型,输出Webshell检测结果。
具体的,所述Webshell检测模型输出的Webshell检测结果包括:“PHP源文件为Webshell”和“PHP源文件不为Webshell”。
其中,所述Webshell检测模型是在原始模型的基础上,使用PHP源文件训练样本进行训练后得到的。所述PHP源文件训练样本包括PHP源文件和对应的标签,所述标签包括“PHP源文件为Webshell”和“PHP源文件不为Webshell”。
对所述PHP源文件训练样本中的PHP源文件进行标注可以通过提取PHP源文件中的Webshell特征值,对所述特征值进行判断,对于存在Webshell特征,如存在base64编码解码、eval或assert等字符特征的PHP源文件,将其标签标注为PHP源文件为Webshell;对于不存在Webshell特征的PHP源文件,将其标签标注为PHP源文件不为Webshell。
本发明实施例提供的Webshell检测方法,通过提取PHP源文件中的opcode并进行编译处理后,使用卷积神经网络模型对每个PHP源文件对应的opcode进行检测,从而判断对应的PHP源文件是否Webshell,即便是加密或者混淆的PHP源文件,都可以上述方法进行检测,提高了Webshell检测的泛化能力和准确性。
图2是本发明一实施例提供的Webshell检测方法的流程示意图,如图2所示,在上述各个实施例的基础上,进一步的,S102:将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列,包括:
S1021:通过词法分析将所述待检测的PHP源文件分割为PHP片段;
该步骤中,通过词法分析对所述待检测的PHP源文件进行分割。
具体的,通过词法分析将PHP源文件中的字符序列转换为单词序列(Token),即先将PHP源文件字符序列中的空格和注释删除,然后通过词法分析器(Lexical analyzer)或者扫描器(Scanner),将PHP源文件字符序列分割为单词序列的PHP片段(Token);
S1022:对所述PHP片段进行语法分析,生成抽象语法树;
该步骤中,对PHP片段进行语法分析,生成所述PHP源文件对应的抽象语法树(Abstract Syntax Tree,AST)。
具体的,抽象语法树是PHP源文件代码的抽象语法结构的树状表示。所述抽象语法树不会表现出真实语法中出现的每一个细节,例如,PHP源文件中的嵌套括号,是被隐藏在树形结构中,而并未以抽象语法树中的节点的形式出现。
在S1021中已经将PHP源文件分割为PHP片段(Token),即将PHP源文件代码的字符串分割为最小语法单元后,在PHP环境下对各个PHP片段之间的语法关系进行分析,从而建立所述PHP片段之间的联系。以各个PHP片段作为抽象语法树的节点,根据各个PHP片段之间的联系,构建所述PHP源文件对应的抽象语法树。
例如,可以通过Bison对所述PHP源代码的各个PHP片段之间的与关系进行分析,用于构建所述PHP源代码对应的抽象语法树。
对于语法分析器的可以根据实际需要进行设置,本发明实施例不做具体限定。
S1023:将所述抽象语法树静态解析为opcode,得到所述待检测的PHP源文件对应的opcode序列。
该步骤中,将所述PHP源文件对应的抽象语法树进行静态解析,提取其中的opcode。
具体的,对所述PHP源文件对应的抽象语法树进行静态解析,将所述抽象语法树中每一个节点解析为对应的opcode,将从所述PHP源文件对应的抽象语法树解析出的opcode作为所述PHP源文件对应的opcode序列。
所述opcode是介于高级语言和机器语言之间的机器语言指令,在PHP语言环境下,opcode种类共200个,所述PHP源文件对应的opcode序列是根据opcode的种类进行排列分组的,因而opcode序列的长度为200。
图3是本发明一实施例提供的Webshell检测方法的流程示意图,如图3所示,在上述各个实施例的基础上,进一步的,S103:将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵;包括:
S1031:将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的二维特征矩阵;
该步骤中,将opcode序列中的opcode按照词频进行排列后进行词向量转化,得到所述opcode序列对应的二维特征矩阵。
具体的,对S1203中从所述抽象语法树中解析出的opcode组成的所述PHP源文件对应的opcode序列中的opcode进行词频统计。
在PHP环境下的opcode的种类一共有200种,对所述PHP源文件对应的opcode序列中的opcode按照所述种类进行统计,根据每一类opcode在所述PHP源文件对应的opcode序列中出现的频率,从大到小按词频进行排列。
其中,如果某一类opcode并未出现,则其词频为0,置于opcode序列最后的位置。因此对任意的PHP源文件对应的opcode序列,按照本实施例中的方法进行排序,均可得到长度为200的opcode序列。
对所述按照词频大小进行排序后的opcode序列进行词向量转化,得到所述opcode序列对应的二维特征矩阵。
在上述各个实施例的基础上,进一步的,采用分布式编码对所述按照词频大小进行排序后的opcode序列进行词向量转化。
例如,进行词向量转化时,可以使用Word2Vec的连续词袋(Continuous Bag-of-Words,CBOW)模型,所述连续词袋模型包包含三层:输入层、映射层和输出层,将每个opcode的独立编码向量作为输入,映射层不使用激活函数,并且为了保持输出层与输入层维度一致,回归函数采用Softmax函数,最终将映射层的200×V的二维权重矩阵作为输出,从而实现opcode序列的向量化操作。其中200为opcode的种类,V表示每个opcode的词向量维度。
采用分布式编码对所述按照词频大小进行排序后的opcode序列进行词向量转化时使用的转化模型可以根据实际需要进行选择,本发明实施例不做具体限定。
S1032:将所述二维特征矩阵的所有行排列成一行,得到所述待检测的PHP源文件对应的输入特征矩阵。
该步骤中,将S1031中得到的所述opcode序列对应的二维特征矩阵转化为一维矩阵,作为输入Webshell检测模型的输入特征矩阵。
具体的,将所述opcode序列对应的二维特征矩阵中的所有行依次排成一行,从而将所述二维特征矩阵转化为一维的矩阵,作为Webshell检测模型的输入特征矩阵。
仍以连续词袋模型输出的200×V的二维权重矩阵为例,将200×V的二维权重矩阵的所有行依次排列成一行,构造成一维矩阵,作为输入特征矩阵。
图4是本发明一实施例提供的Webshell检测方法的流程示意图,如图4所示,在上述各个实施例的基础上,进一步的,基于PHP源文件样本训练获得所述Webshell检测模型的步骤包括:
S401:对所述PHP源文件样本中的所述PHP源文件进行预处理,得到训练样本;
该步骤中,将PHP源文件样本中的PHP源文件进行编译处理,得到对应的opcode序列,将所述opcode序列进行词向量转化,得到所述PHP源文件样本中的PHP源文件对应的输入特征矩阵。
图5是本发明一实施例提供的Webshell检测方法的流程示意图,如图5所示,在上述各个实施例的基础上,进一步的,S401中对所述PHP源文件样本中的所述PHP源文件进行预处理,包括以下步骤:
S4011:将所述PHP源文件经过编译处理,得到所述PHP源文件对应的opcode序列;
该步骤中,对所述PHP源文件进行编译处理,提取其中的opcode。
具体的,所述opcode是介于高级语言和机器语言之间的机器语言指令,在PHP语言环境下,opcode种类共200个。
通过词法分析将PHP源文件中的空格和注释删除,分割为PHP片段(token);
对PHP片段进行语法分析,生成所述PHP源文件对应的抽象语法树(AbstractSyntax Tree,AST),所述抽象语法树是是PHP源文件中语法结构的抽象表示,以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构;
将所述PHP源文件对应的抽象语法树进行静态解析,将语法树中每一个节点解析我对应的opcode,将从所述PHP源文件对应的抽象语法树解析出的opcode作为所述PHP源文件对应的opcode序列。
S4012:将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的输入特征矩阵。
该步骤中,对S4011中从抽象语法树中解析出的所述PHP源文件对应的opcode序列中opcode按照词频进行排序,将排序后的opcode序列转化为训练原始模型时的输入特征矩阵。
具体的,对S4011中从抽象语法树中解析出的所述PHP源文件对应的opcode序列中opcode进行统计分析,统计每一种opcode的在所述PHP源文件对应的opcode序列中出现的频率,按照词频大小进行排序,其中对于未出现的opcode,其词频记为0,得到长度为200的opcode序列。
对所述按照词频大小进行排序后的opcode序列进行词向量转化,得到用于输入原始模型的输入特征矩阵。
图6是本发明一实施例提供的Webshell检测方法的流程示意图,如图6所示,在上述各个实施例的基础上,进一步的,S4011:将所述PHP源文件经过编译处理,得到所述PHP源文件对应的opcode序列,包括以下步骤:
S4011A:通过词法分析将所述PHP源文件分割为PHP片段;
该步骤中,通过词法分析对所述PHP源文件样本中的PHP源文件进行分割。
具体的,通过词法分析将所述PHP源文件中的字符序列转换为单词序列(Token),即先将实时PHP源文件字符序列中的空格和注释删除,然后通过词法分析器(Lexicalanalyzer)或者扫描器(Scanner),将所述PHP源文件字符序列分割为单词序列的PHP片段(Token);
S4011B:对所述PHP片段进行语法分析,生成抽象语法树;
该步骤中,对PHP片段进行语法分析,生成所述PHP源文件样本中的PHP源文件对应的抽象语法树(Abstract Syntax Tree,AST)。
具体的,抽象语法树是PHP源文件代码的抽象语法结构的树状表示。所述抽象语法树不会表现出真是语法中出现的每一个细节,例如,PHP源文件中的嵌套括号,是被隐藏在树形结构中,而并未以抽象语法树中的节点的形式出现。
在S1021中已经将所述PHP源文件分割为PHP片段(Token),即将PHP源文件代码的字符串分割为最小语法单元后,在PHP环境下对各个PHP片段之间的语法关系进行分析,从而建立所述PHP片段之间的联系。以各个PHP片段作为抽象语法树的节点,根据各个PHP片段之间的联系,构建所述PHP源文件对应的抽象语法树。
例如,可以通过Bison对所述PHP源代码的各个PHP片段之间的与关系进行分析,用于构建所述PHP源代码对应的抽象语法树。
对于语法分析器的可以根据实际需要进行设置,本发明实施例不做具体限定。
S4011C:将所述抽象语法树静态解析为opcode,得到所述PHP源文件对应的opcode序列。
该步骤中,将所述PHP源文件对应的抽象语法树进行静态解析,提取其中的opcode。
具体的,对所述PHP源文件对应的抽象语法树进行静态解析,将所述抽象语法树中每一个节点解析为对应的opcode,将从所述PHP源文件对应的抽象语法树解析出的opcode作为所述PHP源文件对应的opcode序列。
所述opcode是介于高级语言和机器语言之间的机器语言指令,在PHP语言环境下,opcode种类共200个,所述PHP源文件对应的opcode序列是根据opcode的种类进行排列分组的,因而opcode序列的长度为200。
图7是本发明一实施例提供的Webshell检测方法的流程示意图,如图7所示,在上述各个实施例的基础上,进一步的,S4012:将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的输入特征矩阵,包括以下步骤:
S4012A:将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的二维特征矩阵;
该步骤中,将opcode序列中的opcode按照词频进行排列后进行词向量转化,得到所述opcode序列对应的二维特征矩阵。
具体的,对从所述抽象语法树中解析出的opcode组成的所述PHP源文件对应的opcode序列中的opcode进行词频统计。
在PHP环境下的opcode的种类一共有200种,对所述PHP源文件对应的opcode序列中的opcode按照所述种类进行统计,根据每一类opcode在所述PHP源文件对应的opcode序列中出现的频率,从大到小按词频进行排列。
其中,如果某一类opcode并未出现,则其词频为0,置于opcode序列最后的位置。因此对任意的PHP源文件对应的opcode序列,按照本实施例中的方法进行排序,均可得到长度为200的opcode序列。
对所述按照词频大小进行排序后的opcode序列进行词向量转化,得到所述opcode序列对应的二维特征矩阵。
在上述各个实施例的基础上,进一步的,采用分布式编码对所述按照词频大小进行排序后的opcode序列进行词向量转化。
例如,进行词向量转化时,可以使用Word2Vec的连续词袋(Continuous Bag-of-Words,CBOW)模型,所述连续词袋模型包包含三层:输入层、映射层和输出层,将每个opcode的独立编码向量作为输入,映射层不使用激活函数,并且为了保持输出层与输入层维度一致,回归函数采用Softmax函数,最终将映射层的200×V的二维权重矩阵作为输出,从而实现opcode序列的向量化操作。其中200为opcode的种类,V表示每个opcode的词向量维度。
采用分布式编码对所述按照词频大小进行排序后的opcode序列进行词向量转化时使用的转化模型可以根据实际需要进行选择,本发明实施例不做具体限定。
S4012B:将所述二维特征矩阵的所有行排列成一行,得到所述PHP源文件对应的输入特征矩阵。
该步骤中,将所述opcode序列对应的二维特征矩阵转化为一维矩阵,作为输入原始模型的输入特征矩阵。
具体的,将所述opcode序列对应的二维特征矩阵中的所有行依次排成一行,从而将所述二维特征矩阵转化为一维的矩阵,作为原始模型的输入特征矩阵。
仍以连续词袋模型输出的200×V的二维权重矩阵为例,将200×V的二维权重矩阵的所有行依次排列成一行,构造成一维矩阵,作为输入特征矩阵。
继续参见图4,S402:基于预处理后的所述PHP源文件样本对原始模型进行训练,获得所述Webshell检测模型。
该步骤中,将预处理后的所述PHP源文件样本中的PHP源文件对应的输入特征矩阵作为原始模型的输入,将对所述PHP源文件的Webshell检测结果作为原始模型的输出,对原始模型进行训练。
具体的,所述原始模型可以使用卷积神经网络模型,在构建原始模型时,所述卷积神经网络模型可以在卷积层选取三层卷积,三层卷积层的卷积核个数设置为128,卷积层长度一次递增,分别设置为3、4、5,因此卷积核使用ReLu函数作为激活函数。为了防止在卷积层出现过拟合,采用L2函数进行正则化处理。
池化操作采用最常用的最大值池化的方式,从而保留了PHP源文件的最强的特征,丢弃了弱特征,能够确保特征的相对位置,并且能够有效减少了模型的参数,具有助于缓解模型过度拟合的效果。
为阻止过拟合,在全连接层添加Dropout,激活函数选取Softmax函数,优化器选取adam。
将所述PHP源文件样本中的PHP源文件对应的输入特征矩阵,输入构建好的神经网络模型进行训练,从而得到Webshell检测模型。
所述Webshell检测模型的原始模型也可以根据实际需要进行选择,本发明实施例不做具体限定。
图8是本发明一实施例提供的Webshell检测装置的结构示意图,如图8所示,本发明实施例提供的Webshell检测装置包括获取模块801,用于获取待检测的PHP源文件;编译模块802,用于将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列;特征矩阵生成模块803,用于将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵;检测模块804,用于将所述待检测的PHP源文件对应的特征矩阵输入Webshell检测模型,输出Webshell检测结果,所述Webshell检测模型是基于PHP源文件样本训练后获得的,所述PHP源文件样本包括PHP源文件和对应的标签;其中:
获取模块801,用于获取待检测的PHP源文件,用于提取其中的opcode进行webshell检测。
编译模块802,用于对所述待检测的PHP源文件进行编译处理,提取其中的opcode。
特征矩阵生成模块803,用于对S102中从抽象语法树中解析出的所述PHP源文件对应的opcode序列中opcode按照词频进行排序,将排序后的opcode序列转化为webshell检测模型的输入特征矩阵。
检测模块804,用于将按照词频大小进行排序后的opcode序列对应的输入特征矩阵输入预先训练的Webshell检测模型,输出Webshell检测结果。
在上述各个实施例的基础上,进一步的,所述编译模块802包括词法分析单元8,用于通过词法分析将所述待检测的PHP源文件分割为PHP片段;语法分析单元,用于对所述PHP片段进行语法分析,生成抽象语法树;第一生成单元,用于将所述抽象语法树静态解析为opcode,得到所述待检测的PHP源文件对应的opcode序列,其中:
词法分析单元,用于通过词法分析对所述待检测的PHP源文件进行分割。
语法分析单元,用于对PHP片段进行语法分析,生成所述PHP源文件对应的抽象语法树(Abstract Syntax Tree,AST)
第一生成单元,用于将所述PHP源文件对应的抽象语法树进行静态解析,提取其中的opcode。
在上述各个实施例的基础上,进一步的,所述特征矩阵生成模块803包括转化单元,用于将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的二维特征矩阵;第二生成单元,用于将所述二维特征矩阵的所有行排列成一行,得到所述待检测的PHP源文件对应的输入特征矩阵,其中:
转化单元,用于将opcode序列中的opcode按照词频进行排列后进行词向量转化,得到所述opcode序列对应的二维特征矩阵。
第二生成单元,用于就所述opcode序列对应的二维特征矩阵转化为一维矩阵,作为输入Webshell检测模型的输入特征矩阵。
在上述各个实施例的基础上,进一步的,本发明实施例提供的Webshell检测装置还包括模型训练模块,用于基于PHP源文件样本训练获得所述Webshell检测模型。
所述模型训练模块包括预处理子模块,用于对所述PHP源文件样本中的所述PHP源文件进行预处理,得到训练样本;模型训练子模块,用于基于预处理后的所述PHP源文件样本对原始模型进行训练,获得所述Webshell检测模型;其中:
预处理子模块,用于将PHP源文件样本中的PHP源文件进行编译处理,得到对应的opcode序列,将所述opcode序列进行词向量转化,得到所述PHP源文件样本中的PHP源文件对应的输入特征矩阵。
模型训练子模块,用于将预处理后的所述PHP源文件样本中的PHP源文件对应的输入特征矩阵作为原始模型的输入,将对所述PHP源文件的Webshell检测结果作为原始模型的输出,对原始模型进行训练
在上述各个实施例的基础上,进一步的,所述预处理子模块包括:编译单元,用于将所述PHP源文件经过编译处理,得到所述PHP源文件对应的opcode序列;特征矩阵生成单元,用于将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的输入特征矩阵;其中:
编译单元,用于对所述PHP源文件进行编译处理,提取其中的opcode
特征矩阵生成单元,用于,从抽象语法树中解析出的所述PHP源文件对应的opcode序列中opcode按照词频进行排序,将排序后的opcode序列转化为训练原始模型时的输入特征矩阵。
在上述各个实施例的基础上,进一步的,所述编译单元包括:词法分析子单元,用于通过词法分析将所述PHP源文件分割为PHP片段;语法分析子单元,用于对所述PHP片段进行语法分析,生成抽象语法树;生成子单元,用于将所述抽象语法树静态解析为opcode,得到所述PHP源文件对应的opcode序列。其中:
词法分析子单元,用于通过词法分析对所述PHP源文件样本中的PHP源文件进行分割。
语法分析子单元,用于对PHP片段进行语法分析,生成所述PHP源文件样本中的PHP源文件对应的抽象语法树(Abstract Syntax Tree,AST)。
第一生成子单元,用于将所述PHP源文件对应的抽象语法树进行静态解析,提取其中的opcode。
在上述各个实施例的基础上,进一步的,所述特征矩阵生成单元包括:转化子单元,用于将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的二维特征矩阵;第二生成子单元,用于将所述二维特征矩阵的所有行排列成一行,得到所述PHP源文件对应的输入特征矩阵;其中:
转化子单元,用于将opcode序列中的opcode按照词频进行排列后进行词向量转化,得到所述opcode序列对应的二维特征矩阵。
第二生成子单元,用于将所述opcode序列对应的二维特征矩阵转化为一维矩阵,作为输入原始模型的输入特征矩阵。
需要说明的是,本发明实施例提供的Webshell检测方法即装置可用于金融领域,也可用于除金融领域之外的任意技术领域,本发明实施例对Webshell检测方法及装置的应用领域不做限定。
图9为本发明一实施例提供的电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)901、通信接口(Communications Interface)902、存储器(memory)903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信。处理器901可以调用存储器903中的逻辑指令,以执行如下方法:获取待检测的PHP源文件;将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列;将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵;将所述待检测的PHP源文件对应的输入特征矩阵输入Webshell检测模型,输出Webshell检测结果;其中,所述Webshell检测模型是基于PHP源文件样本训练后获得的,所述PHP源文件样本包括PHP源文件和对应的标签。
此外,上述的存储器903中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取待检测的PHP源文件;将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列;将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵;将所述待检测的PHP源文件对应的输入特征矩阵输入Webshell检测模型,输出Webshell检测结果;其中,所述Webshell检测模型是基于PHP源文件样本训练后获得的,所述PHP源文件样本包括PHP源文件和对应的标签。
本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取待检测的PHP源文件;将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列;将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵;将所述待检测的PHP源文件对应的输入特征矩阵输入Webshell检测模型,输出Webshell检测结果;其中,所述Webshell检测模型是基于PHP源文件样本训练后获得的,所述PHP源文件样本包括PHP源文件和对应的标签。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种Webshell检测方法,其特征在于,所述方法包括:
获取待检测的PHP源文件;
将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列;
将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵;
将所述待检测的PHP源文件对应的输入特征矩阵输入Webshell检测模型,输出Webshell检测结果;
其中,所述Webshell检测模型是基于PHP源文件样本训练后获得的,所述PHP源文件样本包括PHP源文件和对应的标签。
2.根据权利要求1所述的Webshell检测方法,其特征在于,将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列,包括:
通过词法分析将所述待检测的PHP源文件分割为PHP片段;
对所述PHP片段进行语法分析,生成抽象语法树;
将所述抽象语法树静态解析为opcode,得到所述待检测的PHP源文件对应的opcode序列。
3.根据权利要求1所述的Webshell检测方法,其特征在于,将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵包括:
将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的二维特征矩阵;
将所述二维特征矩阵的所有行排列成一行,得到所述待检测的PHP源文件对应的输入特征矩阵。
4.根据权利要求1所述的Webshell检测方法,其特征在于,基于PHP源文件样本训练获得所述Webshell检测模型的步骤包括:
对所述PHP源文件样本中的所述PHP源文件进行预处理,得到训练样本;
基于预处理后的所述PHP源文件样本对原始模型进行训练,获得所述Webshell检测模型。
5.根据权利要求4所述的Webshell检测方法,其特征在于,对所述PHP源文件样本中的所述PHP源文件进行预处理包括:
将所述PHP源文件经过编译处理,得到所述PHP源文件对应的opcode序列;
将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的输入特征矩阵。
6.根据权利要求5所述的Webshell检测方法,其特征在于,将所述PHP源文件经过编译处理,得到所述PHP源文件对应的opcode序列,包括:
通过词法分析将所述PHP源文件分割为PHP片段;
对所述PHP片段进行语法分析,生成抽象语法树;
将所述抽象语法树静态解析为opcode,得到所述PHP源文件对应的opcode序列。
7.根据权利要求5所述的Webshell检测方法,其特征在于,将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的输入特征矩阵包括:
将所述PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述PHP源文件对应的二维特征矩阵;
将所述二维特征矩阵的所有行排列成一行,得到所述PHP源文件对应的输入特征矩阵。
8.一种Webshell检测装置,其特征在于,包括:
获取模块,用于获取待检测的PHP源文件;
编译模块,用于将所述待检测的PHP源文件经过编译处理,得到所述待检测的PHP源文件对应的opcode序列;
特征矩阵生成模块,用于将所述待检测的PHP源文件对应的opcode序列中的opcode按照词频进行排序后,进行词向量转化,得到所述待检测的PHP源文件对应的输入特征矩阵;
检测模块,用于将所述待检测的PHP源文件对应的特征矩阵输入Webshell检测模型,输出Webshell检测结果;
其中,所述Webshell检测模型是基于PHP源文件样本训练后获得的,所述PHP源文件样本包括PHP源文件和对应的标签。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210435197.6A CN114662109A (zh) | 2022-04-24 | 2022-04-24 | 一种Webshell检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210435197.6A CN114662109A (zh) | 2022-04-24 | 2022-04-24 | 一种Webshell检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114662109A true CN114662109A (zh) | 2022-06-24 |
Family
ID=82038016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210435197.6A Pending CN114662109A (zh) | 2022-04-24 | 2022-04-24 | 一种Webshell检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114662109A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113761534A (zh) * | 2021-09-08 | 2021-12-07 | 广东电网有限责任公司江门供电局 | Webshell文件检测方法及系统 |
-
2022
- 2022-04-24 CN CN202210435197.6A patent/CN114662109A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113761534A (zh) * | 2021-09-08 | 2021-12-07 | 广东电网有限责任公司江门供电局 | Webshell文件检测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210194900A1 (en) | Automatic Inline Detection based on Static Data | |
CN107516041B (zh) | 基于深度神经网络的WebShell检测方法及其系统 | |
CN114730339A (zh) | 检测计算机系统中未知的恶意内容 | |
CN106599686A (zh) | 一种基于tlsh特征表示的恶意软件聚类方法 | |
CN112749284B (zh) | 知识图谱构建方法、装置、设备及存储介质 | |
CN109391706A (zh) | 基于深度学习的域名检测方法、装置、设备和存储介质 | |
CN111758098B (zh) | 利用遗传编程的命名实体识别和提取 | |
CN106997367A (zh) | 程序文件的分类方法、分类装置和分类系统 | |
CN107257390A (zh) | 一种url地址的解析方法和系统 | |
CN113596007A (zh) | 一种基于深度学习的漏洞攻击检测方法和设备 | |
CN112052451A (zh) | 一种webshell检测方法和装置 | |
CN109067708B (zh) | 一种网页后门的检测方法、装置、设备及存储介质 | |
Mimura et al. | Towards efficient detection of malicious VBA macros with LSI | |
Khan et al. | Malware classification framework using convolutional neural network | |
Karbab et al. | Petadroid: Adaptive android malware detection using deep learning | |
CN114662109A (zh) | 一种Webshell检测方法及装置 | |
CN111460452A (zh) | 一种基于频率指纹提取的安卓恶意软件检测方法 | |
WO2016093839A1 (en) | Structuring of semi-structured log messages | |
CN116149669B (zh) | 一种基于二进制文件的软件成分分析方法、装置以及介质 | |
CN113971283A (zh) | 一种基于特征的恶意应用程序检测方法及设备 | |
CN112115266A (zh) | 恶意网址的分类方法、装置、计算机设备和可读存储介质 | |
CN113918936A (zh) | Sql注入攻击检测的方法以及装置 | |
US20230353595A1 (en) | Content-based deep learning for inline phishing detection | |
RuiJin et al. | Instance attack: an explanation-based vulnerability analysis framework against dnns for malware detection | |
CN114169540A (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 |