APP下载

基于特征工程与威胁情报的Webshell检测方法研究

2022-10-27许波姜政伟辛丽玲周宇飞

数据与计算发展前沿 2022年5期
关键词:木马黑客情报

许波,姜政伟,辛丽玲*,周宇飞

1.中国人民公安大学,信息网络安全学院,北京 100038

2.中国科学院信息工程研究所,北京 100093

3.成都市公安局,四川 成都 610017

4.山东省滨海公安局,山东 东营 257013

引言

随着信息化技术的发展,各行业拥有大量的网络资产,针对网络资产的违法犯罪不断凸显,网络黑灰产、侵犯公民个人信息等犯罪活动呈现高发状态,而此类犯罪多来源于黑客的渗透和入侵。黑客开展网络渗透时手段多种多样,但目的均为获取计算机信息系统权限,进一步窃取、篡改数据[1]。黑客渗透成功后为了维持或提升权限,会通过注入、XSS、上传等渗透手段在目标网站植入PHP、JSP、ASPX 等格式的木马文件,即Webshell。Webshell 作为黑客用于后门权限维持的重要手段,活跃于各种网络攻击事件中,因此及时、准确地发现网络流量中的Webshell 通信,保证网络安全的需求日益迫切。

国家互联网应急中心《2021 年上半年我国互联网网络安全检测数据分析报告》,境内外8,289 个IP地址对我国境内约1.4 万个网站植入后门,植入后门已经严重威胁我国网络安全和国家安全[2]。而根据公安部“净网2021”专项行动报告显示,2021 年全国公安机关铲除制售木马病毒、开发攻击软件平台团伙341 个,抓获实施黑客攻击活动人员3,309名[3]。公安机关打击黑客数量仍低于存在的攻击黑客数量,其中一个重要的原因就是存在大量网站后门因没有发现或被检测出而逃避打击。

因此,Webshell 检测成为打击黑客犯罪中非常关键的步骤,对于Webshell 检测方法的研究,能够准确发现渗透入侵网站的恶意攻击行为,在预警、研判、打击非法入侵计算机信息系统等黑客类案件中具有积极意义。

1 研究现状

目前,学术界依据Webshell 检测方法的不同,将Webshell 检测划分为三种,分别是基于文件的检测方法、基于流量的检测方法以及基于日志的检测方法[4]。其中,基于流量的检测方法,又可以分为静态检测和动态检测的方式。

静态检测常见的有采用正则表达式进行匹配、生成语法树提取语法树特征、文本统计量特征如字符分布等,其中基于正则匹配的检测方式是对一些常见的Webshell 关键特征进行提取,通过对文本的语义和语法分析,匹配文件中的特征字符串,判断是否为高危文件,从而判断文件是否为Webshell,例如危险函数名、文本的特征码、文件关联度、敏感参数等,当特征符合条件时判断为Webshell[5]。如易楠[6]实现的基于语义分析的Webshell 检测方法;Truong Dinh Tu 等人[7]依据文本恶意特征进行判断的方法。

动态检测是针对Webshell 上传到服务器后,对Webshell 执行时在流量中表现出来的特征进行检测,从网络中检测到的是Web 应用程序被解释执行的代码[8]。动态分析根据恶意代码文件在执行环境中产生的流量中提取特征,建立Webshell 动态特征库,常见方法为拦截抓包后进行语义分析提取。

本文主要研究的是针对HTTP 流量的检测方法,通过静态检测和动态检测结合的方式,对Webshell恶意代码进行行为数据研究并提取特征[9],基于特征工程实现Webshell 投递、入侵过程的检测,并且在实际网络威胁情报模型应用中实现对Webshell 文件和攻击者的回溯,实际应用后打击黑客犯罪的效果明显。

2 HTTP 协议消息结构与流量分析

2.1 HTTP 协议请求消息

HTTP 协议是超文本传输协议(Hyper Text Transfer Protocol)的缩写,用于将文本内容从服务器传输到本地浏览器。其工作原理是基于TCP/IP 通信协议传输数据(HTML 文件、图片文件、查询结果等)。根据HTTP 协议标准,定义了GET、POST 和HEAD三种请求方法。HTTP 请求消息:一个HTTP 请求报文包含4 个部分:请求行、请求头、空行和请求数据,典型的请求报文内容见表1。

表1 典型的请求报文内容Table 1 Typical request message content

请求行由3 个字段组成:请求方法、请求URL和HTTP 协议及版本,它们之间用空格分隔。例如,POST/index.html HTTP/1.1。其中,GET 请求是最常见的请求方法,使用GET 方法时,URL 中包含请求参数和相对应的值,URL 链接中“?”跟随的部分就是GET 方法发送的请求数据,传输的每个数据由“&”分割,传递的参数长度受到限制;POST 请求方法以名称或值的形式将请求参数封装在HTTP 请求数据中,对传输数据的大小没有限制,也不会显示在URL 中,能够大量传输数据。在实验环境测试后发现,Webshell 特征常见于GET 方法的请求数据与POST方法的请求数据包体中,本文对HTTP 协议中GET、POST 请求方法的Webshell 恶意代码检测进行研究。

请求头由成对的关键字和值组成,每行一对,关键字和值用英文冒号分隔。请求头告知服务器关于客户端请求的信息。

请求数据只在POST 方法中使用,适用于需要客户端填写数据的情况。

2.2 HTTP 协议响应消息

HTTP 响应包括四个部分:状态行、响应头、空行和响应正文。因黑客攻击表现为发起恶意网络请求,所以本文不具体阐述响应包。在模型构建过程中,为排除利用批量脚本工具扫描Webshell 行为产生噪点数据,采用HTTP 响应包中状态行作为威胁模型中判断Webshell 存活的筛选条件之一,例如:HTTP/1.1 200 OK,状态码200 即成功请求网页,可判断检测出Webshell 存活。

2.3 HTTP 协议流量来源

本文主要阐述的是一种基于HTTP 协议流量的Webshell 检测方法,流量来源于一骨干网镜像流量,目的是为了验证在实际应用中发现渗透入侵行为的准确率,并利用此方法回溯黑客,为公安机关预警、打击非法侵入计算机信息系统等黑客犯罪行为提供一种解决方案。

3 Webshell 特征工程

3.1 Webshell 定义与分类

黑客进行网络攻击时,具有一定的固有流程,攻击流程在结果上映射为一次成功的攻击事件后会获取Webshell,Webshell 作为黑客成功入侵网站服务器后留下的后门,可以利用特定远程控制端程序访问网站的特定目录,对网站服务器进行远程控制,增加、删除、修改网站服务器文件,下载、篡改数据库数据,在服务器上执行系统命令等。

Webshell 原意是一种shell 脚本语言编写的程序,方便网站或WEB 服务器管理员进行网站管理、服务器管理的一种脚本程序,一般具备文件上传下载、执行服务器系统命令、数据库操作等功能,因此诞生后便被黑客所利用。现在通常是指通过注入、XSS、上传等渗透手段植入木马,获取网站或服务器控制权限的后门利用脚本工具。

根据功能和攻击影响可分为以下3 种类型:(1)简单型Webshell 程序,俗称“一句话木马”,只提供基本命令执行功能的Webshell 程序,功能简单,必须要“菜刀”、“冰蝎”等管理工具配合使用,才能够完成与“大马”类似的功能;(2)文件上传型Webshell 程序,俗称“小马”,不包含命令执行功能且功能简单,通常作为跳板上传“大马”或其他恶意文件;(3)网页型Webshell 程序,俗称“大马”,文件体积较大、代码结构复杂,代码中包含文件管理、命令执行、数据库操作等功能,可以在WEB 界面操作,通常只需要在浏览器中输入木马地址,即可实现对网站权限的控制[10]。

3.2 Webshell 特征提取方法

Webshell 具有多种特征,包括木马文件名、危险函数名、数据包内容、请求头、网络流量行为、利用工具特征等[11]。本文主要基于常见木马文件名和两种HTTP 请求流量提取特征。

(1)木马文件名特征提取

Webshell 是植入木马获取网站数据的利用工具,植入木马名称、内容由黑客编写并发布到网络上,其文件名具有明显特征。很多攻击者不具有编写木马能力或为了便于Webshell 管理,在将Webshell 传到被攻击网站中时,不会进行重新命名,即使重命名,通常会命名为一些比较特殊且具有一定隐蔽性或易于混淆管理员视线的Webshell 名称,如90sec.asp、t00ls.jsp、404.php 等[12]。采集互联网开源项目中的木马样本,提取并归纳出木马Webshell 文件名称作为匹配特征,整理的部分Webshell 名称特征如表2 所示。

表2 常见Webshell 木马文件名称特征示例Table 2 Examples of common Webshell Trojan file name features

(2)基于HTTP 请求流量的特征提取

首先,搭建各类实验环境,模拟黑客利用漏洞的攻击行为,例如在本地虚拟机环境中搭建本地测试网站,网站中放入JSP、ASP、PHP、ASPX 木马,使用“菜刀”、“冰蝎”、“哥斯拉”、“XISE”等多个Webshell 利用工具模拟已经渗透入侵成功的状态。同时,实时对上述工具进行抓包,分析Webshell 利用工具流量分析,其主要包含内容见表3。

表3 Webshell 包含内容Table 3 Webshell contains content

在反复验证抓包数据后,发现Webshell 请求包的头部格式相对固定,主要包括密码、字符编码和执行命令等,Webshell 的payload 主要集中在URL与POST 请求消息中,对应不同的脚本工具、网站代码、EXP 等具有不同的特征,因此Webshell 检测可以基于HTTP 协议流量进行特征匹配。在特征匹配过程中,将数据包中的固定关键字可以用作特征值,如“eval、system”等危险函数、执行的CMD命令、流量中解密动作函数base64_decode 等。参照互联网中常见的开源木马样本项目进行本地实验环境部署,如:http://virussign.com、https://virusshare.com、GitHub 仓库中tennc/Webshell、Webshellpub/awsome-Webshell、ysrc/Webshell-sample 等项目,结合目前主流的静态规则库,如市面上流行的河马、百度Webshell、D 盾中危险函数与自建的Webshell库[10],经人工筛选、抓包、分析、提取特征见表4、表5。

表4 POST 方式提取Webshell 特征示例Table 4 Example of extracting Webshell features by POST

表5 URL 提取规则特征示例Table 5 Example of URL extraction rule features

4 结合威胁情报的Webshell 检测方法

4.1 Webshell 检测方法

Webshell 的工作机制是通过网络请求将恶意命令传递到服务器,以实现控制目标服务器权限,最常见传递方式就是利用木马文件发起HTTP 请求。WEB 类木马主要分为三种类型:“大马”、“小马”和一句话木马,原理均是调用系统函数来执行Webshell 传入的恶意命令。由于Webshell 是基于HTTP 协议运行的,传输的流量均为HTTP 数据包。因此,只需要对本文中提到的HTTP 协议流量中的请求数据进行特征检测,Webshell 文件在执行过程中请求数据有GET、POST,即POST 数据包和URL中会包含文中表4、表5 的特征值,使用正则表达式匹配的方法,对HTTP 协议流量的特定字段字符串,检查一个字符串是否具有某些恶意特征的子字符串,如果匹配成功,则认为本条流量具有明显的恶意特征,属于恶意流量。如果匹配不成功,则认为此流量是正常流量或未被识别的恶意流量[13]。例如,对于在HTTP 协议流量中传输的Webshell 加密数据,其请求包一般携带通过特定函数获取Webshell 中相关特征的Base64 密文,base64_decode 就是PHP 一句话木马用Base64 解密密文的行为[14],因此可以通过此函数作为特征检测,判断Webshell 是否存在。

4.2 融合多维特征与威胁情报的Webshell检测模型

首先,对接入的数据进行数据清洗、数据归并、数据关联、数据比对、数据标识等预处理操作,提高数据的质量和关联性,为统一的存储和集中的管理提供基础。其次,基于特征工程提取黑客行为的相关特征信息建立知识库,分类归纳公开漏洞攻击、“大马”类Webshell 网页、一句话木马类静、动态特征、僵木蠕恶意程序回连黑域名、黑URL 等特征信息,形成HTTP 流量数据包所支持的规则,提供集中、统一的Webshell 特征规则下发和黑客行为采集的接口,在镜像HTTP 协议数据中发现针对WEB 服务器的网络攻击事件的数据包,用于采集黑客攻击事件的数据。

得到包含Webshell 数据包后,需要进一步检索、处理与数据包源IP 相关的数据内容,形成包含时间、源IP、源端口、目的IP、目的端口的POST 包格式文件,还原整个Webshell 的连接与执行操作过程。因为该数据包匹配的是HTTP 流量,所以请求的网页路径即是Webshell 文件路径,直接访问POST 请求包中的HOST 和路径就能打开并连接Webshell。因匹配命中流量较大,模型提取host 和路径,生成文本文件,通过自动化脚本发送HTTP 请求包,查看相应HTTP响应码,以验证相关页面是否能够正常访问。最终通过实时采集网络攻击事件信息,基于攻击行为成功的黑客行为事件,利用攻击源和目的的IP、POST包以及验证结果生产威胁情报,产生的威胁情包中包含新的Webshell 流量特征,重新输入到模型中,进行复现和调整,进而提取到更多的Webshell 特征补充到知识库中支撑检测,使得检测模型整体能够形成闭环。

在模型构建过程中结合了公安机关“打击和预防犯罪”的定位,立足网络安全保卫需求,满足公共网络安全事件的线索发现、取证、侦察等需要,从宏观角度出发把握城市总体被渗透威胁的态势情况;从微观角度出发发现危害公共网络的安全事件,为网络等级保护和黑客案件打击提供线索情报,为互联网公共网络安全事件监测提供了有力的支撑。

5 实验与结果分析

5.1 实验方法与实验数据

分析镜像骨干网1 小时流量,其中,HTTP 请求流量约69 万条,根据表4、表5 提取到的Webshell特征关键词,基于正则匹配的方法,判断流量POST包与URL 中是否包含关键词,并通过“菜刀”、“冰蝎”等工具实际验证检出的Webshell 是否准确。

经过实验,完全匹配到包含Webshell 特征的一句话木马1,918 个,“小马”559 个,“大马”27 个,见表6。流量复现分析和验证后,确定实验检测出的Webshell 均为攻击流量,仍存活的Webshell 有64 个,可判断模型对已知的Webshell 特征检测效果较好,且命中的一句话木马类型的Webshell 比例最高。

表6 实验结果Table 6 Experimental results

图1 融合多维特征与威胁情报的Webshell 检测模型Fig.1 Webshell detection model incorporating multi-dimensional features and threat intelligence

根据生产环境下的数据进行的实验结果分析,模型对“大马”检出率最低,为验证实验漏报率,获取互联网开源仓库Github 中下载量最高、更新最多的Webshell 项目(tennc/webshell)。抽取项目中最新提交的一句话木马、“大马”、“小马”三类恶意样本生成恶意流量600 条,模拟Webshell 特征构造正常流量2,000 条,输入到模型中仿真运行,检测出一句话木马流量200 条、“小马”流量197 条,“大马”流量184 条,整体漏报率3.17%。误将正常流量中识别为“大马”的1 条,“小马”3 条,一句话9条,整体误报率0.65%。其中,“大马”因其变种多、构造复杂的特点,使用加密或混淆等方法规避检测,漏报率相对较高,一句话木马因结构简单,特征中危险函数容易被误识别,导致误报率相对较高,详细漏报率、误报率情况见表7。

表7 实验结果Table 7 Experimental results

实验结果表明,相较于基于威胁情报的检测方式,如刘亮等人[16]研究的基于威胁情报的入侵检测方法,具有漏报率低的优点。同时,对比只采用特征工程的检测方法,如王跃达等人[12]研究的基于WebShell 文件名和通信流量两种特征的检测方法,具有特征库维护难度低的特点。

5.2 威胁情报模型实验与应用结果分析

接入某骨干网络分光流量,通过部署2 台服务器光纤直连分光器,捕获流量进行分析。经过实际部署应用后,在总宽带110Gbps 的流量中一个月捕获HTTP 流量约5 亿条,平均每天检测约6.1 万条Webshell 流量,能够识别木马以及中国菜刀、蚁剑、“XISE”等Webshell 管理工具产生的流量特征,通过程序和人工处理验证,共计匹配到1,541 余个(去重后911 个)仍存活Webshell 并回溯黑客行为,其中通过部分特征对Webshell 木马流量进行检测的一个月命中数据如表8。

表8 威胁情报检测模型实际应用结果Table 8 Threat intelligence detection model practical application results

6 结语

根据实验结果不难发现,基于特征工程的检测方法对已知的Webshell 检测具有漏报率低、误报率低的优点,但面对一些使用特殊方式加密或混淆的未知变种Webshell 恶意代码仍可以规避检测[15],检测方法高度依赖Webshell 特征库,具有漏报率高、特征库维护规模庞大的缺点[8]。因此本文创新性提出融合多维特征与威胁情报的Webshell 检测模型,一是实时跟踪互联网上开源威胁情报信息,提取攻击中的木马后门特征,产出威胁情报,二是对检测出的威胁情报中的恶意流量进一步分析、提取特征,闭环产生威胁情报,形成实时动态更新的知识库,降低了特征库维护难度。

虽然基于特征工程的检测方法还存在一定缺陷,但是在实际应用中具有方便、快速、简单,对已知特定攻击行为检测精度和效率较高的优点,能够真正从威胁情报实际应用的角度检测大量Webshell 并回溯攻击源,为公安机关打击黑客犯罪提供准确、有效的威胁情报,因此在预防、打击黑客犯罪的实际应用中是非常有价值的。

利益冲突声明

所有作者声明不存在利益冲突关系。

猜你喜欢

木马黑客情报
情报
欢乐英雄
多少个屁能把布克崩起来?
情报
情报
小木马
骑木马
网络黑客比核武器更可怕
小木马
交接情报