CN106572117B - 一种WebShell文件的检测方法和装置 - Google Patents

一种WebShell文件的检测方法和装置 Download PDF

Info

Publication number
CN106572117B
CN106572117B CN201610995538.XA CN201610995538A CN106572117B CN 106572117 B CN106572117 B CN 106572117B CN 201610995538 A CN201610995538 A CN 201610995538A CN 106572117 B CN106572117 B CN 106572117B
Authority
CN
China
Prior art keywords
file
apocrypha
webshell
detection
collection
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
Application number
CN201610995538.XA
Other languages
English (en)
Other versions
CN106572117A (zh
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.)
Beijing An Punuo Information Technology Co Ltd
Original Assignee
Beijing An Punuo Information Technology 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 Beijing An Punuo Information Technology Co Ltd filed Critical Beijing An Punuo Information Technology Co Ltd
Priority to CN201610995538.XA priority Critical patent/CN106572117B/zh
Publication of CN106572117A publication Critical patent/CN106572117A/zh
Application granted granted Critical
Publication of CN106572117B publication Critical patent/CN106572117B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公布了一种WebShell检测方法和装置,所述检测方法基于变量回溯和抽象语法树,针对目录中的多个文件进行WebShell检测,包括可疑文件筛选过程、特征匹配检测过程、抽象语法树分析检测过程、无关代码剔除过程和数学公式检测过程,输出确定的WebShell文件。检测装置包括:可疑文件筛选单元、特征匹配单元、抽象语法树检测分析单元、剔除无关代码单元和数学公式检测单元;通过这些单元实现对WebShell文件的检测。利用本发明技术方案,能够很全面、系统地、快速、精确地对WebShell进行检测,检测效率高、误报率低,从而保证Web服务的安全。

Description

一种WebShell文件的检测方法和装置
技术领域
本发明属于网络安全技术领域,涉及WebShell文件检测,具体涉及一种基于变量回溯和抽象语法树的Webshell检测方法及装置。
背景技术
WebShell是一种常见的网页后门,它常常被攻击者用来获取Web服务器的操作权限。攻击者在进行网站入侵时,通常会将WebShell文件与Web目录下的正常网页放置在一起,然后通过浏览器访问WebShell文件,从而获取命令执行环境,最终达到控制网站服务器的目的。当网站服务器被控制后,就可以在其上任意查看数据库、上传下载文件以及执行任意程序命令等。WebShell与正常网页具有相同的运行环境和服务端口,它与远程主机是通过http协议(通常为80端口)进行数据交换,因此能够很容易地避开杀毒软件的检测和穿透防火墙。另外,WebShell是纯文本程序,相对于二进制编码程序,它在使用上更加灵活多变,也易于进行混淆,这就使得基于特征匹配的方法很难对WebShell进行准确检测的原因。
WebShell文件大致可以分为以下三大种类:一是复杂型WebShell,通常简称为大马,这一类文件体积较大,功能齐全,通常会调用系统函数,且一般会进行加密、变形、混淆等处理;二是文件上传型WebShell,通常简称为小马,这一类文件只包含上传文件功能,体积小;三是一句话木马,仅仅用于向服务器提交控制数据,代码简短,通常只有一行代码,使用相对比较灵活,可以作为单独的文件也可以插入到正常的文件中,变形非常多,难以通过正则等手段直接检测。
目前大多WebShell检测工具是通过特征库匹配方法来实现,特征库匹配方法是通过将Web服务器端的脚本与已知的WebShell特征库进行匹配,若匹配成功,则确定该脚本为WebShell,这种检测方法比较依赖于特征库,对于未知WebShell文件的检测无用。再者,目前许多WebShell文件为了躲避杀毒软件的查杀,会进行相应的加密、变形、混淆等的处理,以逃避杀毒软件的查杀,而现有的WebShell检测技术对于这类文件的检测存在误报率和漏报率均较高的问题。
发明内容
为了克服上述现有技术的不足,本发明提供一种基于变量回溯和抽象语法树的Webshell检测方法和装置,主要针对Web服务器,通过基于变量回溯和抽象语法树技术的检测过程扫描待检测文件,包括可疑文件筛选过程、特征匹配检测过程、抽象语法树分析检测过程、无关代码剔除过程以及数学公式检测过程,最终检测出WebShell文件。本发明的检测效率高、误报率低,能够快速、精确地检测出WebShell文件,从而保证Web服务的安全。
为方便说明,文中涉及符号解释如表1:
表1说明书中涉及符号及其含义
语法树是一种描述程序语法结构的树的图形表述,语法树描绘了从文法的开始符号开始推导出它的语言中的一个语句。
本发明提供的技术方案如下:
一种Webshell检测方法,基于变量回溯和抽象语法树,主要包括可疑文件筛选过程、特征匹配检测过程、抽象语法树分析检测过程、无关代码剔除过程以及数学公式检测过程,输出确定的WebShell文件;具体包括如下步骤:
开始可疑文件筛选过程:
A.读取网站目录中文件,过滤出可疑文件,得到可疑文件集:
A1.根据文件的创建时间筛选出可疑文件,可疑文件集记为T1;
A2.根据文件的相互关联筛选出可疑文件,可疑文件集记为T2;
A3.根据文件类型筛选出可疑文件,可疑文件集记为T3;
根据前面过程筛选出可疑文件集,文件类型可以作为判断一个文件是否是WebShell的关键,所以最终的可疑文件集T是取T1与T2的并集后,再与T3取交集,既是T=(T1∪T2)∩T3,对这些文件再进行以下步骤:
B.对筛选出的可疑文件集(T)进行特征匹配检测:
B1.建立常见WebShell特征库(H),常见WebShell特征库(H)包括常见WebShell文件的特征码;
B2.读取可疑文件,与常见WebShell特征库(H)中特征码进行匹配;
B3.是否匹配成功?
B4.是,则该文件为WebShell,该文件检测结束;
B5.否则,将该文件加入剩余可疑文件集;
对可疑文件集T中的每个文件执行步骤B2~B5;经过此过程检测后的剩余可疑文件集记为Q,继续以下步骤C,
C.抽象语法树分析检测过程:
C1.对于Q文件集中加密、变形的可疑文件进行变量回源、函数回源、解码操作;
C2.利用抽象语法树分析可疑文件;
C3.与特征库(I)进行匹配;特征库I是通过对WebShell文件经常利用的系统函数、上传功能等函数进行抽取形成。
C4.是否匹配成功?
C5.是,则该文件是WebShell,该文件检测结束;
C6.否则,将该文件加入剩余可疑文件集;
对可疑文件集Q中的每个文件执行步骤C1~C6;经过此过程检测后的剩余可疑文件集记为S,继续以下步骤D,
D.无关代码剔除过程:
D1.读取S中的可疑文件;
D2.剔除出无关代码;
D3.对于剔除了无关代码的文件,再与特征库K进行匹配;
对于已知的WebShell文件进行源码分析,剔除出无关代码后形成特征库K。
D4.是否匹配成功?
D5.是,则该文件是WebShell,该文件检测结束;
D6.否则,将该文件加入剩余可疑文件集;
对可疑文件集S中的每个文件执行步骤D1~D6;经过此过程检测后的剩余可疑文件集记为R,继续以下步骤E,
E.数学公式检测过程:
E1.根据信息熵(ie)、最长单词(lw)以及重合指数(ic)对R中文件的代码混淆程度进行判断;
E2.混淆程度赋值是否大于设定阈值?
E3.是,则说明是WebShell文件;
E4.否则,说明不是WebShell文件;
至此,检测结束。
其中,对于信息熵(ie)的描述是通过ASCII表来衡量文件的不确定性;采用最长单词是因为长的字符串或许存在被编码或被混淆处理的可能性;采用重合指数(ic)是因为重合度低预示着代码潜在的被加密或者被混淆的概率较大;通过信息熵(ie)、最长单词(lw)以及重合指数(ic)这三个值的描述来确定一个文件的混淆程度,混淆程度越大,说明是WebShell的可能性越大。一般地,正常的网站可执行文件是没有做很大程度的混淆处理的必要,许可网站可执行文件根本不做混淆处理。所以,如果一个文件的混淆程度很高,大于设定的一个阈值(通过大量测试确定阈值选择),影响到执行效率时,就可以认为这个文件是WebShell文件,对于WebShell文件而言混淆处理是为了避免查杀。
本发明还提供了一种基于变量回溯和抽象语法树的Webshell检测装置,包括:可疑文件筛选单元、特征匹配单元、抽象语法树检测分析单元、剔除无关代码单元和数学公式检测单元;其中:
可疑文件筛选单元,用于根据文件类型、创建时间、文件引用筛选出WebShell文件的可疑文件集,包括文件类型筛选子单元、创建时间筛选子单元和文件引用筛选子单元;
特征匹配单元,用于建立特征库,并将特征库与可疑文件筛选单元中筛选出的可疑文件集进行匹配,检测出一部分WebShell文件;余下的可疑文件为加密或变形的文件,构成新的可疑文件集,输入到抽象语法树检测分析单元;
抽象语法树检测分析单元,通过对输入的可疑文件集中的文件进行函数回源、变量回源、解码操作以及抽象语法树分析检测,检测出一部分WebShell文件;余下的可疑文件构成新的可疑文件集,输入到剔除无关代码单元;
剔除无关代码单元,通过剔除可疑文件中的无关代码,与提取出已知的WebShell文件中的无关代码,让两者进行比较,检测出一部分WebShell文件;余下的可疑文件构成新的可疑文件集,输入到数学公式检测单元;
数学公式检测单元,通过信息熵、最长单词数、重叠指数衡量可疑文件中的混淆程度,检测出一部分WebShell文件;余下的可疑文件则不是WebShell文件;
通过以上单元,实现对WebShell文件的检测。
与现有技术相比,本发明的有益效果是:
本发明提供一种基于变量回溯和抽象语法树的Webshell检测方法和装置,主要针对Web服务器,通过基于变量回溯和抽象语法树技术的检测过程扫描待检测文件,包括可疑文件筛选过程、特征匹配检测过程、抽象语法树分析检测过程、无关代码剔除过程以及数学公式检测过程,最终检测出WebShell文件。
利用本发明提供的技术方案,能够对Web服务器下的WebShell文件进行检测,文件检测的效率高、误报率低,能够快速、精确地检测出服务器中的WebShell文件,从而保证服务器的安全。本发明通过特征匹配检测对已知的WebShell进行检测,再通过抽象语法树分析检测、无关代码剔除以及数学公式检测对未知WebShell进行检测,检测率较高;本发明使得能够扫描的WebShell文件不仅仅局限于特征库与市面比较常见的WebShell文件;其中,无关代码剔除能够实现对于已知的WebShell文件的变形进行检测。利用本方案,可以很全面、系统地对WebShell进行检测。本发明的检测效率高、误报率低,能够快速、精确地检测出WebShell文件,从而保证Web服务的安全。
附图说明
图1是本发明提供的WebShell文件检测方法的流程框图。
图2是本发明提供的WebShell文件检测方法中的可疑文件筛选流程框图。
图3是本发明提供的WebShell文件检测方法中的特征匹配流程框图。
图4本发明实施例中抽象语法树分析检测出来的WebShell文件的流程框图。
图5本发明实施例中经过无关代码剔除后检测出来的WebShell文件的流程框图。
图6本发明实施例中经过数学公式检测过程后检测出来的WebShell文件的流程框图。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供一种基于变量回溯和抽象语法树的WebShell检测方法,依次包括疑文件筛选过程、特征匹配检测过程、抽象语法树分析检测过程、无关代码剔除过程以及数学公式检测过程;通过上述检测过程扫描待检测文件,从而检测出WebShell文件。
本发明还提供了一种基于变量回溯和抽象语法树的Webshell检测装置,包括:可疑文件筛选单元、特征匹配单元、抽象语法树检测分析单元、剔除无关代码单元和数学公式检测单元;其中:
可疑文件筛选单元,用于根据文件类型、创建时间、文件引用筛选出WebShell文件的可疑文件集,包括文件类型筛选子单元、创建时间筛选子单元和文件引用筛选子单元;
特征匹配单元,用于建立特征库,并将特征库与可疑文件筛选单元中筛选出的可疑文件集进行匹配,检测出一部分WebShell文件;余下的可疑文件为加密或变形的文件,构成新的可疑文件集,输入到抽象语法树检测分析单元;
抽象语法树检测分析单元,通过对输入的可疑文件集中的文件进行函数回源、变量回源、解码操作以及抽象语法树分析检测,检测出一部分WebShell文件;余下的可疑文件构成新的可疑文件集,输入到剔除无关代码单元;
剔除无关代码单元,通过剔除可疑文件中的无关代码,与提取出已知的WebShell文件中的无关代码,让两者进行比较,检测出一部分WebShell文件;余下的可疑文件构成新的可疑文件集,输入到数学公式检测单元;
数学公式检测单元,通过信息熵、最长单词数、重叠指数衡量可疑文件中的混淆程度,检测出一部分WebShell文件;余下的可疑文件则不是WebShell文件;
通过以上单元,实现对WebShell文件的检测。
图1是本发明提供的WebShell文件检测方法的流程框图,每个过程相应一个单元,分别对应可疑文件筛选单元、特征匹配单元、抽象语法树检测分析单元、剔除无关代码单元和数学公式检测单元。本发明具体实施包括如下过程:
A.读取网站目录中文件,过滤出可疑文件:
图2是WebShell文件检测方法中的可疑文件筛选过程的流程框图,其中,指定目录为需要检测的目录,一般需要检测Web文件存放的目录(图中的网站目录)。获取网站文件目录中的文件信息,包括文件名称、文件类型、文件创建时间信息以及文件的引用次数等。
A1.根据文件的创建时间筛选出可疑文件:
对于根据文件的创建时间筛选出可疑文件,首先检测文件创建时间;然后,将创建时间相接近的文件分配到一个组中,对于相近时间描述即是当两个文件创建时间小于一个某个阈值时,将这两个文件分配到一组中,通过这种方式将所有文件进行分组;最后,分组结束后,统计每一组中文件个数,个数小于某个阈值的整组文件,视为WebShell可疑文件。通过此方式筛选出的可疑文件集记为T1。经过大量测试发现当设置时间间隔阈值t=5minutes时,即当两个文件创建的时间间隔小于时间间隔阈值(5分钟)时被分配到同一组。如果这些分好组的文件个数小于或者等于设置的组中文件个数阈值(如5个),则将这组文件视为可疑WebShell文件,记录在时间检测可疑文件集T1中;
A2.根据文件的相互关联筛选出可疑文件,可疑文件集记为T2:
文件的引用次数是度量文件间相互关联的标尺,当一个文件的引用次数很少,甚至是没有时,它是WebShell的可能性越大。引用次数的阈值设为5,当引用次数小于5的文件为一组,小于10大于5的文件为一组,依次分下去;小于引用次数5的文件为可疑WebShell文件,记录在引用检测可疑文件集T2中;
A3.根据文件类型筛选出可疑文件,可疑文件集记为T3:
WebShell最终还是需要执行,一些文件由于类型原因不会是WebShell的载体,常被选为WebShell载体的文件类型:asp、jsp、php、txt、pl等,对这类型文件进行筛选,剔除掉这些文件类型以外的文件,形成可疑文件集T3;
最后,根据前面过程筛选出可疑文件集,筛选可疑文件的三个条件中,文件类型是最为关键的,它是判断一个文件是否是WebShell的关键,所以最终的可疑文件集T是取T1与T2的并集后,再与T3取交集,既是T=(T1∪T2)∩T3,对T中文件再进行以下步骤的检测,直到检测出WebShell。
B.对筛选出的可疑文件集(T)进行特征匹配检测(如图3):
B1.建立常见WebShell特征库(H);
H是通过对常见的WebShell文件进行Base64编码形成。
B2.读取可疑文件与特征库H中特征码进行匹配;
B3.是否匹配成功?
B4.是,则该文件为WebShell,该文件检测结束;
B5.否则,继续以下步骤,经过此过程检测后的剩余可疑文件集记为Q;
C.抽象语法树分析检测过程(如图4):
C1.对于Q文件集中加密、变形的可疑文件进行变量回源、函数回源、解码操作;
变量回源具体方法,举例说明如下:对于一个进行了变量变换的ASP文件,采用如下代码对Execute变量回源:
<%
d="88)))"
b="eval"
c="(request(char("
ac132=b&c&d
Execute(ac132)
%>
变量ac132回源后对应eval(request(char(88))),所以,对于上述代码执行变量回源后,对应代码为:Execute(eval(request(char(66)))),该过程便是变量回源过程。
针对函数回源、解码具体的做法,例如:对于一个函数加密的PHP文件,具体用如下对应文件内容进行函数回源:
<?php
$ibf=str_replace("y","","ysytyry_yryeypylyacye");
$agq=$ibf("v","","vbabsev64_vdevcvovdve");
$nv=$ibf("up","","upcuprupeupaupteup_upfupuupnupcuptupiupoupn");
$dw=$nv(″,$agq("rr","",$xwh.$cw.$pg.$mn)));$dw();
?>
其中,$pg、$mn、$cw、$xwh是进行了代码插入、base64编码后的变量,通过对这些参数去除混淆代码rr以及base64解码后,可以得知函数$nv回源后的函数为create_function。
C2.利用抽象语法树分析可疑文件;
利用词法分析器和语法分析器从源代码中获取抽象语法树,然后进行模式匹配。抽象语法树分析是将待检测的可疑文件代码与WebShell文件分别构建抽象语法树,将两棵抽象语法树的子树根据根节点类型分别进行分类,抽取出公共子树部分。
C3.与特征库(I)进行匹配;
特征库I是通过对WebShell文件经常利用的系统函数、上传功能等函数进行抽取形成。
WebShell文件中通常会使用到一些函数,例如读写文件函数、上传文件函数,为了达到攻击的目的甚至会调用一些系统函数,打开文件、读写文件的函数,如:fopen()、fwirte()、fread()等,系统函数例如:system()等;
本发明实施例中,具体通过对1000多个WebShell文件进行源码级别的分析,从中得到最能表述WebShell文件特征的函数组成特征库I。
C4.是否匹配成功?
C5.是,则该文件是WebShell,该文件检测结束;
C6.否则,继续以下步骤,经过此过程检测后的剩余可疑文件集记为S;
D.无关代码剔除过程(如图5):
D1.读取S中的可疑文件;
D2.剔除出无关代码;
为了躲避查杀,许多WebShell文件中会插入大量代码注释以及无逻辑的语句等;无关代码剔除环节主要是剔除这部分无用代码。例如,针对杂乱的PHP代码文件中大量的代码注释以及无逻辑的语句代码,通过进行源码扫描,能够去除大量干扰注释。在剔除大量无关代码后,能够还原出该文件的行为是一个WebShell文件。
除了剔除不同语言的注释之外,还能剔除的类型包括:对字符串的拼接,例如func('a'+'b')==>func('ab'),剔除多余的运算符;另外,剔除多余空格,例如int a=b==>int a=b,剔除多余的空格;除此之外还包括一些编码转化,转化为正常ASCII码的情况,例如base64(fdsafdsa)==>1。本发明的剔除无关代码操作中主要是对这几类的代码进行剔除,以此保留文件的特征行为,完成对文件的检测识别。
D3.将剔除了无关代码的文件与特征库K进行匹配;
K是剔除了无关代码的已知WebShell文件组成的特征库。
对于变形的、加密的WebShell文件,通过进行D2中的无关代码剔除过程,抽取出WebShell文件特征行为,作为特征库K。
D4.是否匹配成功?
D5.是,则该文件是WebShell,该文件检测结束;
D6.否则,继续以下步骤,经过此过程检测后的剩余可疑文件集记为R;
E.数学公式检测过程(如图6):
E1.根据信息熵(ie)、最长单词(lw)以及重合指数(ic)对R中文件的代码混淆程度进行判断;
对于ie代表信息熵,一个系统越是有序信息熵会越低,一个系统越是混乱,信息熵就越高。如果一个系统S内存在多个时间S={E1,…,En},每个事件的几率分布P={P1,...,Pn},则每个事件本身的信息熵为:ie=-log2Pi,这个数值并不是太好计算,本发明实施例通过转换ie=ie*ie/6计算得到。
对于重合指数,ic=Σ(fi*(fi-1))/N(N-1),其中fi代表样本中某个字母出现的比率,N代表字母出现在样本中的个数,但是,计算出的ic的数值不利于后续的计算,本发明实施例通过ic=0.08/ic处理,计算得到ic值,能够让ic的数值更方便计算。
对于最长单词数,只要找到文件中最长的单词的个数即可,记为lw;若最长单词数大于且不包括1000,则赋予lw的最终值15;若值在1000(包括1000)到500(不包括500)之间,lw的最终值为10;500(包括500)到300(不包括300)之间为5;300(包括300)到0(包括0)之间赋值为0。对于赋值区间的选取以及赋值是通过大量的测试得出,当选值为以上这些值时误报率更低。
计算得到可疑文件ic、ie、lw值,将三者之和作为该文件的混淆程度权值F,即F=ic+ie+lw。
E2.混淆程度权值F是否大于设定阈值?
设定阈值,经过大量测试,总结出当阈值取30时,结果误报率更低,所以当一个文件的F>30时,则判定该文件为WebShell文件。
E3.是,则说明是WebShell文件;
E4.否则,则说明不是WebShell文件;
至此,检测结束。
下面通过实例对本发明做进一步说明。
实施例:
假设一个用C语言编写的C/S模式的应用中,管理端是一台以windows为操作系统的终端电脑M,代理端是一台以Linux为系统的服务器S,当前用户为Admin,登录管理端M,并且连接到代理端S,用户可以对网站WebShell进行扫描。
假定用户Admin选择对网站目录www进行WebShell扫描,并且用户的网站目录下存在的WebShell类型是:一句话WebShell文件F,具体通过如下步骤,对www目录进行扫描,检测是否存在WebShell文件:
1)开始:
2)从M端传输:对www目录进行WebShell文件扫描命令;
3)S端接收M端传入的信息,根据命令对www目录进行扫描;
4)获取目录下的文件信息,包括文件的文件的名称、创建时间、类型以及引用的次数;
5)获取文件的名称为F.asp,类型是asp,创建时间是2016.5.12.14.12,被引用次数为0次;
6)与文件F创建时间间隔小于5分钟的文件分为一组;
7)计算文件F所在组的文件个数,个数为1,小于5;
8)文件F被归到T1中;
9)文件F的引用次数为0次,小于5;
10)文件F被归到T2中;
11)文件F的类型为asp,被归到T3中;
12)T1与T2取并集,与T3取交集,最终被归到T中;
13)读取T中的F文件,与建立的特征库H进行匹配;
14)匹配不成功,F文件归入Q,继续以下步骤;
15)检测Q中的F,对F进行变量回源、函数回源、解码操作,保存为文件F1;
16)利用抽象语法树将F1解析,与特征库I进行匹配;
17)匹配不成功,继续以下步骤,F被归入S;
18)F与已知WebShell文件进行对比;
19)剔除F中无关代码,形成文件F2;
20)剔除出已知WebShell无关代码,形成特征库K;
21)将F2与K进行破匹配;
22)匹配不成功,则继续进行以下步骤;
23)F归入文件集R;
24)读取R中的F文件;
25)计算F中的ie、lw、ic的值,将三者相加;
26)大于30,文件是WebShell,输出结果;
27)结束。
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

Claims (10)

1.一种WebShell检测方法,所述检测方法基于变量回溯和抽象语法树,针对目录中的多个文件进行WebShell检测,包括可疑文件筛选过程、特征匹配检测过程、抽象语法树分析检测过程、无关代码剔除过程和数学公式检测过程,输出确定的WebShell文件;依次包括如下步骤:
A.可疑文件筛选过程:读取网站目录中文件,通过筛选过滤出可疑文件,得到可疑文件集T:
B.特征匹配检测过程:对筛选出的可疑文件集T,将T中的可疑文件与常见WebShell特征库H进行特征匹配检测,将匹配成功的文件识别为WebShell文件;将匹配不成功的剩余文件记为可疑文件集Q,再进行抽象语法树分析检测过程;
C.抽象语法树分析检测过程包括如下步骤:
C1.对于可疑文件集Q中加密、变形的可疑文件进行变量回源、函数回源或解码操作;
C2.利用抽象语法树分析所述疑文件集Q中的可疑文件;
C3.将所述疑文件集Q中的可疑文件与特征库I进行匹配;所述特征库I是通过对WebShell文件经常利用的函数进行抽取形成的特征库;将匹配成功的文件识别为WebShell文件;将匹配不成功的剩余文件记为可疑文件集S,再进行无关代码剔除过程;
D.无关代码剔除过程:读取可疑文件集S中的可疑文件,剔除出无关代码;将所述剔除出无关代码之后的文件,再与特征库K进行匹配;所述特征库K具体是对已知的WebShell文件进行源码分析,剔除出无关代码后而形成;将匹配成功的文件识别为WebShell文件;将匹配不成功的剩余文件记为可疑文件集R,再进行数学公式检测过程;
E.数学公式检测过程,具体包括以下步骤:
E1.根据信息熵ie、最长单词数lw和重合指数ic,计算得到可疑文件集R中的文件的代码混淆程度值;
E2.设定混淆程度阈值,当文件的代码混淆程度值大于所述设定的混淆程度阈值时,将该文件识别为WebShell文件;反之,将该文件识别为不是WebShell文件;
至此完成检测,输出确定的WebShell文件。
2.如权利要求1所述检测方法,其特征是,步骤A具体通过如下步骤得到可疑文件集:
A1.根据文件的创建时间筛选出WebShell可疑文件,将所述可疑文件的集合记为T1;
A2.根据文件的相互关联筛选出WebShell可疑文件,将所述可疑文件的集合记为T2;
A3.根据文件类型筛选出WebShell可疑文件,将所述可疑文件的集合记为T3;
A4.取T1与T2的并集后,再与T3取交集,得到最终的可疑文件集T,即T=(T1∪T2)∩T3。
3.如权利要求2所述检测方法,其特征是,所述根据文件的创建时间筛选出可疑文件,具体是:首先根据文件创建时间进行分组;设置文件创建时间的间隔阈值,将两个文件创建时间的时间间隔小于所设置的间隔阈值的文件放到一个分组中,通过这种方式将所有文件进行分组;计算每个分组中的文件个数;再设置文件个数阈值,当分组的文件个数小于等于文件个数阈值时,将这组文件识别为可疑WebShell文件,记录在时间检测可疑文件集T1中。
4.如权利要求2所述检测方法,其特征是,所述根据文件的相互关联筛选出WebShell可疑文件,具体是:设定引用次数阈值,将引用次数小于引用次数阈值的文件分为一组,引用次数大于等于引用次数阈值的文件分为另一组;再将引用次数小于引用次数阈值的文件识别为可疑WebShell文件,记录在引用检测可疑文件集T2中。
5.如权利要求2所述检测方法,其特征是,所述根据文件类型筛选出可疑文件,具体是:将执行类文件类型识别为WebShell可疑文件,将所述可疑文件的集合记为T3;所述执行类文件类型包括asp、jsp、php、txt和pl类型。
6.如权利要求1所述检测方法,其特征是,所述数学公式检测过程中,信息熵ie的取值通过式1计算得到:
ie=ie*ie/6 (式1)
式1中,ie=-log2Pi;Pi为系统S内存在多个时间S={E1,…,En}时,每个事件的几率分布,P={P1,..,Pi,…,Pn}。
7.如权利要求1所述检测方法,其特征是,所述数学公式检测过程中,重合指数ic通过式2计算得到:
ic=0.08/ic (式2)
式2中,ic=Σ(fi*(fi-1))/N(N-1);其中,fi代表样本中某个字母出现的比率;N代表字母出现在样本中的个数。
8.如权利要求1所述检测方法,其特征是,所述数学公式检测过程中,最长单词数lw根据文件中最长的单词的个数来赋值;当最长单词数大于1000时,赋予lw的最终值为15;当最长单词数小于等于1000且大于500时,赋予lw的最终值为10;当最长单词数小于等于500且大于300时,赋予lw的最终值为5;当最长单词数小于等于300且大于等于0时,赋予lw的最终值为0。
9.如权利要求1所述检测方法,其特征是,步骤E1将信息熵ie、最长单词数lw和重合指数ic三者之和作为文件的混淆程度权值F,即F=ic+ie+lw。
10.一种基于变量回溯和抽象语法树的Webshell检测装置,所述检测装置包括:可疑文件筛选单元、特征匹配单元、抽象语法树检测分析单元、剔除无关代码单元和数学公式检测单元;其中:
可疑文件筛选单元,用于筛选得到WebShell文件的可疑文件集,包括文件类型筛选子单元、创建时间筛选子单元和文件引用筛选子单元;
特征匹配单元,用于建立特征库,并将特征库与可疑文件筛选单元中筛选出的可疑文件集进行匹配,检测出一部分WebShell文件;余下的可疑文件为加密或变形的文件,构成新的可疑文件集,输入到抽象语法树检测分析单元;
抽象语法树检测分析单元,通过对输入的可疑文件集中的文件进行函数回源、变量回源、解码操作以及抽象语法树分析检测,检测出一部分WebShell文件;余下的可疑文件构成新的可疑文件集,输入到剔除无关代码单元;
剔除无关代码单元,通过剔除可疑文件中的无关代码并提取出已知的WebShell文件中的无关代码,将剔除无关代码后的可疑文件与提取出无关代码后的已知WebShell文件进行比较,检测出一部分WebShell文件;余下的可疑文件构成新的可疑文件集,输入到数学公式检测单元;
数学公式检测单元,通过信息熵、最长单词数和重叠指数计算得到可疑文件中的混淆程度,检测出一部分WebShell文件;余下的可疑文件则不是WebShell文件;
通过以上单元实现对WebShell文件的检测。
CN201610995538.XA 2016-11-11 2016-11-11 一种WebShell文件的检测方法和装置 Active CN106572117B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610995538.XA CN106572117B (zh) 2016-11-11 2016-11-11 一种WebShell文件的检测方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610995538.XA CN106572117B (zh) 2016-11-11 2016-11-11 一种WebShell文件的检测方法和装置

Publications (2)

Publication Number Publication Date
CN106572117A CN106572117A (zh) 2017-04-19
CN106572117B true CN106572117B (zh) 2019-10-18

Family

ID=58542456

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610995538.XA Active CN106572117B (zh) 2016-11-11 2016-11-11 一种WebShell文件的检测方法和装置

Country Status (1)

Country Link
CN (1) CN106572117B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108304369B (zh) * 2017-05-03 2020-12-01 腾讯科技(深圳)有限公司 一种文件类型的识别方法和装置
CN107294982B (zh) * 2017-06-29 2021-12-21 深信服科技股份有限公司 网页后门检测方法、装置及计算机可读存储介质
CN108171014B (zh) * 2017-12-29 2022-01-07 安天科技集团股份有限公司 一种rtf可疑文件的检测方法、系统及存储介质
CN110096872B (zh) * 2018-01-30 2022-04-05 中国移动通信有限公司研究院 网页入侵脚本攻击工具的检测方法及服务器
CN110457933B (zh) * 2018-05-07 2022-08-23 安天科技集团股份有限公司 基于深度拆解能力的去隐私化威胁检测方法及系统
CN109462575B (zh) * 2018-09-28 2021-09-07 东巽科技(北京)有限公司 一种webshell检测方法及装置
CN109657467A (zh) * 2018-11-26 2019-04-19 北京兰云科技有限公司 一种网页后门检测方法和装置、计算机可读存储介质
CN109905396A (zh) * 2019-03-11 2019-06-18 北京奇艺世纪科技有限公司 一种WebShell文件检测方法、装置及电子设备
CN110162973B (zh) * 2019-05-24 2021-04-09 新华三信息安全技术有限公司 一种Webshell文件检测方法及装置
CN112307473A (zh) * 2019-08-01 2021-02-02 四川大学 一种基于Bi-LSTM网络和注意力机制的恶意JavaScript代码检测模型
CN110851840B (zh) * 2019-11-13 2022-03-11 杭州安恒信息技术股份有限公司 基于网站漏洞的web后门检测方法及装置
CN111385295B (zh) * 2020-03-04 2022-11-22 深信服科技股份有限公司 一种WebShell检测方法、装置、设备及存储介质
CN111475809B (zh) * 2020-04-09 2023-10-20 杭州奇盾信息技术有限公司 脚本混淆检测方法、装置、计算机设备和存储介质
CN113746784B (zh) * 2020-05-29 2023-04-07 深信服科技股份有限公司 一种数据检测方法、系统及相关设备
CN112817877B (zh) * 2021-04-19 2021-07-13 腾讯科技(深圳)有限公司 异常脚本检测方法、装置、计算机设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101482847B (zh) * 2009-01-19 2011-06-29 北京邮电大学 一种基于安全漏洞缺陷模式的检测方法
CN104967616A (zh) * 2015-06-05 2015-10-07 北京安普诺信息技术有限公司 一种Web服务器中的WebShell文件的检测方法
CN105303109A (zh) * 2015-09-22 2016-02-03 电子科技大学 一种恶意代码情报检测分析方法及系统

Also Published As

Publication number Publication date
CN106572117A (zh) 2017-04-19

Similar Documents

Publication Publication Date Title
CN106572117B (zh) 一种WebShell文件的检测方法和装置
CN109922052B (zh) 一种结合多重特征的恶意url检测方法
CN107368417B (zh) 一种漏洞挖掘技术测试模型的测试方法
CN105068925B (zh) 软件安全缺陷发现系统
CN109753800A (zh) 融合频繁项集与随机森林算法的Android恶意应用检测方法及系统
CN109711163B (zh) 基于api调用序列的安卓恶意软件检测方法
CN107659570A (zh) 基于机器学习与动静态分析的Webshell检测方法及系统
CN105069355A (zh) webshell变形的静态检测方法和装置
CN107341399B (zh) 评估代码文件安全性的方法及装置
CN108985064B (zh) 一种识别恶意文档的方法及装置
CN107454118A (zh) 验证码获取方法及装置、登录方法及系统
CN112685771A (zh) 日志脱敏方法、装置、设备及存储介质
CN104866764B (zh) 一种基于对象引用图的Android手机恶意软件检测方法
CN112989348A (zh) 攻击检测方法、模型训练方法、装置、服务器及存储介质
CN112688966A (zh) webshell检测方法、装置、介质和设备
CN110020161B (zh) 数据处理方法、日志处理方法和终端
CN110287700B (zh) 一种iOS应用安全分析方法及装置
CN111651768A (zh) 计算机二进制程序的链接库函数名识别方法及装置
CN115168847A (zh) 应用补丁生成方法、装置、计算机设备及可读存储介质
CN108171057B (zh) 基于特征匹配的Android平台恶意软件检测方法
Akram et al. VCIPR: vulnerable code is identifiable when a patch is released (hacker's perspective)
CN107392033B (zh) 一种安卓设备渗透测试系统及其自动化渗透测试方法
CN116932381A (zh) 小程序安全风险自动化评估方法及相关设备
CN114792006B (zh) 基于lstm的安卓跨应用程序共谋安全分析方法及系统
CN108427882B (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