CN106650437A - webshell检测方法和装置 - Google Patents
webshell检测方法和装置 Download PDFInfo
- Publication number
- CN106650437A CN106650437A CN201611250018.2A CN201611250018A CN106650437A CN 106650437 A CN106650437 A CN 106650437A CN 201611250018 A CN201611250018 A CN 201611250018A CN 106650437 A CN106650437 A CN 106650437A
- Authority
- CN
- China
- Prior art keywords
- normalization
- valid code
- code
- syntax tree
- abstract syntax
- 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
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/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供一种webshell检测方法和装置,应用于服务器,包括:从网页代码中提取出有效代码;基于所述有效代码生成对应的抽象语法树;基于所述抽象语法树对所述有效代码进行归一化计算,并根据归一化计算结果修改所述抽象语法树;基于修改后的抽象语法树生成归一化后的有效代码;调用检测模块对所述归一化后的有效代码进行webshell检测。本申请技术方案可以提高webshell检测的精确度,同时还可以节省存储资源,加快匹配速率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种webshell检测方法和装置。
背景技术
随着互联网技术的高速发展,基于web环境的互联网应用越来越广泛,用户对web应用安全的关注度也逐渐升温。
webshell是以PHP(PHP:Hypertext Preprocessor,超文本预处理器)、JSP(JavaServer Pages,Java服务器页面)、ASP(Active Server Pages,动态服务器页面)等网页文件形式存在的一种命令执行环境,也可以称为一种网页后门。入侵者在入侵网站后,可以将webshell与网站服务器保存在web目录下的正常网页文件混在一起。后续入侵者可以通过浏览器访问webshell,从而实现对网站服务器的控制,例如:删除web页面、修改主页、上传下载文件、查看数据库、执行任意程序命令等。
相关技术中,通常可以由服务器将网页代码与特征规则库进行匹配,如果匹配成功,则可以确定该网页文件中存在webshell。然而,采用这样的方式难以精确地检测出webshell,例如:无法检测出经过编码或字符串变换的webshell,因此误判率较高,对保障服务器的安全造成影响。
发明内容
有鉴于此,本申请提供一种webshell检测方法和装置,以解决相关技术中webshell检测的精确度低的问题。
具体地,本申请是通过如下技术方案实现的:
第一方面,本申请提供一种webshell检测方法,所述方法应用于服务器,包括:
从网页代码中提取出有效代码;
基于所述有效代码生成对应的抽象语法树;
基于所述抽象语法树对所述有效代码进行归一化计算,并根据归一化计算结果修改所述抽象语法树;
基于修改后的抽象语法树生成归一化后的有效代码;
调用检测模块对所述归一化后的有效代码进行webshell检测。
第二方面,本申请提供一种webshell检测装置,所述装置应用于服务器,包括:
提取单元,用于从网页代码中提取出作为有效代码;
树生成单元,用于基于所述有效代码生成对应的抽象语法树;
归一化计算单元,用于基于所述抽象语法树对所述有效代码进行归一化计算,并根据归一化计算结果修改所述抽象语法树;
代码生成单元,用于基于修改后的抽象语法树生成归一化后的有效代码;
调用单元,用于调用检测模块对所述归一化后的有效代码进行webshell检测。
分析上述技术方案可知,服务器可以先基于抽象语法树对网页文件中的有效代码进行归一化计算,再调用检测模块,将归一化后的有效代码与特征规则库进行匹配,如果匹配成功,则可以确定该网页文件中存在webshell。与相关技术相比,采用这样的方式可以避免编码或字符串变换等因素对特征匹配的影响,从而可以显著提高服务器webshell检测的精确度,同时还可以节省存储资源,加快匹配速率。
附图说明
图1是本申请一示例性实施例示出的一种webshell检测方法的流程图;
图2是一种抽象语法树的示例;
图3是另一种抽象语法树的示例;
图4是另一种抽象语法树的示例;
图5是本申请一示例性实施例示出的一种webshell检测装置所在设备的硬件结构图;
图6是本申请一示例性实施例示出的一种webshell检测装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
请参考图1,为本申请一示例性实施例示出的一种webshell检测方法,所述方法可以应用在服务器上,比如:web服务器等,所述方法包括如下步骤:
步骤101:从网页代码中提取出有效代码。
网页代码可以分为前端代码和后端代码两部分,而webshell通常存在于后端代码中。在本实施例中,服务器可以定期从网页文件所对应的网页代码中提取出后端代码,并将提取出的后端代码作为有效代码。在实际应用中,网页文件通常可采用PHP、JSP、ASP等编写,不同的编程语言符合各自特定的编写规则,服务器可以根据不同编程语言的编写规则所指定的字符对网页代码中的前端代码和后端代码进行区分。
以如下采用PHP编写的网页代码为例:
在这个例子中,<?php?>内的代码为后端代码,而<?php?>外的代码均为前端代码。针对该PHP网页代码,服务器可以提取出echo'<p>Hello World</p>';作为有效代码。
步骤102:基于所述有效代码生成对应的抽象语法树。
在本实施例中,服务器在提取出有效代码后,可以基于所述有效代码生成对应的抽象语法树。
步骤103:基于所述抽象语法树对所述有效代码进行归一化计算,并根据归一化计算结果修改所述抽象语法树。
在本实施例中,服务器可以遍历生成的抽象语法树,从而基于所述抽象语法树对提取出的有效代码进行归一化计算,并根据归一化计算结果修改所述抽象语法树。通常,服务器可以从叶子节点开始遍历所述抽象语法树。所述归一化计算可以包括:变量替换、函数预计算、操作符预计算等。
以操作符预计算为例,假设服务器提取出的有效代码为四则运算表达式1+3*(4-1)+2,则生成的抽象语法树如图2所示。
服务器可以从叶子节点开始遍历该抽象语法树,则首先计算的是sub(4-1),即4-1=3,后续服务器可以删除节点4和节点1,并将该抽象语法树的节点sub(-)修改为节点3,形成图3所示的抽象语法树。
下一步计算的是mul(3*3),即3×3=9,后续服务器可以删除两个节点3,并将该抽象语法树的节点mul(*)修改为节点9,形成图4所示的抽象语法树。
以此类推,图2所示的抽象语法树在修改后,仅有一个节点12。
步骤104:基于修改后的抽象语法树生成归一化后的有效代码。
在本实施例中,服务器在完成对所述抽象语法树的修改后,可以基于修改后的抽象语法树生成归一化后的有效代码。
以步骤103中的举例为例,假设服务器提取出的有效代码为:
1+3*(4-1)+2;
则服务器在基于抽象语法树对该有效代码进行操作符预计算后,新生成的归一化后的有效代码为:
12;
再如,假设服务器提取出的有效代码为:
$a=123;
$b=$a;
则服务器在基于抽象语法树对该有效代码进行变量替换后,新生成的归一化后的有效代码为:
$b=123;
在另一个例子中,假设服务器提取出的有效代码为:
function abc(){
return 1;
}
abc()+3;
则服务器在基于抽象语法树对该有效代码进行函数预计算后,新生成的归一化后的有效代码为:
4;
以如下采用PHP编写的后端代码为例:
则服务器在提取出有效代码,并基于抽象语法树对该有效代码进行归一化计算后,新生成的归一化后的有效代码如下所示:
$as="dfs";
$dd=23;
$xc=5;
23;
"dfseffdfsret";
$v=24.123;
步骤105:调用检测模块对所述归一化后的有效代码进行webshell检测。
在本实施例中,服务器在得到归一化后的有效代码后,可以调用检测模块对所述归一化后的有效代码进行webshell检测。其中,所述检测模块可以是基于特征匹配的webshell检测引擎,所述webshell检测引擎可以通过软件实现。
在一个可选的实施例中,检测模块可以采用相关技术对所述归一化后的有效代码进行webshell检测,包括如下步骤:将所述归一化后的有效代码与预设的特征规则库进行匹配;当所述归一化后的有效代码匹配所述特征规则库时,确定所述网页文件为webshell文件。例如,所述特征规则库中可以包括eval($_POST,用于检测PHP一句话木马。
需要说明的是,在相关技术中,经过编码或字符串变换的特征也要添加到特征规则库中,以检测出经过编码或字符串变换的webshell。然而在本技术方案中,由于预先对网页文件中的有效代码进行了归一化计算,因此只需在特征规则库中添加原始特征即可,无需将编码或字符串变换后的特征也添加到特征规则库中,节省了存储资源。
由上述实施例可见,服务器可以先基于抽象语法树对网页文件中的有效代码进行归一化计算,再调用检测模块,将归一化后的有效代码与特征规则库进行匹配,如果匹配成功,则可以确定该网页文件中存在webshell。与相关技术相比,采用这样的方式可以避免编码或字符串变换等因素对特征匹配的影响,从而可以显著提高服务器webshell检测的精确度,同时还可以节省存储资源,加快匹配速率。
与前述webshell检测方法的实施例相对应,本申请还提供了webshell检测装置的实施例。
本申请webshell检测装置的实施例可以应用在服务器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在服务器的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请webshell检测装置所在服务器的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的服务器通常根据该webshell检测的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图6,为本申请一示例性实施例示出的webshell检测装置的框图。该webshell检测装置600可以应用于图5所示的服务器中,包括:
提取单元601,用于从网页代码中提取出作为有效代码;
树生成单元602,用于基于所述有效代码生成对应的抽象语法树;
归一化计算单元603,用于基于所述抽象语法树对所述有效代码进行归一化计算,并根据归一化计算结果修改所述抽象语法树;
代码生成单元604,用于基于修改后的抽象语法树生成归一化后的有效代码;
调用单元605,用于调用检测模块对所述归一化后的有效代码进行webshell检测。
在一个可选的实施例中,所述归一化计算包括:变量替换、函数预计算、操作符预计算。
在另一个可选的实施例中,所述提取单元601具体用于从网页代码中提取出后端代码作为有效代码。
在另一个可选的实施例中,所述归一化计算单元603具体用于从叶子节点开始,基于所述抽象语法树对所述有效代码进行归一化计算,并根据归一化计算结果修改所述抽象语法树。
在另一个可选的实施例中,检测模块对所述归一化后的有效代码进行webshell检测,包括:
将所述归一化后的有效代码与预设的特征规则库进行匹配;
当所述归一化后的有效代码匹配所述特征规则库时,确定所述网页文件中存在webshell。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种webshell检测方法,其特征在于,所述方法应用于服务器,包括:
从网页代码中提取出有效代码;
基于所述有效代码生成对应的抽象语法树;
基于所述抽象语法树对所述有效代码进行归一化计算,并根据归一化计算结果修改所述抽象语法树;
基于修改后的抽象语法树生成归一化后的有效代码;
调用检测模块对所述归一化后的有效代码进行webshell检测。
2.根据权利要求1所述的方法,其特征在于,所述归一化计算包括:变量替换、函数预计算、操作符预计算。
3.根据权利要求1所述的方法,其特征在于,所述从网页代码中提取出有效代码,包括:
从网页代码中提取出后端代码作为有效代码。
4.根据权利要求1所述的方法,其特征在于,所述基于所述抽象语法树对所述有效代码进行归一化计算,包括:
从叶子节点开始,基于所述抽象语法树对所述有效代码进行归一化计算。
5.根据权利要求1所述的方法,其特征在于,检测模块对所述归一化后的有效代码进行webshell检测,包括:
将所述归一化后的有效代码与预设的特征规则库进行匹配;
当所述归一化后的有效代码匹配所述特征规则库时,确定所述网页文件中存在webshell。
6.一种webshell检测装置,其特征在于,所述装置应用于服务器,包括:
提取单元,用于从网页代码中提取出作为有效代码;
树生成单元,用于基于所述有效代码生成对应的抽象语法树;
归一化计算单元,用于基于所述抽象语法树对所述有效代码进行归一化计算,并根据归一化计算结果修改所述抽象语法树;
代码生成单元,用于基于修改后的抽象语法树生成归一化后的有效代码;
调用单元,用于调用检测模块对所述归一化后的有效代码进行webshell检测。
7.根据权利要求6所述的装置,其特征在于,所述归一化计算包括:变量替换、函数预计算、操作符预计算。
8.根据权利要求6所述的装置,其特征在于,所述提取单元具体用于从网页代码中提取出后端代码作为有效代码。
9.根据权利要求6所述的装置,其特征在于,所述归一化计算单元具体用于从叶子节点开始,基于所述抽象语法树对所述有效代码进行归一化计算,并根据归一化计算结果修改所述抽象语法树。
10.根据权利要求6所述的装置,其特征在于,检测模块对所述归一化后的有效代码进行webshell检测,包括:
将所述归一化后的有效代码与预设的特征规则库进行匹配;
当所述归一化后的有效代码匹配所述特征规则库时,确定所述网页文件中存在webshell。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611250018.2A CN106650437A (zh) | 2016-12-29 | 2016-12-29 | webshell检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611250018.2A CN106650437A (zh) | 2016-12-29 | 2016-12-29 | webshell检测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106650437A true CN106650437A (zh) | 2017-05-10 |
Family
ID=58836541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611250018.2A Pending CN106650437A (zh) | 2016-12-29 | 2016-12-29 | webshell检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106650437A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107612926A (zh) * | 2017-10-12 | 2018-01-19 | 成都知道创宇信息技术有限公司 | 一种基于客户端识别的一句话WebShell拦截方法 |
CN109635175A (zh) * | 2018-11-06 | 2019-04-16 | 北京字节跳动网络技术有限公司 | 页面数据拼接方法、装置、可读存储介质和电子设备 |
CN110309629A (zh) * | 2019-06-18 | 2019-10-08 | 阿里巴巴集团控股有限公司 | 一种网页代码加固方法、装置及设备 |
WO2020211380A1 (zh) * | 2019-04-15 | 2020-10-22 | 深圳壹账通智能科技有限公司 | 页面设计中前端代码的智能识别方法及相关设备 |
CN112688966A (zh) * | 2021-03-11 | 2021-04-20 | 北京邮电大学 | webshell检测方法、装置、介质和设备 |
CN113010182A (zh) * | 2021-03-25 | 2021-06-22 | 北京百度网讯科技有限公司 | 升级文件的生成方法、装置和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799524A (zh) * | 2012-07-03 | 2012-11-28 | 天津大学 | 一种浏览器扩展的缺陷检测方法 |
CN104331663A (zh) * | 2014-10-31 | 2015-02-04 | 北京奇虎科技有限公司 | web shell的检测方法以及web服务器 |
CN105069355A (zh) * | 2015-08-26 | 2015-11-18 | 厦门市美亚柏科信息股份有限公司 | webshell变形的静态检测方法和装置 |
CN105303109A (zh) * | 2015-09-22 | 2016-02-03 | 电子科技大学 | 一种恶意代码情报检测分析方法及系统 |
-
2016
- 2016-12-29 CN CN201611250018.2A patent/CN106650437A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799524A (zh) * | 2012-07-03 | 2012-11-28 | 天津大学 | 一种浏览器扩展的缺陷检测方法 |
CN104331663A (zh) * | 2014-10-31 | 2015-02-04 | 北京奇虎科技有限公司 | web shell的检测方法以及web服务器 |
CN105069355A (zh) * | 2015-08-26 | 2015-11-18 | 厦门市美亚柏科信息股份有限公司 | webshell变形的静态检测方法和装置 |
CN105303109A (zh) * | 2015-09-22 | 2016-02-03 | 电子科技大学 | 一种恶意代码情报检测分析方法及系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107612926A (zh) * | 2017-10-12 | 2018-01-19 | 成都知道创宇信息技术有限公司 | 一种基于客户端识别的一句话WebShell拦截方法 |
CN107612926B (zh) * | 2017-10-12 | 2020-09-29 | 成都知道创宇信息技术有限公司 | 一种基于客户端识别的一句话WebShell拦截方法 |
CN109635175A (zh) * | 2018-11-06 | 2019-04-16 | 北京字节跳动网络技术有限公司 | 页面数据拼接方法、装置、可读存储介质和电子设备 |
CN109635175B (zh) * | 2018-11-06 | 2021-12-31 | 北京字节跳动网络技术有限公司 | 页面数据拼接方法、装置、可读存储介质和电子设备 |
WO2020211380A1 (zh) * | 2019-04-15 | 2020-10-22 | 深圳壹账通智能科技有限公司 | 页面设计中前端代码的智能识别方法及相关设备 |
CN110309629A (zh) * | 2019-06-18 | 2019-10-08 | 阿里巴巴集团控股有限公司 | 一种网页代码加固方法、装置及设备 |
CN110309629B (zh) * | 2019-06-18 | 2023-10-10 | 创新先进技术有限公司 | 一种网页代码加固方法、装置及设备 |
CN112688966A (zh) * | 2021-03-11 | 2021-04-20 | 北京邮电大学 | webshell检测方法、装置、介质和设备 |
CN113010182A (zh) * | 2021-03-25 | 2021-06-22 | 北京百度网讯科技有限公司 | 升级文件的生成方法、装置和电子设备 |
CN114816467A (zh) * | 2021-03-25 | 2022-07-29 | 北京百度网讯科技有限公司 | 升级文件的生成方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106650437A (zh) | webshell检测方法和装置 | |
CN108259494B (zh) | 一种网络攻击检测方法及装置 | |
CN107766344B (zh) | 一种模板渲染的方法、装置及浏览器 | |
CN107257390B (zh) | 一种url地址的解析方法和系统 | |
CN108763274B (zh) | 访问请求的识别方法、装置、电子设备及存储介质 | |
US20160092591A1 (en) | Clustering repetitive structure of asynchronous web application content | |
CN102664874B (zh) | 一种安全登陆的方法和系统 | |
CN104079559B (zh) | 一种网址安全性检测方法、装置及服务器 | |
CN105653949B (zh) | 一种恶意程序检测方法及装置 | |
US20210105298A1 (en) | Detecting webpages that share malicious content | |
CN106022132A (zh) | 一种基于动态内容分析的网页木马实时检测方法 | |
CN104881607A (zh) | 一种基于模拟浏览器行为的xss漏洞检测系统 | |
CN104346148A (zh) | 获取程序性能消耗信息的方法、装置及系统 | |
CN110581864B (zh) | 一种sql注入攻击的检测方法及装置 | |
CN110750750A (zh) | 网页生成方法、装置、计算机设备和存储介质 | |
CN106250761B (zh) | 一种识别web自动化工具的设备、装置及方法 | |
CN108234474A (zh) | 一种网站识别的方法和装置 | |
CN113312618A (zh) | 程序漏洞检测方法、装置、电子设备及介质 | |
CN108062474A (zh) | 文件的检测方法及装置 | |
Hu et al. | Cross-site scripting detection with two-channel feature fusion embedded in self-attention mechanism | |
CN107239387A (zh) | 一种数据异常检测方法及终端 | |
CN103581321B (zh) | 一种refer链的创建方法、装置及安全检测方法和客户端 | |
CN106911686B (zh) | WebShell检测方法及装置 | |
CN110263540A (zh) | 一种代码标识方法及装置 | |
CN115659344A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170510 |