CN111614599B - 基于人工智能的webshell检测方法和装置 - Google Patents
基于人工智能的webshell检测方法和装置 Download PDFInfo
- Publication number
- CN111614599B CN111614599B CN201910138269.9A CN201910138269A CN111614599B CN 111614599 B CN111614599 B CN 111614599B CN 201910138269 A CN201910138269 A CN 201910138269A CN 111614599 B CN111614599 B CN 111614599B
- Authority
- CN
- China
- Prior art keywords
- webshell
- feature vector
- learning
- detection
- file
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- 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)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于人工智能的webshell检测方法和装置。所述方法包括:步骤A,获取webshell后门文件的样本数据;步骤B,对webshell后门文件样本进行特征提取,生成监督学习的特征向量,所述监督学习的特征向量包括文本特征、字节码特征和异常行为特征中的至少一种;步骤C,根据所述监督学习的特性向量,分别建立每种特征向量的学习模型;步骤D,利用所述学习模型对网络流量进行检测。
Description
技术领域
本申请涉及计算机领域和人工智能领域,尤指一种基于人工智能的webshell检测方法和装置。
背景技术
webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限,比如执行系统命令、删除web页面、修改主页、文件访问等。webshell攻击分成两个步骤:1.攻击者利用Web服务器漏洞向其植入动态webshell脚本(也被称为后门或木马)。这些脚本与网站服务器WEB目录下正常的网页文件混在一起;2.攻击者使用浏览器来web访问上传到webshell脚本,得到一个命令执行环境,以达到控制网站服务器的目的。
在相关技术中,webshell检测是通过规则的方法进行检测,通过匹配特征码、危险函数来查找webshell,优点是对已知的webshell查找准确率高且部署方便,但对于攻击者采用变形、混淆等逃逸手段修改后的webshell变种容易被绕过,无法检测攻击者自行编写的新型、未知webshell。
随着机器学习和深度学习在安全领域的广泛使用,陆续出现了使用机器学习或深度学习检测webshell的方法,包括基于webshell文件样本的检测和基于web恶意流量的检测。优点是能检测未知webshell攻击,但各有适用的场景,因为webshell按照程序的功能与大小,可分为3类:一句话木马、小马和大马,机器学习方法需要自己选择合适的特征,特征选择的优劣确定方法检测的效果,深度学习能够从原始数据中自动学习出分类特征,但需要较大规模且丰富内容的样本集。也有研究将机器学习与深度学习一起使用,但如何针对webshell的不同应用场景进行结合仍是难点。
鉴于此,现有技术有待改进和提高。
发明内容
为了解决上述技术问题,本申请提供了一种基于人工智能的webshell检测方法和装置,能够提高对webshell检测的效率。
为了达到本申请目的,本申请提供了一种基于人工智能的webshell检测方法,包括:
步骤A,获取webshell后门文件的样本数据;
步骤B,对webshell后门文件样本进行特征提取,生成监督学习的特征向量,所述监督学习的特征向量包括文本特征、字节码特征和异常行为特征中的至少一种;
步骤C,根据所述监督学习的特性向量,分别建立每种特征向量的学习模型;
步骤D,利用所述学习模型对网络流量进行检测。
在一个示例性实施例中,所述步骤A中webshell后门文件的样本数据包括恶意代码文件和/或恶意会话流量。
在一个示例性实施例中,所述步骤B中文本特征的特征向量是通过如下方式得到的,包括:
获取所述恶意代码文件的文本中包括的单词信息;
从获取的单词信息中选择符合预设的类别区分能力的目标单词,作为静态分类特征;
利用所述目标单词,生成文本特征的特征向量,作为静态特征向量。
在一个示例性实施例中,所述获取所述恶意代码文件的文本中包括的单词信息之前,所述方法还包括:
采用如下至少一个处理策略对所述恶意代码文件中的字符的信息进行处理,包括:
过滤文本中预设的特殊字符串、变量和代码的注释中的至少一个;
保留预设的关键全局变量;
对文本的字符信息进行分词;
去除文本中的预设的停用词。
在一个示例性实施例中,所述步骤B中字节码特征的特征向量是通过如下方式得到的,包括:
获取所述恶意代码文件的动态字节码;
统计所述动态字节码在所述恶意代码文件中的词频和文档频;
根据所述动态字节码中的词频和文档频,选择符合预设的区分能力的字节码为目标字节码,作为动态分类特征;
利用所述目标字节码,生成字节码特征的特征向量,作为动态特征向量。
在一个示例性实施例中,所述步骤B中异常行为的特征向量包括如下至少一个:
异常操作行为的特征信息;
单个会话的混淆代码特征;
单个会话的协议字段特征;
至少两个会话的预设的统计特征。
在一个示例性实施例中,所述步骤C包括:
为每种特征向量建立至少两种学习模型,所述学习模型包括机器学习的集成学习模型、深度学习的卷积神经网络和循环神经网络模型中的至少两个。
在一个示例性实施例中,所述步骤D包括:
方式1:在每种特征向量有至少两个学习模型时,获取至少两个学习模型的输出结果对应的平均值,然后与预先设置的该种特征向量的分类阈值做比较,得到比较结果,将比较结果作为该种特征向量的学习模型的判断结果;
方式2:在每种特征向量有至少三个学习模型时,获取每种学习模型的输出结果,计算内容相同的输出结果的总量,将总量最多的输出结果作为该种特征向量的学习模型的判断结果;
方式3:在每种特征向量有2N+1个学习模型时,从所述2N+1个学习模型中选择2N个学习模型先做判定,若所述2N个学习模型判断结果为webshell,则流程结束;否则,利用最后一个学习模型做判定,将最后一个学习模型的判定结果作为该种特征向量的学习模型的判断结果,其中N为正整数。
在一个示例性实施例中,所述步骤D包括:
在采用至少两种特征向量对应的学习模型进行网络流量检测时,获取至少两种特征向量对应的学习模型的输出结果对应的平均值,然后与预先设置的判断阈值做比较,得到比较结果,将比较结果作为网络检测的判断结果;
在采用至少三种特征向量对应的学习模型进行网络流量检测时,获取每种特征向量对应的学习模型的输出结果,计算内容相同的输出结果的总量,将总量最多的输出结果作为网络检测的判断结果。
一种基于人工智能的webshell检测装置,包括处理器和存储器,其中所述存储器存储计算机程序,所述处理器用于调用所述处理器中的计算机程序以实现上文任一所述的方法。
本申请提供的实施例,获取webshell后门文件的样本数据,对webshell后门文件样本进行特征提取,生成监督学习的特征向量,所述监督学习的特征向量包括文本特征、字节码特征和异常行为特征中的至少一种,并根据所述监督学习的特性向量,分别建立每种特征向量的学习模型,再利用所述学习模型对网络流量进行检测,实现通过多种类型的特征向量进行webshell检测的目的,并借助学习模型进行网络检测,提高检测效率。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请提供的基于人工智能的webshell检测方法的流程图;
图2为本申请实施例提供的基于机器学习和深度学习的webshell检测方法的流程图;
图3为本申请实施例提供的静态检测训练流程图;
图4为本申请实施例提供的动态检测训练流程图;
图5为本申请实施例提供的异常行为检测模型训练流程图;
图6为本申请实施例提供的对实时HTTP流量进行webshell检测的流程图;
图7为本申请实施例提供的基于机器学习和深度学习的webshell检测装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1为本申请提供的基于人工智能的webshell检测方法的流程图。图1所示方法包括:
步骤A,获取webshell后门文件的样本数据;
所述步骤A中webshell后门文件的样本数据包括恶意代码文件和/或恶意会话流量。
在一个示例性实施例中,A1,恶意代码样本获取,从恶意代码数据库中获取大量的webshell类型的后门文件,过滤不符合条件的样本;A2:利用常见的webshell生成工具生成webshell后门文件,并分别搭建控制端和受控端,在控制端将webshell后门文件上传到受控端,并通过web访问受控端的后门文件,获取受控端命令执行环境,并执行Shell;以上过程产生的会话流量被捕获为webshell恶意会话流量。
步骤B,对webshell后门文件样本进行特征提取,生成监督学习的特征向量,所述监督学习的特征向量包括文本特征、字节码特征和异常行为特征中的至少一种;
在一个示例性实施例中,所述步骤B中文本特征的特征向量是通过如下方式得到的,包括:
获取所述恶意代码文件的文本中包括的单词信息;
从获取的单词信息中选择符合预设的类别区分能力的目标单词,作为静态分类特征;
利用所述目标单词,生成文本特征的特征向量,作为静态特征向量。
在本示例性实施例中,对每个后门文件进行数据预处理,选择词袋模型、词集模型或N-Gram模型提取文本特征,得到文档中所有的单词;利用特征选择方法选择特征,保留文档中具有较好类别区分能力的词作为分类特征,生成用于监督学习的特征向量。
在一个示例性实施例中,所述获取所述恶意代码文件的文本中包括的单词信息之前,所述方法还包括:
采用如下至少一个处理策略对所述恶意代码文件中的字符的信息进行处理,包括:
过滤文本中预设的特殊字符串、变量和代码的注释中的至少一个;
保留预设的关键全局变量;
对文本的字符信息进行分词;
去除文本中的预设的停用词。
通过上述数据预处理操作,可以有效减少无效数据的数量,提高数据处理效率。
在一个示例性实施例中,所述步骤B中字节码特征的特征向量是通过如下方式得到的,包括:
获取所述恶意代码文件的动态字节码;
统计所述动态字节码在所述恶意代码文件中的词频和文档频;
根据所述动态字节码中的词频和文档频,选择符合预设的区分能力的字节码为目标字节码,作为动态分类特征;
利用所述目标字节码,生成字节码特征的特征向量,作为动态特征向量。
在本示例性实施例中,对webshell后门文件,提取文件中的字节码,得到文件的动态特征;利用特征选择方法,保留文档中具有较好类别区分能力的字节码作为分类特征,生成用于监督学习的特征向量。
在一个示例性实施例中,所述步骤B中异常行为的特征向量包括如下至少一个:
异常操作行为的特征信息;
单个会话的混淆代码特征;
单个会话的协议字段特征;
至少两个会话的预设的统计特征。
在本示例性实施例中,特征向量的提取可以通过如下方式实现:提取恶意会话中的动态脚本,利用动态沙箱技术,获取异常的操作行为作为特征;对单个会话上HTTP的流量进行分析,提取协议字段特征;对多个会话上HTTP的流量进行分析,提取异常行为的统计特征。
步骤C,根据所述监督学习的特性向量,分别建立每种特征向量的学习模型;
在一个示例性实施例中,为每种特征向量建立至少两种学习模型,所述学习模型包括机器学习的集成学习模型、深度学习的卷积神经网络和循环神经网络模型中的至少两个。
在一个示例性实施例中,集成学习是生成多个学习器,再采用某种集成策略进行组合,最后综合判断输出最终结果,从而获得比单个学习器更好的学习效果的监督学习方法。集成策略可选择bagging、boosting或stacking方法。深度学习采用卷积神经网络和循环神经网络构建学习模型,并设置网络结构参数和训练权重;训练集成学习模型和深度学习模型,经过多轮次的迭代,输出并保存最优的分类模型。
步骤D,利用所述学习模型对网络流量进行检测。
在每种特征向量有至少两个学习模型时,每种特征向量的判断结果是通过如下方式得到的:
方式1:在每种特征向量有至少两个学习模型时,获取至少两个学习模型的输出结果对应的平均值,然后与预先设置的该种特征向量的分类阈值做比较,得到比较结果,将比较结果作为该种特征向量的学习模型的判断结果;
方式2:在每种特征向量有至少三个学习模型时,获取每种学习模型的输出结果,计算内容相同的输出结果的总量,将总量最多的输出结果作为该种特征向量的学习模型的判断结果;
方式3:在每种特征向量有2N+1个学习模型时,从所述2N+1个学习模型中选择2N个学习模型先做判定,若所述2N个学习模型判断结果为webshell,则流程结束;否则,利用最后一个学习模型做判定,将最后一个学习模型的判定结果作为该种特征向量的学习模型的判断结果,其中N为正整数。
在本示例性实施例中,静态检测、动态检测和异常行为这三种检测方法都包含各自的机器学习的集成学习模型和深度学习模型,同一检测方法不同模型的综合评判方法可以采用上文所述的平均法、投票法或复合金字塔方法来实现。
在进行网络流量检测时,可以采用至少两种特征向量对应的学习模型进行检测,网络流量的检测结果是通过如下方式得到的:
在采用至少两种特征向量对应的学习模型进行网络流量检测时,获取至少两种特征向量对应的学习模型的输出结果对应的平均值,然后与预先设置的判断阈值做比较,得到比较结果,将比较结果作为网络检测的判断结果;
在采用至少三种特征向量对应的学习模型进行网络流量检测时,获取每种特征向量对应的学习模型的输出结果,计算内容相同的输出结果的总量,将总量最多的输出结果作为网络检测的判断结果。
本示例性实施例中,静态检测、动态检测和异常行为这三种检测方法的综合判定结果可以采用上文所述的平均法或投票法来实现。
本申请提供的方法实施例,获取webshell后门文件的样本数据,对webshell后门文件样本进行特征提取,生成监督学习的特征向量,所述监督学习的特征向量包括文本特征、字节码特征和异常行为特征中的至少一种,并根据所述监督学习的特性向量,分别建立每种特征向量的学习模型,再利用所述学习模型对网络流量进行检测,实现通过多种类型的特征向量进行webshell检测的目的,并借助学习模型进行网络检测,提高检测效率。
下面对本申请提供的方法作进一步说明:
图2为本申请实施例提供的基于机器学习和深度学习的webshell检测方法的流程示意图。如图2所示,根据本申请实施例的基于机器学习和深度学习的webshell检测方法包括如下处理:
S101:从恶意代码样本库和webshell生成工具中获取webshell后门文件样本。
在一个示例性实施例中,步骤S101具体包括如下步骤:
步骤S1011:从恶意代码样本库中获取webshell后门文件样本。
从恶意代码数据库中获取大量的指定类型恶意代码样本,过滤不符合条件的样本。
指定类型是指文件类型后缀,包括如下至少一个:
".asp",".aspx",".php",".jsp",".py",".cgi",".pl",".java",".sh",".ashx",".war",".cfm",".phtml",".xml",".js",".sct"等类型的文件,这些都是web动态脚本文件,被攻击者作为webshell后门文件。
过滤不符合条件的样本,包括如下至少一个:
不完整的样本、误报样本、超大文件样本。
其中,webshell后门文件至少存在加密函数、混淆函数或系统调用函数中至少一个。例如:
"preg_replace","create_function","passthru","shell_exec","exec","base64_decode","edoced_46esab","eval","system","proc_open","popen","curl_exec","curl_mu lti_exec","parse_ini_file","show_source'","vbscrip.encode","jscrip.encode","javasc rip.encode","gzinflate","gzuncompress","str_rot13","phpinfo","pcntl_exec","pytho n_eval","gzip","mkdir","fopen","fclose","readfile"。
步骤S1012:利用webshell生成工具生成webshell后门样本。
webshell生成工具可以为B374K WebShell、Metasploit、微粒WebShell生成器、中国菜刀、WeBaCoo和Weevely等工具生成和管理webshell文件。
S102:利用常见的webshell生成工具生成webshell后门文件,并分别搭建控制端和受控端,在控制端将webshell门文件上传到受控端,并通过web访问受控端的后门文件,获取受控端命令执行环境,并执行Shell命令;以上过程产生的会话流量被捕获为webshell恶意会话流量。
在一个示例性实施例中,步骤S102具体包括如下步骤:
步骤S1021:划分webshell攻击种类,将webshell后门文件分为大马、小马和一句话木马三个类型,并划分不同类型木马的不同攻击阶段为:上传webshell后门文件到目标Web服务器、攻击者访问Web服务器上的后门文件获得命令执行环境、执行命令和结果回传4个攻击阶段。
步骤S1022:搭建webshell运行环境,包括攻击者使用的客户端受害方web服务器。其中,web服务器要允许文件上传或存在文件上传漏洞。
步骤S1023:攻击者使用客户端分别上传不同类型的webshell后门文件到受害方web服务器,并确认webshell后门文件上传成功。
步骤S1024:攻击者使用客户端访问受害方web服务器上的上传后门文件,从而获取Shell命令执行环境。
步骤S1025:攻击者利用获取的Shell命令执行环境,执行攻击性命令,例如:命令执行、文件操作或数据库操作等,目的是是对web服务器进行破坏或者数据泄露。
步骤S1026:对步骤S1023~1025工程总的http流量进行捕获,作为webshell恶意会话流量。
S103:获取常用web服务器工具中的网页脚本文件作为后续机器学习和深度学习训练所需的白样本,例如主流CMS源代码(phpcms、wordpress、phpmyadmin和smarty等)。捕获网络上正常的http会话流量作为正常会话流量。
S104:对webshell后门文件和白样本进行数据预处理、提取单词特征,生成样本文件词袋特征向量构建静态检测的机器学习集成学习模型、深度学习的卷积神经网络和循环神经网络模型,并设置网络结构参数和训练权重。训练以上模型并进行交叉验证。
在一个示例性实施例中,步骤S104包括如下具体处理:
图3为本申请实施例提供的静态检测训练流程图。如图3所示,包括:
步骤S1041:对webshell后门文件和白样本进行数据预处理,包括:过滤文本中的特殊字符串、过滤文本中的变量,只保留关键的全局变量、过滤文本中代码的注释和对文本进行分词、去除停用词、统计单词的词频和文档频。
在一个示例性实施例中,步骤S1041包括如下具体处理:
步骤S10411:将字符'@','[',']','(',')','{','}','\”,'“',',',';','=','.','\t','\n','\r'作为特殊字符,替换为空格。
步骤S10412:过滤文本中的变量,只保留全局变量“$_GET”,“$_POST”,“$_REQUEST”,“$_COOKIE”,其他的变量变成空格。
步骤S10413:过滤文件中代码的注释,即过滤”//”作为起始的行或者”/*”..“*/”之间的代码,将其替换为空格。
步骤S10413:以空格作为分隔符,分割文本得到文本所有的词。
步骤S10414:去除文本中的英文停用词,统计文本中每个单词的词频和文档频。
步骤S1042:对步骤S1041生成的单词进行特征选择;
常用的特征选择分为过滤方法、包裹式方法、嵌入式方法。选择文件中具有较好类别区分能力的单词作为分类特征,生成用于机器学习和深度学习的特征向量。在一个示例性实施例中,特征选择方法使用过滤方法中的TF-IDF方法。
步骤S1043:利用步骤S1042生成的样本文件词袋特征向量构建静态检测的机器学习集成学习模型,机器学习的集成学习模型包括bagging、boosting或stacking方法。在一个示例性实施例中,集成学习模型使用stacking方法,例如mlxtend开源库中的StackingClassifier集成分类器,使用朴素贝叶斯、支持向量机、随机森林、多层感知机、决策树方法作为基分类器,使用高斯核的支持向量机作为组合分类器,训练过程采用stacking方法。
步骤S1044:深度学习的卷积神经网络和循环神经网络模型,包括但不局限于RNN、CNN、迁移学习、组合学习(多类深度学习技术的组合使用)等技术,构建深度学习模型,并设置网络结构参数和训练权重。训练以上模型并进行交叉验证,经过多轮次的迭代,输出并保存最优的分类模型,作为最终的静态检测的模型。
在一个示例性实施例中,步骤S1044包括如下具体处理:
步骤S10441:构建深度学习的卷积神经网络模型,并设置网络结构参数和训练权重。卷积神经元网络CNN的网络结构参考论文“Convolutional Neural Networks forSentence Classification”。实施例中提到的卷积神经元网络CNN的模型框架不局限于下文所描述的网络结构。
在一个示例性实施例中,步骤S10441包括如下具体处理:
步骤S104411,用随机数初始化所有的滤波器和参数/权重;
步骤S104412:卷积神经元网络CNN将用于训练的webshell后门文本作为输入,执行前向步骤(卷积层,ReLU层,池化层以及全连接层的前向传播),并计算每个类别的对应输出概率;
步骤S104413,计算输出层的总误差(类别之和);
步骤S104414,反向传播算法计算误差相对于所有权重的梯度,并用梯度下降法更新所有的滤波器权重和参数的值,以使输出误差最小化;
步骤S104415,经过最多n_epoch次迭代,输出最优的分类模型;
步骤S104416,保存训练完的CNN神经网络模型。将训练完毕的CNN模型和权重保存到HDF5文件中,该文件包括以下信息:模型结构、模型权重、训练配置(损失函数,优化器等)和优化器的状态。
步骤S10442:构建深度学习的循环神经网络模型,并设置网络结构参数和训练权重。循环神经元网络RNN的网络结构采用LSTM结构。实施例中提到的循环神经元网络RNN的模型框架不局限于LSTM所描述的网络结构。模型的训练过程与步骤S10441的CNN模型的训练过程相似,将训练完毕的RNN模型和权重保存到HDF5文件中,该文件包括以下信息:模型结构、模型权重、训练配置(损失函数,优化器等)和优化器的状态。
S105:对webshell后门文件和白样本中PHP类型文件提取字节码特征,生成样本文件字节码特征向量构建动态检测的机器学习集成学习模型、深度学习的卷积神经网络和循环神经网络模型,并设置网络结构参数和训练权重。训练以上模型并进行交叉验证。
在一个示例性实施例中,步骤S105包括如下具体处理:
图4为本申请实施例提供的动态检测训练流程图;如图4所示,包括:
步骤S1051:对PHP类型的webshell后门文件,利用PHP扩展插件VLD(插件介绍:http://pecl.php.net/package/vld),提取PHP后门文件的字节码(opcode),得到文件的动态字节码特征,统计字节码特征的词频和文档频。其中,VLD(Vulcan Logic Dumper)是一个在Zend引擎中,以挂钩的方式实现的用于输出PHP脚本生成的中间代码(执行单元)的扩展,该中间代码被称为字节码OPCODE,使用字节码能够有效避免攻击者在webshell文本中添加的一些逃逸手段,即webshell文本可以有不同的变形和混淆,但它们生成的字节码是一样的。
步骤S1052:对步骤S1051生成的字节码进行特征选择,选择文件中具有较好类别区分能力的字节码作为分类特征,生成用于机器学习和深度学习的特征向量。优选的,特征选择方法使用过滤方法中的TF-IDF方法。
步骤S1053:利用步骤S1052生成的样本文件字节码特征向量构建动态检测的机器学习集成学习模型、深度学习的卷积神经网络和循环神经网络模型,并设置网络结构参数和训练权重。训练以上模型并进行交叉验证,经过多轮次的迭代,输出并保存最优的分类模型,作为最终的动态检测的模型。该过程与步骤S1043和S1044相似,这里不再赘述。
S106:利用S102和S103中的webshell恶意会话流量和正常会话流量,提取单个会话上的异常行为特征、单个会话上的协议字段特征、多个会话窗口内的统计特征,生成流量异常检测特征向量构建异常行为检测的机器学习集成学习模型、深度学习的卷积神经网络和循环神经网络模型,并设置网络结构参数和训练权重。训练以上模型并进行交叉验证。
在一个示例性实施例中,步骤S106包括如下具体处理:
图5为本申请实施例提供的异常行为检测模型训练流程图,如图5所示,包括:
步骤S1061:利用步骤S102和步骤S103中的webshell恶意会话流量和正常会话流量,提取单个会话中的动态脚本,利用动态沙箱技术,通过HOOK系统API的形式进行监控恶意样本的行为动作,获取异常的操作行为作为异常行为特征。其中异常行为包括:系统命令、文件操作、数据库操作等。
步骤S1062:由于webshell为逃避规则检测,会在流量会话中通常包含混淆代码,利用步骤S102和步骤S103中的webshell恶意会话流量和正常会话流量,提取单个会话上的混淆代码特征。
在一个示例性实施例中,步骤S1062包括如下具体处理:
步骤S10621:计算最长的字符串的长度。因为webshell恶意会话流量中包含的混淆代码通常是长字符串编码的文本,许多流行的编码方法(如base64编码)将生成一个没有空格字符的长字符串,而正常的的文本和脚本文件将由相对较短的单词组成,识别具有异常长字符串的文件可能有助于识别具有混淆代码的文件。
步骤S10622:信息熵值。用于衡量会话中字符的不确定性,因此我们可以求会话上流量负载的信息熵值,熵值越大,该会话是webshell的可能性越高。
步骤S10623:重合指数。是用于密码分析和文本的自然语言分析的技术,正常会话中有意义的词汇重合指数高,webshell恶意会话中被加密或混淆的字符串的重合指数低。重合指数的计算方法是:sum(fi*(fi-1))/(N*(N-1)),其中,fi是会话上流量负载中某个字符出现的概率,N代表字符出现在该负载中的个数。
步骤S10624:文件的可压缩比。文件的压缩比=压缩文件后的大小/文件的原始大小,压缩的实质,在于消除特定字符分布上的不均衡,通过将短码分配给高频字符,而长码对应低频字符实现长度上的优化。Webshell恶意会话的流量经base64编码后,消除了非ascii的字符,这样实际上base64编码过的文件的字符就会表现为更小的分布的不均衡,压缩比就会变大。
步骤S10625:基于敏感词的特征,webshell恶意会话中通常包含系统调用、系统配置、数据库和文件的操作函数作为敏感词。例如:
"preg_replace","create_function","passthru","shell_exec","exec","base64_dec ode","edoced_46esab","eval","system","proc_open","popen","curl_exec","curl_mu lti_exec","parse_ini_file","show_source'","vbscrip.encode","jscrip.encode","javasc rip.encode","gzinflate","gzuncompress","str_rot13","phpinfo","pcntl_exec","pytho n_eval","gzip","mkdir","fopen","fclose","readfile"。
步骤S1063:利用步骤S102和步骤S103中的webshell恶意会话流量和正常会话流量在http协议字段内容上的不同,提取单个会话上协议字段特征。
在一个示例性实施例中,步骤S1063包括如下具体处理:
步骤S10631:计算流量中get/post参数个数。一般来说webshell恶意会话上get/post的参数个数比较少。
步骤S10632:计算流量中get/post的信息熵。
其中,加密通信的webshell会话上get/post数据的熵值会偏大。
步骤S10633:计算cookie键值对的熵值。webshell会话上cookie有的为空,有的虽然有键值对的结构但是基本数量非常少、命名没有实际的含义、键值对会比较混乱,不像正常流量中的那么有规律或是参数有实际可读含义的。
步骤S10634:计算网页路径层数。黑客在成功入侵一个网站,植入webshell网页,通常需要这些后门软件具有隐蔽性,因此网页路径会比较深,网页藏匿的比较深,不易被正常浏览者发现。
步骤S10635:计算访问时间段。webshell的访问通常选择在正常流量稀少的时间段,时间段按照大类可以按天、周、月、季度、年等刻度划分,得到不同的子特征。
步骤S10636:计算有无referer:webshell恶意流量中少有网页跳转关系。而正常网页很多包含该字段。
步骤S1064:利用步骤S102和步骤S103中的webshell恶意会话流量和正常会话流量,提取多个会话窗口上统计特征。
在一个示例性实施例中,步骤S1064包括如下具体处理:
步骤S10641:统计会话窗口中的URL被访问的总次数和访问持续时间。webshell攻击者使用的页面只会被少量IP访问,且持续时间短。
步骤S10642:统计会话窗口中的页面是否属于孤立页面。正常网站页面互相链接,因此有出入度,而webshell攻击者访问的页面通常与其他网站页面没有超链接,是出入度为0的孤立页面。
步骤S10643:统计会话窗口中的URL上path特征的相似度。不同手段植入的webshell路径各有特征,例如上传的webshell,如果上传组件有保护措施的(文件上传漏洞防御——图片写马的剔除)会进行文件名重写(示例中的32位的十六进制的名字),并在路径中还有日期特征,这类webshell还极易出现在静态资源目录下,为此可以在特定的目录下,对path的相似性分析,分析方法可以采用距离度量方法,例如编辑距离方。
步骤S10644:统计会话窗口中payload所包含的webshell攻击特征统计,webshell攻击特征可以来自于WAF/IDS/IPS中的webshell静态检测规则。
步骤S1065:利用步骤S1061~S1064生成的特征向量构建异常行为检测的机器学习集成学习模型、深度学习的卷积神经网络和循环神经网络模型,并设置网络结构参数和训练权重。训练以上模型并进行交叉验证,经过多轮次的迭代,输出并保存最优的分类模型,作为最终的异常行为检测的模型。该过程与步骤S1043和S1044相似,这里不再赘述。
S107:对于网络实时HTTP流量进行预处理,获取上传文件和会话流量,利用静态检测模型、动态检测模型、异常行为检测模型进行检测,分别输出是否为webshell的检测结果,并进行综合判定,实现对webshell的实时检测。
在一个示例性实施例中,步骤S107包括如下具体处理:
步骤S1071:步骤S107中提及的静态检测模型,包含机器学习的集成学习模型、深度学习的卷积神经网络和循环神经网络模型这3个子模型,这3个子模型都输出是否为webshell的分类结果;
步骤S1072:对步骤S1071的3个子模型输出结果的综合评判。
其中,评判方法包括但不限于:平均法、投票法和复合金字塔方法。
其中:1)平均法是取集成学习模型、卷积神经网络模型、循环神经网络模型输出结果的平均值,然后与分类阈值做比较作综合判定;2)投票法是对集成学习模型、卷积神经网络模型、循环神经网络模型输出结果做投票,选择票数最多的判定结果作为综合判定结果;3)复合金字塔方法是从集成学习模型、卷积神经网络模型、循环神经网络模型中选择两个模型先做判定,若判定不是webshell则进一步用第三个模型做判定。
步骤S1073:对步骤S107中提及的动态检测模型和异常行为检测模型,每个模型各自也包含机器学习的集成学习模型、深度学习的卷积神经网络和循环神经网络模型这3个子模型,综合判定方法与静态检测方法相似。
步骤S1074对步骤S107中提及的静态检测、动态检测和异常行为这三种检测方法各自综合判定结果输出结果进行最终判定的方法包括:平均法和投票法。
本申请实施例的技术方案,基于机器学习和深度学习技术,通过对webshell后门文件和恶意webshell会话的学习,获得对已知webshell后门及其变种的检测能力,同时获取对未知webshell的检测能力,实现0-day的webshell的检测效果,提高了检测方法的泛化能力,尽量避免单一检测方法的过拟合,鲁棒较高,且具有准确率高、误报率低、未知攻击发现能力强等特点。
本申请实施例提供一种基于人工智能的webshell检测装置,包括处理器和存储器,其中所述存储器存储计算机程序,所述处理器用于调用所述处理器中的计算机程序以实现上文任一所述的方法。
本申请实施例提供了一种基于机器学习和深度学习的webshell检测装置,图7为本申请实施例提供的基于机器学习和深度学习的webshell检测装置的结构示意图。如图7所示,根据本申请实施例的基于机器学习和深度学习的webshell检测装置包括:
Webshell后门文件和恶意会话获取模块201,用于获取webshell后门文件,生成webshell的web访问会话流量。即从恶意代码样本库中获取webshell后门文件样本,利用webshell生成工具生成webshell后门样本,过滤不符合条件的样本;利用常见的webshell生成工具生成webshell后门文件,并分别搭建控制端和受控端,在控制端将webshell后门文件上传到受控端,并通过web访问受控端的后门文件,获取受控端命令执行环境,并执行Shell命令,以上过程产生的会话流量被捕获为webshell恶意会话流量。
训练数据获取模块202,用于获取机器学习和深度学习需要的训练数据。可以执行如下至少一个操作,包括:
对后门文件进行数据预处理,提取文本中的单词特征,利用特征选择方法选择特征,生成用于静态检测的特征向量;
对后门文件中PHP类型的文件,提前动态字节码特征,利用特征选择方法选择特征,生成用于动态检测的特征向量;
步骤S2023:对恶意会话,提取动态脚本并利用动态沙箱技术获取异常的操作行为特征,提取单个会话上HTTP协议字段特征,提取多个会话窗口统计特征,生成用于异常行为检测的特征向量。
训练模块203,用于训练机器学习和深度学习模型。即构建静态检测、动态检测、异常行为检测3个检测模型的各自子模型。子模型包括构建的机器学习的集成学习模型、深度学习的卷积神经网络和循环神经网络模型。并设置网络结构参数和训练权重。利用标注的训练数据训练深度学习模型,并进行交叉验证。
检测模块204,用于利用训练好的机器学习和深度学习模型,对未知脚本文件和Web访问会话进行检测,返回webshell识别结果。
本申请提供的装置实施例,获取webshell后门文件的样本数据,对webshell后门文件样本进行特征提取,生成监督学习的特征向量,所述监督学习的特征向量包括文本特征、字节码特征和异常行为特征中的至少一种,并根据所述监督学习的特性向量,分别建立每种特征向量的学习模型,再利用所述学习模型对网络流量进行检测,实现通过多种类型的特征向量进行webshell检测的目的,并借助学习模型进行网络检测,提高检测效率。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (10)
1.一种基于人工智能的webshell检测方法,其特征在于,包括:
步骤A,获取webshell后门文件的样本数据;
步骤B,对webshell后门文件样本进行特征提取,生成监督学习的特征向量,所述监督学习的特征向量包括文本特征、字节码特征和异常行为特征中的至少一种;
步骤 C,根据所述监督学习的特征向量,分别建立每种特征向量的学习模型;
步骤D,利用所述学习模型对网络流量进行检测;
在步骤B和步骤C中,依次执行如下操作:
步骤11、对webshell后门文件和白样本进行数据预处理、提取文本特征,生成样本文件词袋特征向量,构建静态检测模型;
步骤12、对webshell后门文件和白样本中PHP类型文件提取字节码特征,生成样本文件字节码特征向量,构建动态检测模型;
步骤13、利用webshell恶意会话流量和正常会话流量,提取单个会话上的异常行为特征、单个会话上的协议字段特征、多个会话窗口内的统计特征,生成流量异常检测特征向量,构建异常行为检测模型;
在步骤D中,对于网络实时HTTP流量,利用静态检测模型、动态检测模型、异常行为检测模型进行检测,分别输出是否为webshell的检测结果,并进行综合判定,实现对webshell的实时检测。
2.根据权利要求1所述的方法,其特征在于,所述步骤A中webshell后门文件的样本数据包括恶意代码文件和/或恶意会话流量。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤B中文本特征的特征向量是通过如下方式得到的,包括:
获取恶意代码文件的文本中包括的单词信息;
从获取的单词信息中选择符合预设的类别区分能力的目标单词,作为静态分类特征;
利用所述目标单词,生成文本特征的特征向量,作为静态特征向量。
4.根据权利要求3所述的方法,其特征在于,所述获取所述恶意代码文件的文本中包括的单词信息之前,所述方法还包括:
采用如下至少一个处理策略对所述恶意代码文件中的字符的信息进行处理,包括:
过滤文本中预设的特殊字符串、变量和代码的注释中的至少一个;
保留预设的关键全局变量;
对文本的字符信息进行分词;
去除文本中的预设的停用词。
5.根据权利要求1或2所述的方法,其特征在于,所述步骤B中字节码特征的特征向量是通过如下方式得到的,包括:
获取恶意代码文件的动态字节码;
统计所述动态字节码在所述恶意代码文件中的词频和文档频;
根据所述动态字节码中的词频和文档频,选择符合预设的区分能力的字节码为目标字节码,作为动态分类特征;
利用所述目标字节码,生成字节码特征的特征向量,作为动态特征向量。
6.根据权利要求1或2所述的方法,其特征在于,所述步骤B中异常行为的特征向量包括如下至少一个:
异常操作行为的特征信息;
单个会话的混淆代码特征;
单个会话的协议字段特征;
至少两个会话的预设的统计特征。
7.根据权利要求1所述的方法,其特征在于,所述步骤C包括:
为每种特征向量建立至少两种学习模型,所述学习模型包括机器学习的集成学习模型、深度学习的卷积神经网络和循环神经网络模型中的至少两个。
8.根据权利要求7所述的方法,其特征在于,所述步骤D包括:
方式1:在每种特征向量有至少两个学习模型时,获取至少两个学习模型的输出结果对应的平均值,然后与预先设置的该种特征向量的分类阈值做比较,得到比较结果,将比较结果作为该种特征向量的学习模型的判断结果;
方式2:在每种特征向量有至少三个学习模型时,获取每种学习模型的输出结果,计算内容相同的输出结果的总量,将总量最多的输出结果作为该种特征向量的学习模型的判断结果;
方式3:在每种特征向量有2N+1个学习模型时,从所述2N+1个学习模型中选择2N个学习模型先做判定,若所述2N个学习模型判断结果为webshell,则流程结束;否则,利用最后一个学习模型做判定,将最后一个学习模型的判定结果作为该种特征向量的学习模型的判断结果,其中N为正整数。
9.根据权利要求7所述的方法,其特征在于,所述步骤D包括:
在采用至少两种特征向量对应的学习模型进行网络流量检测时,获取至少两种特征向量对应的学习模型的输出结果对应的平均值,然后与预先设置的判断阈值做比较,得到比较结果,将比较结果作为网络检测的判断结果;
在采用至少三种特征向量对应的学习模型进行网络流量检测时,获取每种特征向量对应的学习模型的输出结果,计算内容相同的输出结果的总量,将总量最多的输出结果作为网络检测的判断结果。
10.一种基于人工智能的webshell检测装置,其特征在于,包括处理器和存储器,其中所述存储器存储计算机程序,所述处理器用于调用所述存储器中的计算机程序以实现如权利要求1至9任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910138269.9A CN111614599B (zh) | 2019-02-25 | 2019-02-25 | 基于人工智能的webshell检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910138269.9A CN111614599B (zh) | 2019-02-25 | 2019-02-25 | 基于人工智能的webshell检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111614599A CN111614599A (zh) | 2020-09-01 |
CN111614599B true CN111614599B (zh) | 2022-06-14 |
Family
ID=72204602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910138269.9A Active CN111614599B (zh) | 2019-02-25 | 2019-02-25 | 基于人工智能的webshell检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111614599B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112132262B (zh) * | 2020-09-08 | 2022-05-20 | 西安交通大学 | 基于可解释模型的循环神经网络后门攻击检测方法 |
CN112491882A (zh) * | 2020-11-27 | 2021-03-12 | 泰康保险集团股份有限公司 | webshell的检测方法、装置、介质及电子设备 |
CN113518062B (zh) * | 2020-12-08 | 2023-04-28 | 腾讯科技(深圳)有限公司 | 攻击检测方法、装置及计算机设备 |
CN112560029A (zh) * | 2020-12-25 | 2021-03-26 | 中国南方电网有限责任公司超高压输电公司 | 基于智能分析技术的网站内容监测和自动化响应防护方法 |
CN113329032B (zh) * | 2021-06-23 | 2023-02-03 | 深信服科技股份有限公司 | 一种攻击检测方法、装置、设备和介质 |
CN113761521A (zh) * | 2021-09-02 | 2021-12-07 | 恒安嘉新(北京)科技股份公司 | 一种基于机器学习的脚本文件检测方法、装置、设备和存储介质 |
CN113821448A (zh) * | 2021-11-22 | 2021-12-21 | 上海斗象信息科技有限公司 | 一种Webshell代码的检测方法及装置、可读存储介质 |
CN114499944B (zh) * | 2021-12-22 | 2023-08-08 | 天翼云科技有限公司 | 一种检测WebShell的方法、装置和设备 |
CN115801462B (zh) * | 2023-02-06 | 2023-05-23 | 深圳大学 | 一种基于深度学习的Webshell流量检测方法 |
CN116155630B (zh) * | 2023-04-21 | 2023-07-04 | 北京邮电大学 | 恶意流量识别方法及相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107516041A (zh) * | 2017-08-17 | 2017-12-26 | 北京安普诺信息技术有限公司 | 基于深度神经网络的WebShell检测方法及其系统 |
CN108304584A (zh) * | 2018-03-06 | 2018-07-20 | 百度在线网络技术(北京)有限公司 | 非法页面检测方法、装置、入侵检测系统及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180150742A1 (en) * | 2016-11-28 | 2018-05-31 | Microsoft Technology Licensing, Llc. | Source code bug prediction |
-
2019
- 2019-02-25 CN CN201910138269.9A patent/CN111614599B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107516041A (zh) * | 2017-08-17 | 2017-12-26 | 北京安普诺信息技术有限公司 | 基于深度神经网络的WebShell检测方法及其系统 |
CN108304584A (zh) * | 2018-03-06 | 2018-07-20 | 百度在线网络技术(北京)有限公司 | 非法页面检测方法、装置、入侵检测系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111614599A (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111614599B (zh) | 基于人工智能的webshell检测方法和装置 | |
US10785241B2 (en) | URL attack detection method and apparatus, and electronic device | |
Ren et al. | Tree-RNN: Tree structural recurrent neural network for network traffic classification | |
Feng et al. | A two-layer deep learning method for android malware detection using network traffic | |
CN111600919B (zh) | 智能网络应用防护系统模型的构建方法和装置 | |
US20210021616A1 (en) | Method and system for classifying data objects based on their network footprint | |
CN111382434B (zh) | 用于检测恶意文件的系统和方法 | |
CN111382430A (zh) | 用于对计算机系统的对象进行分类的系统和方法 | |
US20210218754A1 (en) | System for Malicious HTTP Traffic Detection with Multi-Field Relation | |
CN107888616A (zh) | 基于URI的分类模型的构建方法和Webshell攻击网站的检测方法 | |
CN112492059A (zh) | Dga域名检测模型训练方法、dga域名检测方法、装置及存储介质 | |
Assefa et al. | Intelligent phishing website detection using deep learning | |
CN108959922B (zh) | 一种基于贝叶斯网的恶意文档检测方法及装置 | |
US20240089279A1 (en) | Method and network node for detecting anomalous access behaviours | |
Masabo et al. | Improvement of malware classification using hybrid feature engineering | |
Ejeta et al. | Website fingerprinting attack on psiphon and its forensic analysis | |
CN114285587A (zh) | 域名鉴别方法和装置、域名分类模型的获取方法和装置 | |
CN115314268B (zh) | 基于流量指纹和行为的恶意加密流量检测方法和系统 | |
CN111310176B (zh) | 一种基于特征选择的入侵检测方法和装置 | |
Alex et al. | Taylor–HHO algorithm: A hybrid optimization algorithm with deep long short‐term for malicious JavaScript detection | |
CN113971282A (zh) | 一种基于ai模型的恶意应用程序检测方法及设备 | |
Rathod et al. | AI & ML Based Anamoly Detection and Response Using Ember Dataset | |
Patil et al. | Impact of PCA Feature Extraction Method used in Malware Detection for Security Enhancement | |
Pîrîu et al. | Optimizing Cleanset Growth by Using Multi-Class Neural Networks | |
CN117454380B (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 |