CN113111346A - 一种多引擎WebShell脚本文件检测方法及系统 - Google Patents

一种多引擎WebShell脚本文件检测方法及系统 Download PDF

Info

Publication number
CN113111346A
CN113111346A CN202010033707.8A CN202010033707A CN113111346A CN 113111346 A CN113111346 A CN 113111346A CN 202010033707 A CN202010033707 A CN 202010033707A CN 113111346 A CN113111346 A CN 113111346A
Authority
CN
China
Prior art keywords
command execution
program
execution program
detection
training
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
Application number
CN202010033707.8A
Other languages
English (en)
Inventor
杨荣海
王大伟
黄志伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN202010033707.8A priority Critical patent/CN113111346A/zh
Publication of CN113111346A publication Critical patent/CN113111346A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Virology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明实施例提供了一种多引擎WebShell脚本文件检测方法及系统,用于一方面提升对WebShell检测的效率,另一方面提升对WebShell检测的准确率。本发明实施例方法包括:获取待检测网页文件的命令执行程序;对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell。

Description

一种多引擎WebShell脚本文件检测方法及系统
技术领域
本发明涉及网页安全技术领域,尤其涉及一种WebShell脚本文件检测方法及系统。
背景技术
WebShell检测是一个非常重要的问题。随着Web服务的发展,越来越多的黑客将构造的WebShell上传至服务器页面目录,从而通过访问该WebShell页面窃取用户的隐私信息,或对服务器进行控制。这类问题已经成为Web安全的一个主流问题。
传统的WebShell脚本检测主要有两种方法:
一、轻量级方案:
A、基于哈希值或规则匹配。这类方案有较高的计算速度,性能好。但是这类方案的缺点是防御能力有限,表达能力较弱,只能拦截已知(类似)样本。因此,攻击者可以利用混淆绕过这类检测方法。
B、机器学习/深度学习方案。采集语义信息,然后利用机器学习、深度学习进行判断。此种方案增加的对绕过样本的检测能力。但是受限于特征,无法理解脚本的高阶的程序特征信息,准确性仍然受限。
二、重量级方案:
这类方案有较高的攻击识别准确度,能识别复杂的攻击模式。但是缺点是通常计算速度较慢,无法应用到所有的脚本检测上。因此,此类方案需要很高成本的硬件来实现才能达到与轻量级方案接近的吞吐。
而如何在提升对WebShell检测效率的前提下,提升对WebShell检测的准确率是亟待解决的一个问题。
发明内容
本发明实施例提供了一种多引擎WebShell脚本文件检测方法及系统,用于在本地对待检测网页文件的命令执行程序执行轻量级检测,在云端对所述命令执行程序中的不确定性命令执行程序执行重量级检测,从而一方面提升对WebShell检测的效率,另一方面提升对WebShell检测的准确率。
本申请实施例第一方面提供了一种多引擎WebShell脚本文件检测方法,所述方法,包括:
获取待检测网页文件的命令执行程序;
对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;
对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell。
优选的,所述黑白名单过滤机制包括:
利用已知WebShell和已知正常命令执行程序设计正则规则,将所述正则规则作为所述黑白名单过滤机制;
和/或,
计算已知WebShell和已知正常命令执行程序的哈希值,将所述哈希值作为所述黑白名单过滤机制;
和/或,
利用词向量算法将所述已知WebShell和已知正常命令执行程序转化为向量,并将所述已知WebShell和已知正常命令执行程序的词向量作为所述黑白名单过滤机制。
优选的,对所述命令执行程序在本地执行所述多维特征融合的机器学习算法检测,包括:
提取所述命令执行程序的语义特征、文本特征和统计特征中的至少两种特征;
利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测。
优选的,在所述利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测之前,所述方法还包括:
提取出训练样本中网页文件的训练命令执行程序;
提取所述训练命令执行程序的第一语义特征、第一文本特征和第一统计特征中的至少两种特征;
将所述至少两种特征执行机器学习,得到所述第一机器学习模型。
优选的,所述提取所述训练命令执行程序的第一语义特征包括:
将所述训练命令执行程序转化为token标记序列;
利用语法解析所述token序列,生成抽象语法树;
从所述抽象语法树中提取出危险函数、危险函数的调用次数及具有区分度的关键词特征;
和/或,
遍历所述抽象语法树,恢复出混淆的攻击特征。
优选的,所述提取所述训练命令执行程序的第一文本特征包括:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出危险函数、混淆特征,及已知WebShell中特定的字符串特征、关键词特征和危险路径。
优选的,所述提取所述训练命令执行程序的第一统计特征包括:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出混淆函数的调用次数,所述训练命令执行程序的文本长度、特殊字符的占比以及所述训练命令执行程序的信息熵。
优选的,所述将所述至少两种特征执行机器学习,得到所述第一机器学习模型,包括:
分别对所述至少两种特征中的每种特征执行训练,得到对应的机器学习模型;
通过集成学习将所述每种特征对应的机器学习模型,集成为所述第一机器学习模型;
或,
将所述至少两种特征拼接起来,输入到同一模型执行训练,得到所述第一机器学习模型。
优选的,所述重量级检测包括程序分析的算法检测、虚拟执行算法检测及行为分析算法检测中的至少一种。
优选的,对所述不确定性命令执行程序在云端执行所述程序分析的算法检测,包括:
针对所述不确定性命令执行程序,构建程序控制流和程序数据流;
分别提取所述程序控制流和程序数据流中,对应的控制流特征和数据流特征,其中,所述控制流特征和数据流特征准确地描述了所述命令执行程序的脚本行为;
利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测。
优选的,在所述利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测之前,所述方法还包括:
获取训练样本中网页文件的训练命令执行程序;
针对所述训练命令执行程序,构建第一程序控制流和第一程序数据流;
分别提取所述第一程序控制流和第一程序数据流中,对应的第一控制流特征和第一数据流特征,其中,所述第一控制流特征和第一数据流特征准确地描述了所述训练命令执行程序的脚本行为;
利用机器学习算法对所述第一控制流特征和第一数据流特征执行训练,生成所述第二机器学习模型。
优选的,所述针对所述训练命令执行程序,构建第一程序控制流和第一程序数据流,包括:
用节点表示所述训练命令执行程序中的基本代码块,节点间的有向边表示程序控制流的路径,节点间的反向边表示可能存在的循坏,以构建所述第一程序控制流;
遍历所述第一程序控制流,记录变量的初始化点和引用点,保存所述初始化点和引用点对应的参数信息和数据信息,以构建所述第一程序数据流。
优选的,所述提取所述第一程序控制流中对应的第一控制流特征,包括:
提取所述第一程序控制流中的循环条件、判断条件、判断条件中的外界输入值或与外界输入值相关的变量、判断条件中的比较对象及判断结果中的至少一种特征,作为所述第一控制流特征,其中,所述比较对象用于与所述外界输入值或与外界输入值相关的变量进行比较。
优选的,所述提取所述第一程序数据流中对应的第一数据流特征,包括:
提取出所述第一程序数据流中的危险函数;
利用污点传播对所述危险函数执行分析,以判断所述危险函数中的参数是否可以接收外部输入;
利用达到定值分析所述外部输入,是否可以传递到所述危险函数。
优选的,所述利用污点传播对所述危险函数执行分析,以判断所述危险函数中的参数是否可以接收外部输入,包括:
通过判断路径条件,和/或函数调用关系是否生效,来判断所述危险函数中的参数是否可以接收外部输入。
本申请实施例第二方面提供了一种多引擎WebShell脚本文件检测系统,包括:
获取单元,用于获取待检测网页文件的命令执行程序;
第一检测单元,用于对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;
第二检测单元,用于对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell。
优选的,所述第一检测单元,具体用于:
利用已知WebShell和已知正常命令执行程序设计正则规则,将所述正则规则作为所述黑白名单过滤机制;
和/或,
计算已知WebShell和已知正常命令执行程序的哈希值,将所述哈希值作为所述黑白名单过滤机制;
和/或,
利用词向量算法将所述已知WebShell和已知正常命令执行程序转化为向量,并将所述已知WebShell和已知正常命令执行程序的词向量作为所述黑白名单过滤机制。
优选的,第一检测单元,具体用于:
提取所述命令执行程序的语义特征、文本特征和统计特征中的至少两种特征;
利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测。
优选的,所述系统还包括第一训练单元,具体用于::
提取出训练样本中网页文件的训练命令执行程序;
提取所述训练命令执行程序的第一语义特征、第一文本特征和第一统计特征中的至少两种特征;
将所述至少两种特征执行机器学习,得到所述第一机器学习模型。
优选的,所述第一训练单元,具体用于:
将所述训练命令执行程序转化为token标记序列;
利用语法解析所述token序列,生成抽象语法树;
从所述抽象语法树中提取出危险函数、危险函数的调用次数及具有区分度的关键词特征;
和/或,
遍历所述抽象语法树,恢复出混淆的攻击特征。
优选的,所述第一训练单元,具体用于:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出危险函数、混淆特征,及已知WebShell中特定的字符串特征、关键词特征和危险路径。
优选的,所述第一训练单元,具体用于:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出混淆函数的调用次数,所述训练命令执行程序的文本长度、特殊字符的占比以及所述训练命令执行程序的信息熵。
优选的,所述第一训练单元,具体用于:
分别对所述至少两种特征中的每种特征执行训练,得到对应的机器学习模型;
通过集成学习将所述每种特征对应的机器学习模型,集成为所述第一机器学习模型;
或,
将所述至少两种特征拼接起来,输入到同一模型执行训练,得到所述第一机器学习模型。
优选的,所述重量级检测包括基于程序分析的算法检测、虚拟执行算法检测及行为分析算法检测中的至少一种。
优选的,当所述重量级检测为所述程序分析的算法检测时,所述第二检测单元,具体用于:
针对所述不确定性命令执行程序,构建程序控制流和程序数据流;
分别提取所述程序控制流和程序数据流中,对应的控制流特征和数据流特征,其中,所述控制流特征和数据流特征准确地描述了所述命令执行程序的脚本行为;
利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测。
优选的,所述系统还包括第二训练单元,具体用于:
获取训练样本中网页文件的训练命令执行程序;
针对所述训练命令执行程序,构建第一程序控制流和第一程序数据流;
分别提取所述第一程序控制流和第一程序数据流中,对应的第一控制流特征和第一数据流特征,其中,所述第一控制流特征和第一数据流特征准确地描述了所述训练命令执行程序的脚本行为;
利用机器学习算法对所述第一控制流特征和第一数据流特征执行训练,生成所述第二机器学习模型。
优选的,所述第二训练单元具体用于:
用节点表示所述训练命令执行程序中的基本代码块,节点间的有向边表示程序控制流的路径,节点间的反向边表示可能存在的循坏,以构建所述第一程序控制流;
遍历所述第一程序控制流,记录变量的初始化点和引用点,保存所述初始化点和引用点对应的参数信息和数据信息,以构建所述第一程序数据流。
优选的,所述第二训练单元具体用于:
提取所述第一程序控制流中的循环条件、判断条件、判断条件中的外界输入值或与外界输入值相关的变量、判断条件中的比较对象及判断结果中的至少一种特征,作为所述第一控制流特征,其中,所述比较对象用于与所述外界输入值或与外界输入值相关的变量进行比较。
优选的,所述第二训练单元具体用于:
提取出所述第一程序数据流中的危险函数;
利用污点传播对所述危险函数执行分析,以判断所述危险函数中的参数是否可以接收外部输入;
利用达到定值分析所述外部输入,是否可以传递到所述危险函数。
优选的,所述第二训练单元,具体用于:
通过判断路径条件,和/或函数调用关系是否生效,来判断所述危险函数中的参数是否可以接收外部输入。
本申请实施例第三方面提供了一种计算机装置,包括处理器,该处理器在执行存储于存储器上的计算机程序时,用于实现本申请实施例第一方面提供的多引擎WebShell脚本文件检测方法。
本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,用于实现本申请实施例第一方面提供的多引擎WebShell脚本文件检测方法。
从以上技术方案可以看出,本发明实施例具有以下优点:
本申请实施例中,获取待检测网页文件的命令执行程序;对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell。因为本申请实施例在本地对待检测网页文件的命令执行程序执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,然后对不确定命令执行程序在云端执行重量级检测,从而一方面提升了对WebShell检测的效率,另一方面提升了对WebShell检测的准确率。
附图说明
图1为本申请实施例中一种多引擎WebShell脚本文件检测方法的一个实施例示意图;
图2为本申请实施例中图1实施例中步骤102的一个细化步骤;
图3为本申请实施例中图1实施例中步骤102的另一个细化步骤;
图4为本申请实施例中对第一机器学习模型训练过程的一个实施例示意图;
图5为本申请实施例中图4实施例中步骤402中提取第一语义特征的细化步骤;
图6为本申请实施例中抽象语法树的示意图;
图7为本申请实施例中图4实施例中步骤402中提取第一文本特征的细化步骤;
图8为本申请实施例中图4实施例中步骤402中提取第一统计特征的细化步骤;
图9为本申请实施例中图1实施例中步骤103的细化步骤;
图10为本申请实施例中第二机器学习模型训练过程的一个实施例示意图;
图11为本申请实施例中图10实施例中步骤1002的细化步骤;
图12为本申请实施例中第一程序控制流的示意图;
图13为本申请实施例中第一程序数据流的示意图;
图14为本申请实施例中图10实施例中步骤1003的细化步骤;
图15为本申请实施例中图14实施例步骤1402的细化步骤;
图16为本申请实施例中多引擎WebShell脚本文件检测系统的一个实施例示意图。
具体实施方式
本发明实施例提供了一种多引擎WebShell脚本文件检测方法及系统,用于在本地对待检测网页文件的命令执行程序执行轻量级检测,在云端对所述命令执行程序中的不确定性命令执行程序执行重量级检测,从而一方面提升了对WebShell检测的效率,另一方面提升了对WebShell检测的准确率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为方便描述,先对本申请中的专业术语做以下说明,并在以后部分的描述中继续沿用而不再赘述。
WebShell:一种以网页文件形式存在的命令执行程序,也称为脚本文件,是黑客入侵网站采用的重要手段,通常以asp、php、jsp或者cgi等网页文件形式存在。
程序分析:以某种语言书写的程序为对象,对其内部的运作流程进行分析。包括数据流分析及控制流分析。
控制流:描述程序逻辑执行的先后顺序及调用关系。
数据流:描述程序运行过程中数据的流转传播方式及其行为状态。
抽象语法树(Abstract Syntax Tree,AST):源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
泛化能力:可以通俗理解为学习能力,是指机器学习算法对新鲜样本的适应能力,优秀的机器学习算法应该具有很强的泛化能力。
深度学习:起初被认为是机器学习的一个分支,是指利用人工神经网络对数据进行表征学习的一种算法。近年来,得益于硬件计算能力的发展,神经网络的结构可以设置得非常“深”,这使得深度学习在许多人工智能任务上表现出强大的能力。
集成学习:通过结合多个简单的弱机器学习算法,博采众长,可以做出更可靠的决策。
高阶特征:描述代码块之间的调用关系,跟踪数据的传播关系等特征。量级更高,但是可以获得更准确的信息。
下面接着对本申请中的一种多引擎WebShell脚本文件检测方法进行描述,请参阅图1,本申请实施例中一种多引擎WebShell脚本文件检测方法的一个实施例,包括:
101、获取待检测网页文件的命令执行程序;
网页文件一般通过对应的命令执行程序(脚本)得以执行,而为了提升网页文件的安全性,可以通过对网页文件的命令执行程序进行检测,以及时发现命令执行程序中的WebShell脚本文件,提升网页的安全性。
具体的,WebShell是一种以网页文件形式存在的命令执行程序,也称为脚本文件,是黑客入侵网站采用的重要手段,通常以asp、php、jsp或者cgi等网页文件形式存在。
区别于现有技术中仅通过轻量级方法或重量级方法对待检测网页文件的命令执行程序进行检测,如基于哈希值/规则匹配的方法,或基于机器学习/深度学习的方法,或基于程序分析的方法对待检测网页文件的命令执行程序进行检测而带来的检测准确率较低或吞吐量较慢的方法。
本申请提出了一种多引擎WebShell脚本文件检测方法,用于一方面提升检测效率,另一方面提升检测的准确率。具体的,在对网页文件执行检测前,需要先获取待检测网页文件的命令执行程序。
102、对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;
步骤101中获取到待检测网页文件的命令执行程序后,对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种。
关于如何构建黑白名单过滤机制,及如何对命令执行程序执行多维特征融合的机器学习算法检测的过程,将在下面的实施例中详细描述,此处不再赘述。
103、对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell。
当步骤102中滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序后,对该不确定性命令执行程序在云端执行重量级检测,以识别出不确定性命令执行程序中的WebShell。
具体的,对于如何对不确定性命令执行程序执行重量级检测的过程,将在下面的实施例中详细描述,此处不再赘述。
本申请实施例中,获取待检测网页文件的命令执行程序;对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell。因为本申请实施例在本地对待检测网页文件的命令执行程序执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,然后对不确定命令执行程序在云端执行基于重量级检测,从而一方面提升了对WebShell检测的效率,另一方面提升了对WebShell检测的准确率。
基于图1所述的实施例,下面详细描述步骤102中构建黑白名单过滤机制的过程,具体请参阅图2,图2为图1实施例中步骤102的一个细化步骤:
201、利用已知WebShell和已知正常命令执行程序设计正则规则,将所述正则规则作为所述黑白名单过滤机制;
构建黑白名单过滤机制,可以通过规则匹配、哈希算法和词向量匹配算法中的至少一种来实现。
具体的,规则匹配是针对已知的WebShell和已知的正常命令执行程序分别构建正则规则,以对待检测命令执行程序中的WebShell和正常命令执行程序进行快速匹配,达到识别WebShell和正常命令执行程序的目的。进一步的,为了提升匹配的效率,还可以将正则规则中的字符串整合起来,生成一个自动机,来对待检测命令执行程序进行匹配,以提升匹配的效率。其中,自动机只是提升字符串匹配效率方式一种方式,还可以通过其他方式来实现,此处不做具体限制。
202、计算已知WebShell和已知正常命令执行程序的哈希值,将所述哈希值作为所述黑白名单过滤机制;
基于哈希算法的哈希值也是构建黑白名单的一种方式,如可以预先计算已知WebShell和已知正常命令执行程序的第一哈希值,并将第一哈希值作为黑白名单,若待检测命令执行程序的哈希值与第一哈希值相匹配,则证明该命令执行程序为WebShell或正常程序,反之则不是。
需要说明的是,传统的MD5算法在计算命令执行程序的哈希值时,一旦命令执行程序发生细微变化,哈希值则完全不一样,而弱哈希算法(如ssdeep)对于小幅改动的WebShell,其哈希值也相似,而为了提升对WebShell的检测率,本实施例中的哈希算法优选弱哈希算法。
203、利用词向量算法将所述已知WebShell和已知正常命令执行程序转化为向量,并将所述已知WebShell和已知正常命令执行程序的词向量作为所述黑白名单过滤机制。
此外,词向量算法也是构建黑白名单的一种机制。具体的,是将已知WebShell、已知正常命令执行程序和待检测命令执行程序分别转换为向量,然后计算待检测命令执行程序的词向量,与已知WebShell的词向量之间的距离,若该距离小于或等于预设阈值,则待检测命令执行程序为WebShell,反之则不是。
同理,计算待检测命令执行程序的词向量,与已知正常命令执行程序的词向量之间的距离,若该距离小于或等于预设阈值,则待检测命令执行程序为正常命令执行程序,反之则不是。
需要说明的是,黑白名单的构建可以是通过上述任一种方法,或多种方法的加权组合来实现,此处不做具体限制。当分别通过上述三种方法来构建黑白名单时,则在任一方法识别出WebShell时,则认定待检测命令执行程序为WebShell。
本申请实施例中,对构建具体的黑白名单过滤机制的过程做了详细描述,提升了本申请实施例的可实施性。
基于图1所述的实施例,下面接着描述步骤102中对所述命令执行程序在本地执行多维特征融合的机器学习算法检测的过程,具体请参阅图3,图3为图1实施例中步骤102的另一个细化步骤:
301、提取所述命令执行程序的语义特征、文本特征和统计特征中的至少两种特征;
当对所述命令执行程序在本地执行多维特征融合的机器学习算法检测时,需要先提取所述命令执行程序的语义特征、文本特征和统计特征中的至少两种特征,然后对该至少两种特征执行检测。
具体的,对于提取所述命令执行程序的语义特征、文本特征和统计特征的过程,将在下面的实施例中详细描述,此处不再赘述。
302、利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测。
当得到所述命令执行程序的语义特征、文本特征和统计特征中的至少两种特征后,即可利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测,以识别中所述命令执行程序中的WebShell。
基于图3所述的实施例,在利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测之前,所述方法还包括对第一机器学习模型的训练过程,具体请参阅图4,本申请实施例中对第一机器学习模型训练过程的一个实施例,包括:
401、提取出训练样本中网页文件的训练命令执行程序;
在训练第一机器学习模型时,需要获取大量的训练样本,并获取该训练样本中网页文件的训练命令执行程序,此处,训练命令执行程序是指训练样本中网页文件的命令执行程序,以用于区分待检测网页文件的命令执行程序。
402、提取所述训练命令执行程序的第一语义特征、第一文本特征和第一统计特征中的至少两种特征;
得到训练命令执行程序后,分别提取训练命令执行程序中的第一语义特征、第一文本特征和第一统计特征中的至少两种特征,以用于执行机器学习,此处获取的特征越多,越可以对命令执行程序的脚本行为进行准确的描述。
具体的,对于获取第一语义特征、第一文本特征和第一统计特征的过程,将在下面的实施例中进行描述,此处不再赘述。
403、将所述至少两种特征执行机器学习,得到所述第一机器学习模型。
得到上述特征中的至少两种特征后,将上述至少两种特征执行机器学习,以得到第一机器学习模型。
具体的,机器学习算法包括但不限于SVM(SupportVector Machine)支持向量机、CNN(Convolutional Neural Network)卷积神经网络算法、决策树算法、随机森林算法和逻辑回归算法,此处不再具体限制。
进一步,此处的第一机器学习模型可以是分别对所述至少两种特征中的每种特征执行训练,得到对应的机器学习模型,然后通过集成学习(如bagging、boosting或则stacking)将所述每种特征对应的机器学习模型,集成为所述第一机器学习模型。而关于集成学习的过程,在现有技术中都有详细描述,此次不再赘述。
或,
将所述至少两种特征拼接起来,输入到同一模型执行训练,得到所述第一机器学习模型。
具体的,在将所述至少两种特征执行拼接时,若出现如果语义解析失败的情况,则忽略相应的特征。
基于图4所述的实施例,下面详细描述步骤402,请参阅图5,图5为图4实施例中步骤402中提取第一语义特征的细化步骤:
501、将所述训练命令执行程序转化为token标记序列;
得到训练命令执行程序后,将该命令执行程序转化为token标记序列。
具体的,将命令执行程序转化为token标记序列,是计算机科学中的词法分析过程,而从输入字符中生成标记的过程,也称之为标记化。关于标记化的过程,在现有技术中有详细描述,此处不再赘述。
502、利用语法解析所述token序列,生成抽象语法树;
得到token标记序列后,利用语法解析所述token序列,以生成抽象语法树。
具体的,抽象语法树(Abstract Syntax Tree,AST)是对源代码语法结构的一种抽象表示,它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。而对于利用所述token序列生成抽象语法树的过程,在现有技术中也有详细描述,此处不再赘述。
503、从所述抽象语法树中提取出危险函数、危险函数的调用次数及具有区分度的关键词特征,和/或,遍历所述抽象语法树,恢复出混淆的攻击特征。
得到抽象语法树后,从抽象语法树中提取出危险函数,如eval、assert函数,危险函数的调用次数以及具有区分度的关键词特征。
其中,具有区分度的关键词特征指的是WebShell中常用的关键词特征。
或者,还可以遍历抽象语法树,以恢复出混淆的攻击特征,具体的,在图6所示的抽象语法树中,其中,该抽象语法树对应的php脚本如下所述:
php脚本具体包括:
Figure BDA0002365266170000161
Figure BDA0002365266170000171
该抽象语法树的根节点statements表示语句序列(Php代码由若干语句组成),上述列举了两条语句。assign节点表示第一条语句是赋值语句,其左子节点表示一个名为$k的变量,右子节点表示一个字符串拼接运算。call节点表示第二条语句是函数调用语句,该节点的两个子节点分别表示调用的函数名以及参数列表,在Php中函数名为变量说明这是一次变量函数调用。参数列表对应的是一个access节点,表示一个索引访问运算,在代码中对应对超级全局变量$_POST的范围。
在该语法树中,对左边的子节点由下到上进行遍历,便可恢复出攻击者想要混淆隐藏的“assert”关键词。
本申请实施例中,对提取命令执行程序中第一语义特征的过程做了详细描述,提升了本申请实施例的可实施性。
基于图4所述的实施例,下面接着描述步骤402,请参阅图7,图7为图4实施例中步骤402中提取第一文本特征的细化步骤:
701、检测所述训练命令执行程序是否被编码,若是,则执行步骤702,若否,则执行步骤703;
获取到训练命令执行程序后,检测该训练命令执行程序是否被编码,其中,WebShell编码可以通过pageEncoding等字符串来确定。
同时,在第一文本特征的提取过程中,还可以将是否编码作为第一文本特征中的一维特征。
702、对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出危险函数、混淆特征,及已知WebShell中特定的字符串特征、关键词特征和危险路径。
若训练命令执行程序被编码过,则对训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出危险函数、混淆特征,及已知WebShell中特定的字符串特征、关键词特征和危险路径。
其中,危险函数如eval、assert等,混淆特征类似于步骤503中所述,以及该训练命令执行程序中是否包含已知WebShell中特定的字符串特征、关键词特征和危险路径等。
703、从训练命令执行程序中提取出危险函数、混淆特征,及已知WebShell中特定的字符串特征、关键词特征和危险路径。
若训练命令执行程序未被编码过,则直接从该训练命令执行程序中提取出危险函数、混淆特征,及已知WebShell中特定的字符串特征、关键词特征和危险路径。
本申请实施例中,对提取命令执行程序中第一文本特征的过程做了详细描述,提升了本申请实施例的可实施性。
基于图4所述的实施例,下面接着描述步骤402,请参阅图8,图8为图4实施例中步骤402中提取第一统计特征的细化步骤:
801、检测所述训练命令执行程序是否被编码,若是,则执行步骤802,若否,则执行步骤803;
在第一文本特征之外,我们还引入了第一统计特征。为了对抗检测,攻击者会在WebShell中使用混淆绕过的方式来加密/隐藏恶意代码。此类行为会导致WebShell与正常脚本的统计特征不一致。
故我们还可以提取训练命令执行程序的第一统计特征,具体的,首先可以检测该命令执行程序是否被编码过,若是,则执行步骤802,若否,则执行步骤803。
802、对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出混淆函数的调用次数,所述训练命令执行程序的文本长度、特殊字符的占比以及所述训练命令执行程序的信息熵;
若训练命令执行程序执行了编码,则对该训练命令执行程序进行解码,并从解码后的训练命令执行程序中提取出混淆函数的调用次数,及该训练命令执行程序的文本长度、特殊字符的占比及训练命令执行程序的信息熵。
因为,当攻击者会在WebShell中使用混淆绕过的方式来加密/隐藏恶意代码时,会导致训练命令执行程序的文本长度、特殊字符的占比及训练命令执行程序的信息熵发生明显的改变。
803、从训练命令执行程序中提取出混淆函数的调用次数,所述训练命令执行程序的文本长度、特殊字符的占比以及所述训练命令执行程序的信息熵。
若训练命令执行程序未执行编码,则直接从该训练命令执行程序中提取出混淆函数的调用次数,及该训练命令执行程序的文本长度、特殊字符的占比及训练命令执行程序的信息熵。
本申请实施例中,对提取命令执行程序中第一统计特征的过程做了详细描述,提升了本申请实施例的可实施性。
需要说明的是,图3实施例中步骤301的过程,也与图5至图8实施例中描述的类似,此处不再赘述。
基于图1至图8所述的实施例,下面对不确定性命令执行程序执行重量级检测的过程进行描述,其中,重量级检测包括程序分析的算法检测、虚拟执行算法检测及行为分析算法检测中的至少一种。
优选的,当重量级检测为所述程序分析的算法检测时,下面详细描述图1实施例中的步骤103,请参阅图9,图9为图1实施例中步骤103的细化步骤:
901、针对所述不确定性命令执行程序,构建程序控制流和程序数据流;
步骤103中获取到待测网页文件命令执行程序中的不确定性命令执行程序后,对该不确定性命令执行程序利用程序分析算法进行检测,具体的,需要先针对该不确定性命令执行程序,构建程序控制流和程序数据流。
关于如何构建程序控制流和程序数据流的过程,将在下面的实施例中详细描述,此处不再赘述。
902、分别提取所述程序控制流和程序数据流中,对应的控制流特征和数据流特征,其中,所述控制流特征和数据流特征准确地描述了所述命令执行程序的脚本行为;
当构建了程序控制流和程序数据流,从所述程序控制流和程序数据流中,分别提取出对应的控制流特征和数据流特征,其中,所述控制流特征和数据流特征准确地描述了所述命令执行程序的脚本行为。
正是因为控制流特征和数据流特征准确地描述了所述命令执行程序的脚本行为,故程序分析算法检测可以提取出命令执行程序中更高阶的特征,具有更高的攻击识别度,能识别更复杂的攻击模式。
关于如何从程序控制流和程序数据流中,提取对应的控制流特征和数据流特征的过程,将在下面的实施例中详细描述,此处不再赘述。
903、利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测。
得到控制流特征和数据流特征后,利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测,以识别出不确性执行程序中的WebShell。
基于图9所述的实施例,在利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测之前,所述方法还包括第二机器学习模型的训练过程,下面接着描述第二机器学习模型的训练过程,请参阅图10,图10为第二机器学习模型训练过程的一个实施例:
1001、获取训练样本中网页文件的训练命令执行程序;
在获取第二机器学习模型之前,需要获取大量的训练样本,并提取出该训练样本中网页文件的训练命令执行程序,需要说明的是,此处的训练命令执行程序指的是训练样本中的命令执行程序,以用于区分待测网页文件中的命令执行程序。
1002、针对所述训练命令执行程序,构建第一程序控制流和第一程序数据流;
获取到训练命令执行程序后,针对该训练命令执行程序,构建第一程序控制流和第一程序数据流。
其中,构建第一程序控制流和第一程序数据流的过程,将在下面的实施例中详细描述,此处不再赘述。
1003、分别提取所述第一程序控制流和第一程序数据流中,对应的第一控制流特征和第一数据流特征,其中,所述第一控制流特征和第一数据流特征准确地描述了所述训练命令执行程序的脚本行为;
获取到第一程序控制流和第一程序数据流后,提取对应的第一控制流特征和第一数据流特征,其中,所述第一控制流特征和第一数据流特征准确地描述了所述训练命令执行程序的脚本行为。
正是因为第一控制流特征和第一数据流特征准确地描述了所述命令执行程序的脚本行为,故程序分析算法检测可以提取出训练命令执行程序中更高阶的特征,具有更高的攻击识别度,能识别更复杂的攻击模式。
其中,对于提取第一控制流特征和第一数据流特征的过程,将在下面的实施例中详细描述,此处不再赘述。
1004、利用机器学习算法对所述第一控制流特征和第一数据流特征执行训练,生成所述第二机器学习模型。
得到第一控制流特征和第一数据流特征后,利用机器学习算法对第一控制流特征和第一数据流特征执行训练,以生成第二机器学习模型。
具体的,机器学习算法包括但不限于SVM(Support Vector Machine)支持向量机、CNN(Convolutional Neural Network)卷积神经网络算法、决策树算法、随机森林算法和逻辑回归算法,此处不再具体限制。
进一步,此处的第二机器学习模型可以是分别对所述第一控制流特征和第一数据流特征执行训练,得到对应的机器学习模型,然后通过集成学习(如bagging、boosting或则stacking)将所述每种特征对应的机器学习模型,集成为所述第二机器学习模型。而关于集成学习的过程,在现有技术中都有详细描述,此次不再赘述。
或,
将所述第一控制流特征和第一数据流特征拼接起来,输入到同一模型执行训练,得到所述第二机器学习模型。
关于如何训练的过程,在现有技术中都有详细描述,此处也不再赘述。
本申请实施例中,对第二机器学习模型的建立过程,做了详细描述,提升了本申请实施例的可实施性。
基于图10所述的实施例,下面详细描述步骤1002,请参阅图11,图11为图10实施例中步骤1002的细化步骤:
1101、用节点表示所述训练命令执行程序中的基本代码块,节点间的有向边表示程序控制流的路径,节点间的反向边表示可能存在的循坏,以构建所述第一程序控制流;
程序控制流用于描述程序逻辑执行的先后顺序及调用关系。
为方便说明,下面通过图12对构建第一程序控制流的过程进行示例描述,其中,在构建第一程序控制流时,用节点表示所述训练命令执行程序中的基本代码块,节点间的有向边(即有向箭头)表示程序控制流的路径,节点间的反向边(即反向箭头)表示可能存在的循环,即形成了图12中的第一程序控制流示意图。
1102、遍历所述第一程序控制流,记录变量的初始化点和引用点,保存所述初始化点和引用点对应的参数信息和数据信息,以构建所述第一程序数据流。
程序数据流用于描述程序运行过程中数据的流转传播方式及其行为状态。在构建程序数据流时,遍历所述程序控制流,记录变量的初始化点和引用点,保存所述初始化点和引用点对应的参数信息和数据信息,以构建所述第一程序数据流。为便于理解,图13给出了与图12对应的第一程序数据流示意图。
本申请实施例中对根据训练命令执行程序,构建第一程序控制流和第一程序数据流的过程做了详细描述,提升了本申请实施例的可实施性。
基于图10和图11所述的实施例,下面详细描述步骤1003,请参阅图14,图14为图10实施例中步骤1003的细化步骤:
1401、提取所述第一程序控制流中的循环条件、判断条件、判断条件中的外界输入值或与外界输入值相关的变量、判断条件中的比较对象及判断结果中的至少一种特征,作为所述第一控制流特征,其中,所述比较对象用于与所述外界输入值或与外界输入值相关的变量进行比较;
所谓控制流特征,即反应了程序控制信息的特征,它可以是程序控制流中各种形式的特征。作为优选的控制流特征,本申请实施例中主要将第一程序控制流中的循环条件、判断条件、判断条件中的外界输入值或与外界输入值相关的变量、判断条件中的比较对象及判断结果中的至少一种特征,作为所述第一控制流特征,其中,所述比较对象用于与所述外界输入值或与外界输入值相关的变量进行比较。
因为攻击者一般都会给自己的WebShell设置密码(如图12中的$cmd==“passwd”),只有当接收到的请求包含正确的密码时(“passwd”),才会触发恶意的动作。故我们优先将循环条件、判断条件、判断条件中的外界输入值或与外界输入值相关的变量、判断条件中的比较对象及判断结果中的至少一种特征作为第一控制流特征。
容易理解的是,包含循环条件、判断条件、判断条件中的外界输入值或与外界输入值相关的变量、判断条件中的比较对象及判断结果中一种或多种特征的网页命令执行程序可能为WebShell,也可能为非WebShell。
1402、提取出所述第一程序数据流中的危险函数,利用污点传播对所述危险函数执行分析,以判断所述危险函数中的参数是否可以接收外部输入,利用达到定值分析所述外部输入,是否可以传递到所述危险函数。
所述数据流特征,即反应了数据流信息的特征,它也可以是程序数据流中各种形式的特征。作为优选的第一数据流特征,本申请实施例中主要将第一程序数据流中的危险函数、判断所述危险函数中的参数是否可以接收外部输入,及所述外部输入是否可以传递到所述危险函数作为第一数据流特征。
因为攻击者希望对WebShell有更灵活的控制(如执行任意命令),因此执行的操作往往不是预先设置在WebShell脚本中。相反地,攻击者会在脚本里边接收外界的输入,并将外界输入执行起来(比如图13中,使用$_GET[“cmd”]去接收外部输入)。因此,不管脚本做了什么混淆,最终都会执行与外界输入相关的命令。
故本申请实施例主要将危险函数,利用污点传播分析判断危险函数中的参数是否可以接收外部输入,及利用达到定值分析所述外部输入是否可以传递到所述危险函数,作为主要的第一数据流特征。
本申请实施例中,对从第一程序控制流和第一程序数据流中,提取第一控制流特征和第一数据流特征的过程做了详细描述,提升了本申请实施例的可实施性。
需要说明的是,图9实施例中的步骤901和902的具体实现过程,也可以参阅图11至图14所述,此处不再赘述。
基于图14所述的实施例,为了提升步骤1402中对危险函数中的参数是否可以接收外部输入识别的准确率,还可以通过以下方式来实现,请参阅图15,图15为图14实施例中步骤1402的细化步骤:
1501、通过判断路径条件,和/或函数调用关系是否生效,来判断所述危险函数中的参数是否可以接收外部输入。
具体的,在判断危险函数中的参数是否可以接收外部输入时,可以通过判断路径条件或函数调用关系是否生效,来进行判断。
如在路径A中,变量X用于接收外部输入,接下来X执行A运算,并将A运算的结果传递给变量Y,但运算A为A=X*0,这样,相当于在运算A中将外部输入全部用0来覆盖,故该路径条件为无效的路径条件,即路径A虽然可以接收外部输入,但最后外部输入全部归零,故相当于路径A为无效路径。
又如:在函数调用关系中,E调用F函数,F函数用于接收外部输入,并执行G运算,当F接收了外部输入,并执行G运算后,为关联于外部输入的函数,则判定E可以接收外部输入,而当F接收了外部输入,并执行G运算后,为不关联于外部输入的常数,则判定E不可以接收外部输入。
本申请实施例中通过判断路径条件,和/或函数调用关系是否生效,来判断所述危险函数中的参数是否可以接收外部输入,提升了对危险函数是否可以接收外部输入判断的准确率。
上面对本申请实施例中的多引擎WebShell脚本文件检测方法进行了描述,下面接着对本申请中的多引擎WebShell脚本文件检测系统进行描述,请参阅图16,本申请实施例中多引擎WebShell脚本文件检测系统的一个实施例,包括:
获取单元1601,用于获取待检测网页文件的命令执行程序;
第一检测单元1602,用于对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;
第二检测单元1603,用于对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell。
优选的,所述第一检测单元1602,具体用于:
利用已知WebShell和已知正常命令执行程序设计正则规则,将所述正则规则作为所述黑白名单过滤机制;
和/或,
计算已知WebShell和已知正常命令执行程序的哈希值,将所述哈希值作为所述黑白名单过滤机制;
和/或,
利用词向量算法将所述已知WebShell和已知正常命令执行程序转化为向量,并将所述已知WebShell和已知正常命令执行程序的词向量作为所述黑白名单过滤机制。
优选的,第一检测单元1602,具体用于:
提取所述命令执行程序的语义特征、文本特征和统计特征中的至少两种特征;
利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测。
优选的,所述系统还包括第一训练单元1604,具体用于::
提取出训练样本中网页文件的训练命令执行程序;
提取所述训练命令执行程序的第一语义特征、第一文本特征和第一统计特征中的至少两种特征;
将所述至少两种特征执行机器学习,得到所述第一机器学习模型。
优选的,所述第一训练单元1604,具体用于:
将所述训练命令执行程序转化为token标记序列;
利用语法解析所述token序列,生成抽象语法树;
从所述抽象语法树中提取出危险函数、危险函数的调用次数及具有区分度的关键词特征;
和/或,
遍历所述抽象语法树,恢复出混淆的攻击特征。
优选的,所述第一训练单元1604,具体用于:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出危险函数、混淆特征,及已知WebShell中特定的字符串特征、关键词特征和危险路径。
优选的,所述第一训练单元1604,具体用于:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出混淆函数的调用次数,所述训练命令执行程序的文本长度、特殊字符的占比以及所述训练命令执行程序的信息熵。
优选的,所述第一训练单元1604,具体用于:
分别对所述至少两种特征中的每种特征执行训练,得到对应的机器学习模型;
通过集成学习将所述每种特征对应的机器学习模型,集成为所述第一机器学习模型;
或,
将所述至少两种特征拼接起来,输入到同一模型执行训练,得到所述第一机器学习模型。
优选的,所述重量级检测包括程序分析的算法检测、虚拟执行算法检测及行为分析算法检测中的至少一种。
优选的,当重量级检测为程序分析的算法检测时,所述第二检测单元1603,具体用于:
针对所述不确定性命令执行程序,构建程序控制流和程序数据流;
分别提取所述程序控制流和程序数据流中,对应的控制流特征和数据流特征,其中,所述控制流特征和数据流特征准确地描述了所述命令执行程序的脚本行为;
利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测。
优选的,所述系统还包括第二训练单元1605,具体用于:
获取训练样本中网页文件的训练命令执行程序;
针对所述训练命令执行程序,构建第一程序控制流和第一程序数据流;
分别提取所述第一程序控制流和第一程序数据流中,对应的第一控制流特征和第一数据流特征,其中,所述第一控制流特征和第一数据流特征准确地描述了所述训练命令执行程序的脚本行为;
利用机器学习算法对所述第一控制流特征和第一数据流特征执行训练,生成所述第二机器学习模型。
优选的,所述第二训练单元1605,具体用于:
用节点表示所述训练命令执行程序中的基本代码块,节点间的有向边表示程序控制流的路径,节点间的反向边表示可能存在的循坏,以构建所述第一程序控制流;
遍历所述第一程序控制流,记录变量的初始化点和引用点,保存所述初始化点和引用点对应的参数信息和数据信息,以构建所述第一程序数据流。
优选的,所述第二训练单元1605,具体用于:
提取所述第一程序控制流中的循环条件、判断条件、判断条件中的外界输入值或与外界输入值相关的变量、判断条件中的比较对象及判断结果中的至少一种特征,作为所述第一控制流特征,其中,所述比较对象用于与所述外界输入值或与外界输入值相关的变量进行比较。
优选的,所述第二训练单元1605,具体用于:
提取出所述第一程序数据流中的危险函数;
利用污点传播对所述危险函数执行分析,以判断所述危险函数中的参数是否可以接收外部输入;
利用达到定值分析所述外部输入,是否可以传递到所述危险函数。
优选的,所述第二训练单元1605,具体用于:
通过判断路径条件,和/或函数调用关系是否生效,来判断所述危险函数中的参数是否可以接收外部输入。
需要说明的是,上述各单元的作用与图1至图15中描述的类似,此处不再赘述。
本申请实施例中,通过获取单元1601获取待检测网页文件的命令执行程序;通过第一检测单元1602对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;通过第二检测单元1603对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell,其中,所述重量级检测为基于程序分析的算法检测。因为本申请实施例在本地对待检测网页文件的命令执行程序执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,然后对不确定命令执行程序在云端执行重量级检测,从而一方面提升了对WebShell检测的效率,另一方面提升了对WebShell检测的准确率。
上面从模块化功能实体的角度对本发明实施例中的多引擎WebShell脚本文件检测系统进行了描述,下面从硬件处理的角度对本发明实施例中的计算机装置进行描述:
该计算机装置用于实现多引擎WebShell脚本文件检测系统的功能,本发明实施例中计算机装置一个实施例包括:
处理器以及存储器;
存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序时,可以实现如下步骤:
获取待检测网页文件的命令执行程序;
对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;
对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell,其中,所述重量级检测为基于程序分析的算法检测。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
利用已知WebShell和已知正常命令执行程序设计正则规则,将所述正则规则作为所述黑白名单过滤机制;
和/或,
计算已知WebShell和已知正常命令执行程序的哈希值,将所述哈希值作为所述黑白名单过滤机制;
和/或,
利用词向量算法将所述已知WebShell和已知正常命令执行程序转化为向量,并将所述已知WebShell和已知正常命令执行程序的词向量作为所述黑白名单过滤机制。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
提取所述命令执行程序的语义特征、文本特征和统计特征中的至少两种特征;
利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
提取出训练样本中网页文件的训练命令执行程序;
提取所述训练命令执行程序的第一语义特征、第一文本特征和第一统计特征中的至少两种特征;
将所述至少两种特征执行机器学习,得到所述第一机器学习模型。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
将所述训练命令执行程序转化为token标记序列;
利用语法解析所述token序列,生成抽象语法树;
从所述抽象语法树中提取出危险函数、危险函数的调用次数及具有区分度的关键词特征;
和/或,
遍历所述抽象语法树,恢复出混淆的攻击特征。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出危险函数、混淆特征,及已知WebShell中特定的字符串特征、关键词特征和危险路径。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出混淆函数的调用次数,所述训练命令执行程序的文本长度、特殊字符的占比以及所述训练命令执行程序的信息熵。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
分别对所述至少两种特征中的每种特征执行训练,得到对应的机器学习模型;
通过集成学习将所述每种特征对应的机器学习模型,集成为所述第一机器学习模型;
或,
将所述至少两种特征拼接起来,输入到同一模型执行训练,得到所述第一机器学习模型。
在本发明的一些实施例中,当重量级检测为程序分析的算法检测时,处理器,还可以用于实现如下步骤:
针对所述不确定性命令执行程序,构建程序控制流和程序数据流;
分别提取所述程序控制流和程序数据流中,对应的控制流特征和数据流特征,其中,所述控制流特征和数据流特征准确地描述了所述命令执行程序的脚本行为;
利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
获取训练样本中网页文件的训练命令执行程序;
针对所述训练命令执行程序,构建第一程序控制流和第一程序数据流;
分别提取所述第一程序控制流和第一程序数据流中,对应的第一控制流特征和第一数据流特征,其中,所述第一控制流特征和第一数据流特征准确地描述了所述训练命令执行程序的脚本行为;
利用机器学习算法对所述第一控制流特征和第一数据流特征执行训练,生成所述第二机器学习模型。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
用节点表示所述训练命令执行程序中的基本代码块,节点间的有向边表示程序控制流的路径,节点间的反向边表示可能存在的循坏,以构建所述第一程序控制流;
遍历所述第一程序控制流,记录变量的初始化点和引用点,保存所述初始化点和引用点对应的参数信息和数据信息,以构建所述第一程序数据流。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
提取所述第一程序控制流中的循环条件、判断条件、判断条件中的外界输入值或与外界输入值相关的变量、判断条件中的比较对象及判断结果中的至少一种特征,作为所述第一控制流特征,其中,所述比较对象用于与所述外界输入值或与外界输入值相关的变量进行比较。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
提取出所述第一程序数据流中的危险函数;
利用污点传播对所述危险函数执行分析,以判断所述危险函数中的参数是否可以接收外部输入;
利用达到定值分析所述外部输入,是否可以传递到所述危险函数。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
通过判断路径条件,和/或函数调用关系是否生效,来判断所述危险函数中的参数是否可以接收外部输入。
可以理解的是,上述说明的计算机装置中的处理器执行所述计算机程序时,也可以实现上述对应的各装置实施例中各单元的功能,此处不再赘述。示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述多引擎WebShell脚本文件检测系统中的执行过程。例如,所述计算机程序可以被分割成上述多引擎WebShell脚本文件检测系统中的各单元,各单元可以实现如上述相应多引擎WebShell脚本文件检测系统说明的具体功能。
所述计算机装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机装置可包括但不仅限于处理器、存储器。本领域技术人员可以理解,处理器、存储器仅仅是计算机装置的示例,并不构成对计算机装置的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机装置还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质用于实现多引擎WebShell脚本文件检测系统的功能,其上存储有计算机程序,计算机程序被处理器执行时,处理器,可以用于执行如下步骤:
获取待检测网页文件的命令执行程序;
对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;
对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell,其中,所述重量级检测为基于程序分析的算法检测。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
利用已知WebShell和已知正常命令执行程序设计正则规则,将所述正则规则作为所述黑白名单过滤机制;
和/或,
计算已知WebShell和已知正常命令执行程序的哈希值,将所述哈希值作为所述黑白名单过滤机制;
和/或,
利用词向量算法将所述已知WebShell和已知正常命令执行程序转化为向量,并将所述已知WebShell和已知正常命令执行程序的词向量作为所述黑白名单过滤机制。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
提取所述命令执行程序的语义特征、文本特征和统计特征中的至少两种特征;
利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
提取出训练样本中网页文件的训练命令执行程序;
提取所述训练命令执行程序的第一语义特征、第一文本特征和第一统计特征中的至少两种特征;
将所述至少两种特征执行机器学习,得到所述第一机器学习模型。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
将所述训练命令执行程序转化为token标记序列;
利用语法解析所述token序列,生成抽象语法树;
从所述抽象语法树中提取出危险函数、危险函数的调用次数及具有区分度的关键词特征;
和/或,
遍历所述抽象语法树,恢复出混淆的攻击特征。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出危险函数、混淆特征,及已知WebShell中特定的字符串特征、关键词特征和危险路径。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出混淆函数的调用次数,所述训练命令执行程序的文本长度、特殊字符的占比以及所述训练命令执行程序的信息熵。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
分别对所述至少两种特征中的每种特征执行训练,得到对应的机器学习模型;
通过集成学习将所述每种特征对应的机器学习模型,集成为所述第一机器学习模型;
或,
将所述至少两种特征拼接起来,输入到同一模型执行训练,得到所述第一机器学习模型。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,若重量级检测为程序分析的算法检测,处理器,可以具体用于执行如下步骤:
针对所述不确定性命令执行程序,构建程序控制流和程序数据流;
分别提取所述程序控制流和程序数据流中,对应的控制流特征和数据流特征,其中,所述控制流特征和数据流特征准确地描述了所述命令执行程序的脚本行为;
利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
获取训练样本中网页文件的训练命令执行程序;
针对所述训练命令执行程序,构建第一程序控制流和第一程序数据流;
分别提取所述第一程序控制流和第一程序数据流中,对应的第一控制流特征和第一数据流特征,其中,所述第一控制流特征和第一数据流特征准确地描述了所述训练命令执行程序的脚本行为;
利用机器学习算法对所述第一控制流特征和第一数据流特征执行训练,生成所述第二机器学习模型。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
用节点表示所述训练命令执行程序中的基本代码块,节点间的有向边表示程序控制流的路径,节点间的反向边表示可能存在的循坏,以构建所述第一程序控制流;
遍历所述第一程序控制流,记录变量的初始化点和引用点,保存所述初始化点和引用点对应的参数信息和数据信息,以构建所述第一程序数据流。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
提取所述第一程序控制流中的循环条件、判断条件、判断条件中的外界输入值或与外界输入值相关的变量、判断条件中的比较对象及判断结果中的至少一种特征,作为所述第一控制流特征,其中,所述比较对象用于与所述外界输入值或与外界输入值相关的变量进行比较。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
提取出所述第一程序数据流中的危险函数;
利用污点传播对所述危险函数执行分析,以判断所述危险函数中的参数是否可以接收外部输入;
利用达到定值分析所述外部输入,是否可以传递到所述危险函数。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
通过判断路径条件,和/或函数调用关系是否生效,来判断所述危险函数中的参数是否可以接收外部输入。
可以理解的是,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在相应的一个计算机可读取存储介质中。基于这样的理解,本发明实现上述相应的实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (18)

1.一种多引擎WebShell脚本文件检测方法,其特征在于,包括:
获取待检测网页文件的命令执行程序;
对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;
对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell。
2.根据权利要求1所述的方法,其特征在于,所述黑白名单过滤机制包括:
利用已知WebShell和已知正常命令执行程序设计正则规则,将所述正则规则作为所述黑白名单过滤机制;
和/或,
计算所述已知WebShell和已知正常命令执行程序的哈希值,将所述哈希值作为所述黑白名单过滤机制;
和/或,
利用词向量算法将所述已知WebShell和已知正常命令执行程序转化为向量,并将所述已知WebShell和已知正常命令执行程序的词向量作为所述黑白名单过滤机制。
3.根据权利要求1所述的方法,其特征在于,对所述命令执行程序在本地执行所述多维特征融合的机器学习算法检测,包括:
提取所述命令执行程序的语义特征、文本特征和统计特征中的至少两种特征;
利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测。
4.根据权利要求3所述的方法,其特征在于,在所述利用预先训练好的第一机器学习模型对所述至少两种特征执行本地检测之前,所述方法还包括:
提取出训练样本中网页文件的训练命令执行程序;
提取所述训练命令执行程序的第一语义特征、第一文本特征和第一统计特征中的至少两种特征;
将所述至少两种特征执行机器学习,得到所述第一机器学习模型。
5.根据权利要求4所述的方法,其特征在于,所述提取所述训练命令执行程序的第一语义特征包括:
将所述训练命令执行程序转化为token标记序列;
利用语法解析所述token序列,生成抽象语法树;
从所述抽象语法树中提取出危险函数、危险函数的调用次数及具有区分度的关键词特征;
和/或,
遍历所述抽象语法树,恢复出混淆的攻击特征。
6.根据权利要求4所述的方法,其特征在于,所述提取所述训练命令执行程序的第一文本特征包括:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出危险函数、混淆特征,及已知WebShell中特定的字符串特征、关键词特征和危险路径。
7.根据权利要求4所述的方法,其特征在于,所述提取所述训练命令执行程序的第一统计特征包括:
检测所述训练命令执行程序是否被编码;
若是,则对所述训练命令执行程序执行解码,并从解码后的训练命令执行程序中提取出混淆函数的调用次数,所述训练命令执行程序的文本长度、特殊字符的占比以及所述训练命令执行程序的信息熵。
8.根据权利要求4所述的方法,其特征在于,所述将所述至少两种特征执行机器学习,得到所述第一机器学习模型,包括:
分别对所述至少两种特征中的每种特征执行训练,得到对应的机器学习模型;
通过集成学习将所述每种特征对应的机器学习模型,集成为所述第一机器学习模型;
或,
将所述至少两种特征拼接起来,输入到同一模型执行训练,得到所述第一机器学习模型。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述重量级检测包括程序分析的算法检测、虚拟执行算法检测及行为分析算法检测中的至少一种。
10.根据权利要求9所述的方法,其特征在于,对所述不确定性命令执行程序在云端执行所述程序分析的算法检测,包括:
针对所述不确定性命令执行程序,构建程序控制流和程序数据流;
分别提取所述程序控制流和程序数据流中,对应的控制流特征和数据流特征,其中,所述控制流特征和数据流特征准确地描述了所述命令执行程序的脚本行为;
利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测。
11.根据权利要求10所述的方法,其特征在于,在所述利用预先训练好的第二机器学习模型对所述控制流特征和数据流特征执行检测之前,所述方法还包括:
获取训练样本中网页文件的训练命令执行程序;
针对所述训练命令执行程序,构建第一程序控制流和第一程序数据流;
分别提取所述第一程序控制流和第一程序数据流中,对应的第一控制流特征和第一数据流特征,其中,所述第一控制流特征和第一数据流特征准确地描述了所述训练命令执行程序的脚本行为;
利用机器学习算法对所述第一控制流特征和第一数据流特征执行训练,生成所述第二机器学习模型。
12.根据权利要求11所述的方法,其特征在于,所述针对所述训练命令执行程序,构建第一程序控制流和第一程序数据流,包括:
用节点表示所述训练命令执行程序中的基本代码块,节点间的有向边表示程序控制流的路径,节点间的反向边表示可能存在的循坏,以构建所述第一程序控制流;
遍历所述第一程序控制流,记录变量的初始化点和引用点,保存所述初始化点和引用点对应的参数信息和数据信息,以构建所述第一程序数据流。
13.根据权利要求12所述的方法,其特征在于,所述提取所述第一程序控制流中对应的第一控制流特征,包括:
提取所述第一程序控制流中的循环条件、判断条件、判断条件中的外界输入值或与外界输入值相关的变量、判断条件中的比较对象及判断结果中的至少一种特征,作为所述第一控制流特征,其中,所述比较对象用于与所述外界输入值或与外界输入值相关的变量进行比较。
14.根据权利要求12所述的方法,其特征在于,所述提取所述第一程序数据流中对应的第一数据流特征,包括:
提取出所述第一程序数据流中的危险函数;
利用污点传播对所述危险函数执行分析,以判断所述危险函数中的参数是否可以接收外部输入;
利用达到定值分析所述外部输入,是否可以传递到所述危险函数。
15.根据权利要求14所述的方法,其特征在于,所述利用污点传播对所述危险函数执行分析,以判断所述危险函数中的参数是否可以接收外部输入,包括:
通过判断路径条件,和/或函数调用关系是否生效,来判断所述危险函数中的参数是否可以接收外部输入。
16.一种多引擎WebShell脚本文件检测系统,其特征在于,包括:
获取单元,用于获取待检测网页文件的命令执行程序;
第一检测单元,用于对所述命令执行程序在本地执行轻量级检测,以滤除所述命令执行程序中的正常命令执行程序和WebShell,得到不确定性命令执行程序,其中,所述轻量级检测包括黑白名单过滤机制,及多维特征融合的机器学习算法检测中的至少一种,所述多维特征包括语义特征、文本特征和统计特征中的至少两种;
第二检测单元,用于对所述不确定性命令执行程序在云端执行重量级检测,以识别所述不确定性命令执行程序中的WebShell。
17.一种计算机装置,包括处理器,其特征在于,所述处理器在执行存储于存储器上的计算机程序时,用于实现如权利要求1至15中任一项所述的多引擎WebShell脚本文件检测方法。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在执行存储于存储器上的计算机程序时,用于实现如权利要求1至15中任一项所述的多引擎WebShell脚本文件检测方法。
CN202010033707.8A 2020-01-13 2020-01-13 一种多引擎WebShell脚本文件检测方法及系统 Pending CN113111346A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010033707.8A CN113111346A (zh) 2020-01-13 2020-01-13 一种多引擎WebShell脚本文件检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010033707.8A CN113111346A (zh) 2020-01-13 2020-01-13 一种多引擎WebShell脚本文件检测方法及系统

Publications (1)

Publication Number Publication Date
CN113111346A true CN113111346A (zh) 2021-07-13

Family

ID=76708817

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010033707.8A Pending CN113111346A (zh) 2020-01-13 2020-01-13 一种多引擎WebShell脚本文件检测方法及系统

Country Status (1)

Country Link
CN (1) CN113111346A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113761521A (zh) * 2021-09-02 2021-12-07 恒安嘉新(北京)科技股份公司 一种基于机器学习的脚本文件检测方法、装置、设备和存储介质
CN116305131A (zh) * 2023-05-20 2023-06-23 北京长亭科技有限公司 脚本静态去混淆方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407809A (zh) * 2016-09-20 2017-02-15 四川大学 一种Linux平台恶意软件检测方法
CN107194251A (zh) * 2017-04-01 2017-09-22 中国科学院信息工程研究所 Android平台恶意应用检测方法及装置
CN107451476A (zh) * 2017-07-21 2017-12-08 上海携程商务有限公司 基于云平台的网页后门检测方法、系统、设备及存储介质
CN107659570A (zh) * 2017-09-29 2018-02-02 杭州安恒信息技术有限公司 基于机器学习与动静态分析的Webshell检测方法及系统
CN109462575A (zh) * 2018-09-28 2019-03-12 东巽科技(北京)有限公司 一种webshell检测方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407809A (zh) * 2016-09-20 2017-02-15 四川大学 一种Linux平台恶意软件检测方法
CN107194251A (zh) * 2017-04-01 2017-09-22 中国科学院信息工程研究所 Android平台恶意应用检测方法及装置
CN107451476A (zh) * 2017-07-21 2017-12-08 上海携程商务有限公司 基于云平台的网页后门检测方法、系统、设备及存储介质
CN107659570A (zh) * 2017-09-29 2018-02-02 杭州安恒信息技术有限公司 基于机器学习与动静态分析的Webshell检测方法及系统
CN109462575A (zh) * 2018-09-28 2019-03-12 东巽科技(北京)有限公司 一种webshell检测方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113761521A (zh) * 2021-09-02 2021-12-07 恒安嘉新(北京)科技股份公司 一种基于机器学习的脚本文件检测方法、装置、设备和存储介质
CN116305131A (zh) * 2023-05-20 2023-06-23 北京长亭科技有限公司 脚本静态去混淆方法及系统
CN116305131B (zh) * 2023-05-20 2023-08-11 北京长亭科技有限公司 脚本静态去混淆方法及系统

Similar Documents

Publication Publication Date Title
US10581888B1 (en) Classifying software scripts utilizing deep learning networks
US9621570B2 (en) System and method for selectively evolving phishing detection rules
CN111639344A (zh) 一种基于神经网络的漏洞检测方法及装置
CN109033764B (zh) 反混淆处理方法及终端、计算机设备
Mehtab et al. AdDroid: rule-based machine learning framework for android malware analysis
Sabhadiya et al. Android malware detection using deep learning
US11580222B2 (en) Automated malware analysis that automatically clusters sandbox reports of similar malware samples
Zhu et al. Android malware detection based on multi-head squeeze-and-excitation residual network
CN109598124A (zh) 一种webshell检测方法以及装置
Chen et al. Droidvecdeep: Android malware detection based on word2vec and deep belief network
KR101858620B1 (ko) 기계 학습을 이용한 자바스크립트 분석 장치 및 방법
CN111382434A (zh) 用于检测恶意文件的系统和方法
US20170372069A1 (en) Information processing method and server, and computer storage medium
CN113360912A (zh) 恶意软件检测方法、装置、设备及存储介质
CN113111346A (zh) 一种多引擎WebShell脚本文件检测方法及系统
Motiur Rahman et al. StackDroid: Evaluation of a multi-level approach for detecting the malware on android using stacked generalization
Falor et al. A deep learning approach for detection of SQL injection attacks using convolutional neural networks
KR20180133726A (ko) 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법
Zhang et al. Smartdetect: a smart detection scheme for malicious web shell codes via ensemble learning
Al-talak et al. Detecting server-side request forgery (SSRF) attack by using deep learning techniques
Pranav et al. Detection of botnets in IoT networks using graph theory and machine learning
CN112817877A (zh) 异常脚本检测方法、装置、计算机设备和存储介质
CN113971283A (zh) 一种基于特征的恶意应用程序检测方法及设备
CN113918936A (zh) Sql注入攻击检测的方法以及装置
CN115314268B (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