CN109684844A - 一种webshell检测方法及装置 - Google Patents
一种webshell检测方法及装置 Download PDFInfo
- Publication number
- CN109684844A CN109684844A CN201811613317.7A CN201811613317A CN109684844A CN 109684844 A CN109684844 A CN 109684844A CN 201811613317 A CN201811613317 A CN 201811613317A CN 109684844 A CN109684844 A CN 109684844A
- Authority
- CN
- China
- Prior art keywords
- data
- label
- sample
- default
- sample data
- 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.)
- Granted
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/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种webshell检测方法及装置,其中方法包括:获取M个样本数据,解析得到每个样本数据对应的DOM树型结构,进而确定每个样本数据对应的特征序列,并使用P个黑样本数据的特征序列和Q个白样本数据的特征序列进行模型训练,得到二分类预测模型,使用二分类预测模型对待检测样本数据进行预测,确定待检测样本数据是否为webshell网页数据。本发明实施例基于前端网页特征对webshell网页数据和正常web网页数据进行模型训练,相比于现有技术基于后台程序检测webshell网页数据来说,能够避免修改后台程序所导致的检测不准确的技术问题,从而可以提高webshell网页数据检测的准确性。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种webshell检测方法及装置。
背景技术
随着网络技术的发展,用户逐渐倾向于通过网络传递信息以及保存隐私数据,比如,用户可以通过服务器访问全球局域网(World Wide Web,web)网页,并可以在web网页上执行下载或上传等操作;相应地,web网页所属的源网站可以根据用户的操作为用户提供服务。然而,由于web所提供的功能日益增多与复杂,安全隐患也由此增多,比如黑客可以在入侵源网站后,将Webshell数据(比如asp、php木马后门文件)放置在源网站对应的web目录中,与正常的web后台程序混合在一起,通过访问上传的webshell后门路径,从而可以通过源网站运行webshell数据形成webshell网页,并能够通过webshell网页实现上传或下载文件、查看数据库、执行任意程序命令等操作,窃取用户的隐私数据或信息,攻击服务器资源。由此可知,实现对webshell数据的准确检测,可以有效保证用户的隐私。
为了准确检测webshell数据,现有技术通常将webshell数据的后台程序和正常web数据的后台程序进行对比,确定webshell数据中包括的与正常web数据不同的一项或多项程序代码,比如,具有不同定义的函数代码、可疑行为序列、可疑特征字符等,并可以根据这些不同的后台程序对待检测样本进行分析,确定待检测样本是否为webshell数据。然而,后台程序通常具有多种编程语言,且每种编程语言也可以具有不同的编码风格和语言类型,在实际操作中,很难通过分析后台程序确定待检测样本是否为webshell数据。举例来说明,待检测样本为webshell数据,webshell数据的后台程序中包括可疑函数system,黑客可以通过将待检测样本中包含的system函数名修改为sys_tem,或者将system函数的程序拆分为sys_函数子程序和_tem函数子程序,使得待检测样本避开后台程序检测,从而使得待检测样本的检测结果为正常web数据。由此可知,通过后台程序检测的方法对待检测样本进行检测,可能会使得检测的准确性不高。
综上,目前亟需一种webshell检测方法,用以提高对websell网页数据检测的准确性。
发明内容
本发明实施例提供一种webshell检测方法,用以提高对websell网页数据检测的准确性。
本发明实施例提供的一种webshell检测方法,所述方法包括:
获取M个样本数据,所述M个样本数据包括P个黑样本数据和Q个白样本数据;所述P个黑样本数据为webshell网页数据,所述Q个白样本数据为正常web网页数据;
针对于所述M个样本数据中的每个样本数据,解析得到所述样本数据对应的DOM树型结构,所述DOM树形结构中包括多个元素和所述多个元素的文本值和属性;针对于T个预设标签中的每个预设标签,根据所述多个元素的属性,确定出所属的标签为所述预设标签的元素;根据所述多个元素中所属的标签分别为所述T个预设标签的元素的个数,确定所述样本数据对应的特征序列;
使用所述P个黑样本数据的特征序列和所述Q个白样本数据的特征序列进行模型训练,得到二分类预测模型;
使用所述二分类预测模型对待检测样本数据的特征序列进行预测,确定所述待检测样本数据是否为webshell网页数据。
可选地,所述M个样本数据为通过如下方式得到的:
获取M个测试数据,所述M个测试据包括P个webshell后台数据和Q个正常web后台数据;
针对于所述M个测试数据中的每个测试数据,获取运行所述测试数据得到的所述测试数据对应的前端网页;对所述测试数据对应的前端网页进行解析,得到所述测试数据对应的前端网页数据;若所述测试数据为webshell后台数据,则所述测试数据对应的前端网页数据为webshell网页数据;若所述测试数据为正常web后台数据,则所述测试数据对应的前端网页数据为正常web网页数据。
可选地,所述样本数据的特征序列包括2*T个分量,所述特征序列的第1~T个分量为所述T个预设标签分别对应的值,所述每个预设标签对应的值是根据所述多个元素中所属的标签为所述每个预设标签的元素的个数生成的;所述特征序列的第T+1~2*T个分量为所述多个元素中所属的标签分别为所述T个预设标签的元素的个数。
可选地,所述样本数据为白样本数据;针对于所述T个预设标签中的任一预设标签,所述预设标签对应的值通过如下方式得到:
将所述多个元素中所属的标签为所述预设标签的元素的文本值添加到所述预设标签对应的白样本特征库中;
根据所述预设标签对应的白样本特征库的权重和所述预设标签对应的白样本特征库中包括的所述样本数据的文本值的个数,确定所述预设标签对应的值。
可选地,所述样本数据为黑样本数据;针对于所述T个预设标签中的任一预设标签,所述预设标签对应的值通过如下方式得到:
针对于所述多个元素中所属的标签为所述预设标签的每个元素,若所述元素的文本值与预设标识匹配,则将所述元素的文本值添加至所述预设标签对应的高危黑样本特征库中;若所述元素的文本值与所述预设标识不匹配,则将所述元素的文本值添加至所述预设标签对应的普通黑样本特征库中;
根据所述预设标签对应的高危黑样本特征库的权重、所述预设标签对应的普通黑样本特征库的权重、所述预设标签对应的高危黑样本特征库中包括的所述样本数据的文本值的个数和所述预设标签对应的普通黑样本特征库中包括的所述样本数据的文本值的个数,确定所述预设标签对应的值。
本发明实施例提供的一种webshell检测装置,所述装置包括:
获取模块,用于获取M个样本数据,所述M个样本数据包括P个黑样本数据和Q个白样本数据;所述P个黑样本数据为webshell网页数据,所述Q个白样本数据为正常web网页数据;
确定模块,用于针对于所述M个样本数据中的每个样本数据,解析得到所述样本数据对应的DOM树型结构,所述DOM树形结构中包括多个元素和所述多个元素的文本值和属性;针对于T个预设标签中的每个预设标签,根据所述多个元素的属性,确定出所属的标签为所述预设标签的元素;根据所述多个元素中所属的标签分别为所述T个预设标签的元素的个数,确定所述样本数据对应的特征序列;
训练模块,用于使用所述P个黑样本数据的特征序列和所述Q个白样本数据的特征序列进行模型训练,得到二分类预测模型;
预测模块,用于使用所述二分类预测模型对待检测样本数据的特征序列进行预测,确定所述待检测样本数据是否为webshell网页数据。
可选地,所述获取模块还用于:
获取M个测试数据,所述M个测试据包括P个webshell后台数据和Q个正常web后台数据;
针对于所述M个测试数据中的每个测试数据,获取运行所述测试数据得到的所述测试数据对应的前端网页;对所述测试数据对应的前端网页进行解析,得到所述测试数据对应的前端网页数据;若所述测试数据为webshell后台数据,则所述测试数据对应的前端网页数据为webshell网页数据;若所述测试数据为正常web后台数据,则所述测试数据对应的前端网页数据为正常web网页数据。
可选地,所述样本数据的特征序列包括2*T个分量,所述特征序列的第1~T个分量为所述T个预设标签分别对应的值,所述每个预设标签对应的值是所述确定模块根据所述多个元素中所属的标签为所述每个预设标签的元素的个数生成的;所述特征序列的第T+1~2*T个分量为所述多个元素中所属的标签分别为所述T个预设标签的元素的个数。
可选地,所述样本数据为白样本数据;所述确定模块用于:
针对于所述T个预设标签中的每个预设标签,将所述多个元素中所属的标签为所述预设标签的元素的文本值添加到所述预设标签对应的白样本特征库中;根据所述预设标签对应的白样本特征库的权重和所述预设标签对应的白样本特征库中包括的所述样本数据的文本值的个数,确定所述预设标签对应的值。
可选地,所述样本数据为黑样本数据;所述确定模块用于:
针对于所述T个预设标签中的每个预设标签和所述多个元素中所属的标签为所述预设标签的每个元素,若所述元素的文本值与预设标识匹配,则将所述元素的文本值添加至所述预设标签对应的高危黑样本特征库中;若所述元素的文本值与所述预设标识不匹配,则将所述元素的文本值添加至所述预设标签对应的普通黑样本特征库中;根据所述预设标签对应的高危黑样本特征库的权重、所述预设标签对应的普通黑样本特征库的权重、所述预设标签对应的高危黑样本特征库中包括的所述样本数据的文本值的个数和所述预设标签对应的普通黑样本特征库中包括的所述样本数据的文本值的个数,确定所述预设标签对应的值。
本发明的上述实施例中,获取M个样本数据,M个样本数据可以包括P个webshell网页数据和Q个正常web网页数据;解析得到每个样本数据对应的DOM树型结构,DOM树形结构中包括多个元素和多个元素的文本值和属性;根据T个预设标签的元素的个数,确定每个样本数据对应的特征序列,并使用P个黑样本数据的特征序列和Q个白样本数据的特征序列进行模型训练,得到二分类预测模型;进一步地,使用二分类预测模型对待检测样本数据的特征序列进行预测,确定待检测样本数据是否为webshell网页数据。本发明实施例通过分析webshell网页数据和正常web网页数据在前端网页上显示出的区别特征,并基于该区别特征进行模型训练,可以得到基于前端页面特征的二分类预测模型,相比于现有技术基于后台程序检测webshell网页数据的方式来说,能够避免通过修改后台程序所导致的检测不准确的技术问题,使得模型训练得到的二分类模型较为准确,从而通过采用基于前端网页特征训练得到的二分类预测模型对待检测样本进行预测,可以提高websell网页数据检测的准确性;此外,本发明实施例中的样本数据为通过运行后台程序得到的前端网页数据,在后台程序的功能不发生变化的情况下,对后台程序作文字性的修改不会影响前端网页数据,从而使得即使webshell数据的后台程序发生变化,采用本发明实施例中的方案也可以检测出webshell数据。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种webshell检测方法对应的流程示意图;
图2为本发明实施例中消息处理方法的整体流程图;
图3为本发明实施例提供的一种webshell检测装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例中的方法可以包括模型训练的过程(训练阶段)和使用训练得到的模型确定待检测样本是否为webshell网页数据的过程(预测阶段),或者还包括其他的过程,比如,对待检测样本进行校验的过程等,具体不作限定。
图1为本发明实施例提供的一种webshell检测方法对应的流程示意图,该方法包括:
步骤101,获取M个样本数据。
此处,M个样本数据可以包括P个黑样本数据和Q个白样本数据,其中,P个黑样本数据可以为webshell网页数据,Q个白样本数据可以为正常web网页数据。
本发明实施例中,M个样本数据的格式可以有多种,比如可以为超文本预处理器(Hypertext Hypertext Preprocessor,php)格式,或者可以为动态服务器页面(ActiveServer Pages,asp)格式,或者也可以为Java服务器页面(Java Server Pages,jsp)格式,或者还可以为通用网关接口(Common Gateway Interface,cgi)格式。具体实施中,P个黑样本数据的格式可以相同,或者也可以不同;Q个白样本数据的格式可以相同,或者也可以不同,具体不作限定。
步骤102,确定M个样本数据中每个样本数据对应的特征序列。
样本数据A可以为M个样本数据中的任一样本数据,下面以样本数据A为例,描述样本数据A对应的特征序列的确定过程,M个样本数据中的其它样本数据对应的特征序列可以参照样本数据A对应的特征序列的确定过程进行实现。
本发明实施例中,在获取到样本数据A后,可以对样本数据A进行解析得到样本数据A对应的DOM树形结构。在一种可能的实现方式中,可以预先设置测试服务器和测试服务器对应的浏览器,测试服务器可以为WEB服务器,测试服务器对应的浏览器可以为WEB浏览器,测试服务器对应的浏览器可以设置于测试服务器中,或者也可以设置于其它设备中,具体不作限定。以测试服务器对应的浏览器设置于测试服务器中为例,具体实施中,可以将样本数据A复制或拷贝至测试服务器的存储空间中,并使用测试服务器运行样本数据A,相应地,测试服务器内设置的浏览器上会显示样本数据A对应的前端网页;此时,可以基于网络爬虫技术按照预设规则遍历样本数据A对应的前端网页,获取样本数据A对应的前端网页的代码。在一个示例中,样本数据A对应的前端网页的代码可以为超文本标记语言(HyperTextMarkup Language,HTML)格式。
图2为本发明实施例提供的一种样本数据A对应的DOM树形结构示意图,如图2所示,样本数据A对应的DOM树形结构中可以包括多个元素(如图2所示意出的元素201~元素210)和多个元素的文本值和属性。在一个示例中,如图2所示,元素201的文本值为“点击”,属性为超链接,也就是说,在样本数据A对应的前端网页上,存在一个文本值为“点击”的超链接元素201;在又一个示例中,元素202的文本值为“上传”,属性为按钮,也就是说,在样本数据A对应的前端网页上,存在一个文本值为“上传”的按钮元202素;在又一个示例中,元素207的属性为加粗,也就是说,在样本数据A对应的前端网页上,存在一个文本值加粗的元素207。需要说明的是,图2仅为示意性的描述样本数据A对应的DOM树形结构,在其它可能的实施例中,样本数据A对应的DOM树形结构包括的元素个数、元素的文本值和元素的属性均可以有多种可能,具体不作限定。
在一种可能的实现方式中,可以预先设置T个预设标签,T个预设标签可以为本领域技术人员根据实际经验进行设置,或者也可以根据实验进行确定。本发明实施例中,通过分析webshell网页数据和正常web网页数据分别对应的前端网页中包括的多个元素的区别,确定T个预设标签为超链接标签、加粗标签、按钮标签、字体格式标签和表单标签中的至少一个。
本发明实施例中,超链接标签可以用于标识前端网页中的超链接元素,用户触发超链接元素可以跳转至超链接元素所对应的超链接地址,在webshell网页数据对应的前端网页中超链接元素所对应的超链接地址可能为攻击者的网站,而正常web网页数据对应的前端网页中超链接元素所对应的超链接地址为源网站。加粗标签可以用于标识前端网页中文本值加粗的元素,webshell网页数据对应的前端网页中文本值加粗的元素通常是一些围绕这webshell功能点以及介绍的字符串。按钮标签可以用于标识前端网页中提示用户执行预设操作的元素,webshell网页数据对应的前端网页中按钮元素可以为攻击者可视化攻击提供便利,其内容围绕着webshell的功能,例如操作数据库,远程代码执行,遍历目录,操作文件系统等。字体格式标签可以用于标识前端网页中文本值字体大小和色彩不同的元素,webshell网页数据对应的前端网页中文本值字体格式不同的元素可以为攻击者显示一些攻击相关的需要关注的元素。表单标签用于标识需要用户输入的元素,webshell网页数据对应的前端网页中通过表单来提供一些攻击功能模块,例如在服务器上执行命令,上传文件等。在一个示例中,webshell网页数据对应的前端网页中所属的标签为超链接标签、加粗标签、按钮标签、字体格式标签和表单标签的元素的个数比正常web网页数据对应的前端网页中所属的标签为超链接标签、加粗标签、按钮标签、字体格式标签和表单标签的元素的个数多。
具体实施中,针对于T个预设标签中的每个预设标签,可以根据多个元素的属性,确定出所属的标签为预设标签的元素。举例说明,如图2所示,元素201的属性为超链接,则元素201所属的标签可以为超链接标签;元素202的属性为按钮,则元素202所属的标签可以为按钮标签;元素207的属性为加粗,则元素207所属的标签可以为加粗标签。在一个示例中,表1示意了样本数据A对应的DOM树包括的多个元素与T个预设标签的对应关系。
表1:一种多个元素与T个预设标签的对应关系
预设标签 | 元素 |
超链接标签 | 元素201、元素203 |
加粗标签 | 元素207 |
按钮标签 | 元素202、元素204、元素210 |
字体格式标签 | 元素205、元素206 |
表单标签 | 元素208、元素209 |
如表1所示,样本数据A对应的DOM树包括的多个元素中,所属的标签为超链接标签的元素为元素201和元素203,所属的标签为加粗标签的元素为元素207,所属的标签为按钮标签的元素为元素202、元素204和元素210,所属的元素为字体格式标签的元素为元素205和元素206,所属的元素为表单标签的元素为元素208和元素209。
进一步地,可以根据多个元素中所属的标签分别为T个预设标签的元素的个数,确定样本数据A对应的特征序列。在一个示例中,样本数据A的特征序列可以包括2*T个分量,特征序列的第1~T个分量可以为T个预设标签分别对应的值,每个预设标签对应的值可以是根据多个元素中所属的标签为每个预设标签的元素的个数生成的;特征序列的第T+1~2*T个分量可以为多个元素中所属的标签分别为T个预设标签的元素的个数。举例说明,以表1为例,样本数据A的特征序列可以为[超链接标签的值,加粗标签的值,按钮标签的值,字体格式标签的值,表单标签的值;超链接标签中包括的元素个数,加粗标签中包括的元素个数,按钮标签中包括的元素个数,字体格式标签中包括的元素个数,表单标签中包括的元素个数],根据表1中的数据,样本数据A的特征序列可以为[超链接标签的值,加粗标签的值,按钮标签的值,字体格式标签的值,表单标签的值;2,1,3,2,2]。
本发明实施例中,针对于T个预设标签中的任一预设标签,确定该预设标签对应的值的方式可以有多种,在一种可能的实现方式中,可以预先构建该预设标签对应的样本特征库,并根据该预设标签对应的样本特征库的权重和该预设标签对应的样本特征库中包括的样本数据A的文本值的个数,确定该预设标签对应的值。
在一个示例中,若样本数据A为白样本数据,则可以将多个元素中所属的标签为该预设标签的元素的文本值添加到该预设标签对应的白样本特征库中;若样本数据A为黑样本数据,则可以将多个元素中所属的标签为该预设标签的元素的文本值添加到该预设标签对应的黑样本特征库中。本发明实施例中,还可以为该预设标签对应的白样本特征库和黑样本特征库设置权重,权重的值可以由本领域技术人员根据经验设置,或者也可以根据实验进行确定,具体不作限定。本发明实施例中,可以设置预设标签对应的白样本特征库的权重与预设标签对应的黑样本特征库的权重具有不同的符号,比如,预设标签对应的白样本特征库的权重为正数,预设标签对应的黑样本特征库的权重为负数;或者预设标签对应的白样本特征库的权重为负数,预设标签对应的黑样本特征库的权重为正数。
进一步地,若样本数据A为白样本数据,该预设标签对应的值可以为该预设标签对应的白样本特征库的权重与该预设标签对应的白样本特征库中包括的样本数据A的文本值的个数的乘积;相应地,若样本数据A为黑样本数据,该预设标签对应的值可以为该预设标签对应的黑样本特征库的权重与该预设标签对应的黑样本特征库中包括的样本数据A的文本值的个数的乘积。举例来说明,如表1所示,针对于按钮标签,若样本数据A为白样本数据,则可以将元素202、元素204和元素210的文本值全部添加到按钮标签对应的白样本特征库中,若按钮标签对应的白样本特征库的权重为1,则按钮标签对应的值可以为1*3;此时,样本数据A对应的特征序列可以为[2,1,3,2,2,2,1,3,2,2]。相应地,若样本数据A为黑样本数据,则可以将元素202、元素204和元素210的文本值全部添加到按钮标签对应的黑样本特征库中,若按钮标签对应的黑样本特征库的权重为-1,则按钮标签对应的值可以为-1*3;此时,样本数据A对应的特征序列可以为[-2,-1,-3,-2,-2,-2,-1,-3,-2,-2]。
在另一个示例中,若样本数据A为白样本数据,则可以将多个元素中所属的标签为该预设标签的元素的文本值添加到该预设标签对应的白样本特征库中;若样本数据A为黑样本数据,且元素的文本值与预设标识匹配,则可以将元素的文本值添加至该预设标签对应的高危黑样本特征库中;若样本数据A为黑样本数据库,且元素的文本值与预设标识不匹配,则可以将元素的文本值添加至该预设标签对应的普通黑样本特征库中。其中,预设标识可以用于标识webshell网页数据和正常web网页数据分别对应的前端网页中具有不同特征的元素的文本值,比如webshell名称文本值、webshell作者信息文本值、webshell回连、下载地址文本值等,具体实施中,预设标识可以由本领域技术人员根据经验进行设置。
本发明实施例中,还可以为该预设标签对应的白样本特征库、高危黑样本特征库和普通黑样本特征库设置权重,权重的值可以由本领域技术人员根据经验设置,或者也可以根据实验进行确定,具体不作限定。本发明实施例中,预设标签对应的白样本特征库的权重与高危黑样本特征库的权重、普通黑样本特征库的权重可以具有不同的符号,比如,预设标签对应的白样本特征库的权重为正数,预设标签对应的高危黑样本特征库的权重和预设标签对应的普通黑样本特征库的权重均为负数;或者预设标签对应的白样本特征库的权重为负数,预设标签对应的高危黑样本特征库的权重和预设标签对应的普通黑样本特征库的权重均为正数。在一个示例中,预设标签对应的高危黑样本特征库的权重的值可以比预设标签对应的普通黑样本特征库的权重的值大,比如,预设标签对应的高危黑样本特征库的权重为5(或-5),预设标签对应的普通黑样本特征库的权重为2(或-2)。
进一步地,若样本数据A为白样本数据,该预设标签对应的值可以为该预设标签对应的白样本特征库的权重与该预设标签对应的白样本特征库中包括的样本数据A的文本值的个数的乘积。若样本数据A为黑样本数据,则可以根据预设标签对应的高危黑样本特征库的权重、预设标签对应的普通黑样本特征库的权重、预设标签对应的高危黑样本特征库中包括的样本数据的文本值的个数和预设标签对应的普通黑样本特征库中包括的样本数据的文本值的个数,确定预设标签对应的值。具体地说,该预设标签对应的值可以为该预设标签对应的高危黑样本特征库的权重与该预设标签对应的高危黑样本特征库中包括的样本数据A的文本值的个数的乘积和该预设标签对应的普通黑样本特征库的权重与该预设标签对应的普通黑样本特征库中包括的样本数据A的文本值的个数的乘积之和。举例来说明,如表1所示,针对于按钮标签,若样本数据A为黑样本数据,且元素202和元素204为高危黑样本特征库中的元素,元素210为普通黑样本特征库中的元素,若按钮标签对应的高危黑样本特征库的权重为-5,普通黑样本特征库的权重为-2,则按钮标签对应的值可以为(-5)*2+(-2)*1,即为-12。若其他标签包括的元素均为高危黑样本特征库中的元素,此时,样本数据A对应的特征序列可以为[-10,-5,-12,-10,-10,2,1,3,2,2]。
步骤103,使用P个黑样本数据的特征序列和Q个白样本数据的特征序列进行模型训练,得到二分类预测模型。
此处,可以采用支持向量机的模型训练系统,将P个黑样本数据的特征序列和Q个白样本数据的特征序列分别输入模型训练系统,此时,模型训练系统可以将黑样本数据和白样本数据映射到五维特征空间,得到超平面。进一步地,模型训练系统可以通过调整得到的超平面的参数,使得模型训练出的超平面最为准确。
具体地说,超平面可以将黑样本数据和白样本数据区分开,又称为二分类预测模型。举例来说,超平面的一侧可以为白样本空间,白样本数据位于白样本空间内;相应地,超平面的另一侧可以为黑样本空间,黑样本数据位于黑样本空间内。
步骤104,使用二分类预测模型对待检测样本数据进行预测,确定待检测样本数据是否为webshell网页数据。
上述步骤101至步骤103具体描述了模型训练阶段的实现,步骤104主要针对于使用二分类预测模型确定待检测样本数据是否为webshell网页数据(即预测阶段)的实现进行说明。
本发明实施例中,可以在获取到待检测样本数据后,确定待检测样本数据对应的特征序列。此处,确定待检测样本数据对应的特征序列的方式可以参照步骤102中确定样本数据A对应的特征序列的方式进行实现,不再赘述。
进一步地,可以使用二分类预测模型对待检测样本数据的特征序列进行预测,确定待检测样本数据为webshell网页数据或正常web网页数据。具体地说,将待检测样本数据的特征序列输入模型训练系统中,此时,模型训练系统可以将待检测样本数据映射在训练得到的二分类预测模型中。若待检测样本超平面的一侧,即待检测样本位于白样本空间中,则确定待检测样本为正常web网页数据;若待检测样本超平面的另一侧,即待检测样本位于黑样本空间中,则确定待检测样本为webshell网页数据。
本发明的上述实施例中,获取M个样本数据,M个样本数据可以包括P个webshell网页数据和Q个正常web网页数据;解析得到每个样本数据对应的DOM树型结构,DOM树形结构中包括多个元素和多个元素的文本值和属性;根据T个预设标签的元素的个数,确定每个样本数据对应的特征序列,并使用P个黑样本数据的特征序列和Q个白样本数据的特征序列进行模型训练,得到二分类预测模型;进一步地,使用二分类预测模型对待检测样本数据的特征序列进行预测,确定待检测样本数据是否为webshell网页数据。本发明实施例通过分析webshell网页数据和正常web网页数据在前端网页上显示出的区别特征,并基于该区别特征进行模型训练,可以得到基于前端页面特征的二分类预测模型,相比于现有技术基于后台程序检测webshell网页数据的方式来说,能够避免通过修改后台程序所导致的检测不准确的技术问题,使得模型训练得到的二分类模型较为准确,从而通过采用基于前端网页特征训练得到的二分类预测模型对待检测样本进行预测,可以提高websell网页数据检测的准确性;此外,本发明实施例中的样本数据为通过运行后台程序得到的前端网页数据,在后台程序的功能不发生变化的情况下,对后台程序作文字性的修改不会影响前端网页数据,从而使得即使webshell数据的后台程序发生变化,采用本发明实施例中的方案也可以检测出webshell数据。
针对上述方法流程,本发明实施例还提供一种模型训练的装置,该装置的具体内容可以参照上述方法实施。
图3为本发明实施例提供的一种webshell检测装置的结构示意图,包括:
获取模块301,用于获取M个样本数据,所述M个样本数据包括P个黑样本数据和Q个白样本数据;所述P个黑样本数据为webshell网页数据,所述Q个白样本为正常web网页数据;
确定模块302,用于针对于所述M个样本数据中的每个样本数据,解析得到所述样本数据对应的DOM树型结构,所述DOM树形结构中包括多个元素和所述多个元素的文本值和属性;针对于T个预设标签中的每个预设标签,根据所述多个元素的属性,确定出所属的标签为所述预设标签的元素;根据所述多个元素中所属的标签分别为所述T个预设标签的元素的个数,确定所述样本数据对应的特征序列;
训练模块303,用于使用所述P个黑样本数据的特征序列和所述Q个白样本数据的特征序列进行模型训练,得到二分类预测模型。
可选地,所述样本数据的特征序列包括2*T个分量,所述特征序列的第1~T个分量为所述T个预设标签分别对应的值,所述每个预设标签对应的值是所述确定模块302根据所述多个元素中所属的标签为所述每个预设标签的元素的个数生成的;所述特征序列的第T+1~2*T个分量为所述多个元素中所属的标签分别为所述T个预设标签的元素的个数。
可选地,所述样本数据为白样本数据;所述确定模块302用于:
针对于所述T个预设标签中的每个预设标签,将所述多个元素中所属的标签为所述预设标签的元素的文本值添加到所述预设标签对应的白样本特征库中;根据所述预设标签对应的白样本特征库的权重和所述预设标签对应的白样本特征库中包括的所述样本数据的文本值的个数,确定所述预设标签对应的值。
可选地,所述样本数据为黑样本数据;所述确定模块302用于:
针对于所述T个预设标签中的每个预设标签和所述多个元素中所属的标签为所述预设标签的每个元素,若所述元素的文本值与预设标识匹配,则将所述元素的文本值添加至所述预设标签对应的高危黑样本特征库中;若所述元素的文本值与所述预设标识不匹配,则将所述元素的文本值添加至所述预设标签对应的普通黑样本特征库中;根据所述预设标签对应的高危黑样本特征库的权重、所述预设标签对应的普通黑样本特征库的权重、所述预设标签对应的高危黑样本特征库中包括的所述样本数据的文本值的个数和所述预设标签对应的普通黑样本特征库中包括的所述样本数据的文本值的个数,确定所述预设标签对应的值。
可选地,所述webshell检测装置还包括预测模块304,所述预测模块304用于:
获取待检测样本数据,并确定所述待检测样本数据对应的特征序列;
使用所述二分类预测模型对所述待检测样本数据的特征序列进行预测,确定所述待检测样本数据为webshell网页数据或正常web网页数据。
从上述内容可以看出:本发明的上述实施例中,获取M个样本数据,M个样本数据可以包括P个webshell网页数据和Q个正常web网页数据;解析得到每个样本数据对应的DOM树型结构,DOM树形结构中包括多个元素和多个元素的文本值和属性;根据T个预设标签的元素的个数,确定每个样本数据对应的特征序列,并使用P个黑样本数据的特征序列和Q个白样本数据的特征序列进行模型训练,得到二分类预测模型;进一步地,使用二分类预测模型对待检测样本数据的特征序列进行预测,确定待检测样本数据是否为webshell网页数据。本发明实施例通过分析webshell网页数据和正常web网页数据在前端网页上显示出的区别特征,并基于该区别特征进行模型训练,可以得到基于前端页面特征的二分类预测模型,相比于现有技术基于后台程序检测webshell网页数据的方式来说,能够避免通过修改后台程序所导致的检测不准确的技术问题,使得模型训练得到的二分类模型较为准确,从而通过采用基于前端网页特征训练得到的二分类预测模型对待检测样本进行预测,可以提高websell网页数据检测的准确性;此外,本发明实施例中的样本数据为通过运行后台程序得到的前端网页数据,在后台程序的功能不发生变化的情况下,对后台程序作文字性的修改不会影响前端网页数据,从而使得即使webshell数据的后台程序发生变化,采用本发明实施例中的方案也可以检测出webshell数据。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种webshell检测方法,其特征在于,所述方法包括:
获取M个样本数据,所述M个样本数据包括P个黑样本数据和Q个白样本数据;所述P个黑样本数据为webshell网页数据,所述Q个白样本数据为正常web网页数据;
针对于所述M个样本数据中的每个样本数据,解析得到所述样本数据对应的DOM树型结构,所述DOM树形结构中包括多个元素和所述多个元素的文本值和属性;针对于T个预设标签中的每个预设标签,根据所述多个元素的属性,确定出所属的标签为所述预设标签的元素;根据所述多个元素中所属的标签分别为所述T个预设标签的元素的个数,确定所述样本数据对应的特征序列;
使用所述P个黑样本数据的特征序列和所述Q个白样本数据的特征序列进行模型训练,得到二分类预测模型;
使用所述二分类预测模型对待检测样本数据的特征序列进行预测,确定所述待检测样本数据是否为webshell网页数据。
2.根据权利要求1所述的方法,其特征在于,所述M个样本数据为通过如下方式得到的:
获取M个测试数据,所述M个测试据包括P个webshell后台数据和Q个正常web后台数据;
针对于所述M个测试数据中的每个测试数据,获取运行所述测试数据得到的所述测试数据对应的前端网页;对所述测试数据对应的前端网页进行解析,得到所述测试数据对应的前端网页数据;若所述测试数据为webshell后台数据,则所述测试数据对应的前端网页数据为webshell网页数据;若所述测试数据为正常web后台数据,则所述测试数据对应的前端网页数据为正常web网页数据。
3.根据权利要求1所述的方法,其特征在于,所述样本数据的特征序列包括2*T个分量,所述特征序列的第1~T个分量为所述T个预设标签分别对应的值,所述每个预设标签对应的值是根据所述多个元素中所属的标签为所述每个预设标签的元素的个数生成的;所述特征序列的第T+1~2*T个分量为所述多个元素中所属的标签分别为所述T个预设标签的元素的个数。
4.根据权利要求3所述的方法,其特征在于,所述样本数据为白样本数据;针对于所述T个预设标签中的任一预设标签,所述预设标签对应的值通过如下方式得到:
将所述多个元素中所属的标签为所述预设标签的元素的文本值添加到所述预设标签对应的白样本特征库中;
根据所述预设标签对应的白样本特征库的权重和所述预设标签对应的白样本特征库中包括的所述样本数据的文本值的个数,确定所述预设标签对应的值。
5.根据权利要求3所述的方法,其特征在于,所述样本数据为黑样本数据;针对于所述T个预设标签中的任一预设标签,所述预设标签对应的值通过如下方式得到:
针对于所述多个元素中所属的标签为所述预设标签的每个元素,若所述元素的文本值与预设标识匹配,则将所述元素的文本值添加至所述预设标签对应的高危黑样本特征库中;若所述元素的文本值与所述预设标识不匹配,则将所述元素的文本值添加至所述预设标签对应的普通黑样本特征库中;
根据所述预设标签对应的高危黑样本特征库的权重、所述预设标签对应的普通黑样本特征库的权重、所述预设标签对应的高危黑样本特征库中包括的所述样本数据的文本值的个数和所述预设标签对应的普通黑样本特征库中包括的所述样本数据的文本值的个数,确定所述预设标签对应的值。
6.一种webshell检测装置,其特征在于,所述装置包括:
获取模块,用于获取M个样本数据,所述M个样本数据包括P个黑样本数据和Q个白样本数据;所述P个黑样本数据为webshell网页数据,所述Q个白样本数据为正常web网页数据;
确定模块,用于针对于所述M个样本数据中的每个样本数据,解析得到所述样本数据对应的DOM树型结构,所述DOM树形结构中包括多个元素和所述多个元素的文本值和属性;针对于T个预设标签中的每个预设标签,根据所述多个元素的属性,确定出所属的标签为所述预设标签的元素;根据所述多个元素中所属的标签分别为所述T个预设标签的元素的个数,确定所述样本数据对应的特征序列;
训练模块,用于使用所述P个黑样本数据的特征序列和所述Q个白样本数据的特征序列进行模型训练,得到二分类预测模型;
预测模块,用于使用所述二分类预测模型对待检测样本数据的特征序列进行预测,确定所述待检测样本数据是否为webshell网页数据。
7.根据权利要求6所述的装置,其特征在于,所述获取模块还用于:
获取M个测试数据,所述M个测试据包括P个webshell后台数据和Q个正常web后台数据;
针对于所述M个测试数据中的每个测试数据,获取运行所述测试数据得到的所述测试数据对应的前端网页;对所述测试数据对应的前端网页进行解析,得到所述测试数据对应的前端网页数据;若所述测试数据为webshell后台数据,则所述测试数据对应的前端网页数据为webshell网页数据;若所述测试数据为正常web后台数据,则所述测试数据对应的前端网页数据为正常web网页数据。
8.根据权利要求6所述的装置,其特征在于,所述样本数据的特征序列包括2*T个分量,所述特征序列的第1~T个分量为所述T个预设标签分别对应的值,所述每个预设标签对应的值是所述确定模块根据所述多个元素中所属的标签为所述每个预设标签的元素的个数生成的;所述特征序列的第T+1~2*T个分量为所述多个元素中所属的标签分别为所述T个预设标签的元素的个数。
9.根据权利要求8所述的装置,其特征在于,所述样本数据为白样本数据;所述确定模块用于:
针对于所述T个预设标签中的每个预设标签,将所述多个元素中所属的标签为所述预设标签的元素的文本值添加到所述预设标签对应的白样本特征库中;根据所述预设标签对应的白样本特征库的权重和所述预设标签对应的白样本特征库中包括的所述样本数据的文本值的个数,确定所述预设标签对应的值。
10.根据权利要求8所述的装置,其特征在于,所述样本数据为黑样本数据;所述确定模块用于:
针对于所述T个预设标签中的每个预设标签和所述多个元素中所属的标签为所述预设标签的每个元素,若所述元素的文本值与预设标识匹配,则将所述元素的文本值添加至所述预设标签对应的高危黑样本特征库中;若所述元素的文本值与所述预设标识不匹配,则将所述元素的文本值添加至所述预设标签对应的普通黑样本特征库中;根据所述预设标签对应的高危黑样本特征库的权重、所述预设标签对应的普通黑样本特征库的权重、所述预设标签对应的高危黑样本特征库中包括的所述样本数据的文本值的个数和所述预设标签对应的普通黑样本特征库中包括的所述样本数据的文本值的个数,确定所述预设标签对应的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811613317.7A CN109684844B (zh) | 2018-12-27 | 2018-12-27 | 一种webshell检测方法、装置以及计算设备、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811613317.7A CN109684844B (zh) | 2018-12-27 | 2018-12-27 | 一种webshell检测方法、装置以及计算设备、计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109684844A true CN109684844A (zh) | 2019-04-26 |
CN109684844B CN109684844B (zh) | 2020-11-20 |
Family
ID=66190584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811613317.7A Active CN109684844B (zh) | 2018-12-27 | 2018-12-27 | 一种webshell检测方法、装置以及计算设备、计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109684844B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110868419A (zh) * | 2019-11-18 | 2020-03-06 | 杭州安恒信息技术股份有限公司 | Web后门攻击事件的检测方法、装置及电子设备 |
CN111385295A (zh) * | 2020-03-04 | 2020-07-07 | 深信服科技股份有限公司 | 一种WebShell检测方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332028A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种面向网页的不良Web内容识别方法 |
CN107516041A (zh) * | 2017-08-17 | 2017-12-26 | 北京安普诺信息技术有限公司 | 基于深度神经网络的WebShell检测方法及其系统 |
WO2018107784A1 (zh) * | 2016-12-16 | 2018-06-21 | 华为技术有限公司 | 检测网页后门的方法和装置 |
CN108694325A (zh) * | 2017-04-10 | 2018-10-23 | 北大方正集团有限公司 | 指定类型网站的辨别方法和指定类型网站的辨别装置 |
CN108985059A (zh) * | 2018-06-29 | 2018-12-11 | 北京奇虎科技有限公司 | 一种网页后门检测方法、装置、设备及存储介质 |
-
2018
- 2018-12-27 CN CN201811613317.7A patent/CN109684844B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332028A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种面向网页的不良Web内容识别方法 |
WO2018107784A1 (zh) * | 2016-12-16 | 2018-06-21 | 华为技术有限公司 | 检测网页后门的方法和装置 |
CN108694325A (zh) * | 2017-04-10 | 2018-10-23 | 北大方正集团有限公司 | 指定类型网站的辨别方法和指定类型网站的辨别装置 |
CN107516041A (zh) * | 2017-08-17 | 2017-12-26 | 北京安普诺信息技术有限公司 | 基于深度神经网络的WebShell检测方法及其系统 |
CN108985059A (zh) * | 2018-06-29 | 2018-12-11 | 北京奇虎科技有限公司 | 一种网页后门检测方法、装置、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110868419A (zh) * | 2019-11-18 | 2020-03-06 | 杭州安恒信息技术股份有限公司 | Web后门攻击事件的检测方法、装置及电子设备 |
CN111385295A (zh) * | 2020-03-04 | 2020-07-07 | 深信服科技股份有限公司 | 一种WebShell检测方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109684844B (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11507732B1 (en) | Web browsing | |
CN108416198B (zh) | 人机识别模型的建立装置、方法及计算机可读存储介质 | |
Choudhary et al. | Crosscheck: Combining crawling and differencing to better detect cross-browser incompatibilities in web applications | |
CN104766014B (zh) | 用于检测恶意网址的方法和系统 | |
CN107659570A (zh) | 基于机器学习与动静态分析的Webshell检测方法及系统 | |
CN102446255B (zh) | 一种检测页面篡改的方法及装置 | |
CN111737692B (zh) | 应用程序的风险检测方法及装置、设备、存储介质 | |
CN102591965B (zh) | 一种黑链检测的方法及装置 | |
US10248643B2 (en) | Detecting compatible layouts for content-based native ads | |
CN110088754B (zh) | 立法到逻辑的自动编码器 | |
CN111881398B (zh) | 页面类型确定方法、装置和设备及计算机存储介质 | |
CN112052424B (zh) | 一种内容审核方法及装置 | |
CN105868290A (zh) | 一种展现搜索结果的方法及装置 | |
CN111753171A (zh) | 一种恶意网站的识别方法和装置 | |
CN104036190A (zh) | 一种检测页面篡改的方法及装置 | |
CN106951495A (zh) | 用于呈现信息的方法和装置 | |
CN107491536A (zh) | 一种试题校验方法、试题校验装置及电子设备 | |
CN113918794B (zh) | 企业网络舆情效益分析方法、系统、电子设备及存储介质 | |
CN109684844A (zh) | 一种webshell检测方法及装置 | |
CN104036189A (zh) | 页面篡改检测方法及黑链数据库生成方法 | |
CN111125704B (zh) | 一种网页挂马识别方法及系统 | |
CN107688594B (zh) | 基于社交信息的风险事件的识别系统及方法 | |
CN116318974A (zh) | 站点风险识别方法、装置、计算机可读介质及电子设备 | |
Furche et al. | Turn the page: automated traversal of paginated websites | |
CN104077353A (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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building Patentee after: NSFOCUS Technologies Group Co.,Ltd. Patentee after: NSFOCUS TECHNOLOGIES Inc. Address before: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building Patentee before: NSFOCUS INFORMATION TECHNOLOGY Co.,Ltd. Patentee before: NSFOCUS TECHNOLOGIES Inc. |