智能分析的网页挂马检测系统设计与实现
2021-09-29沈阳理工大学刘珠光李爱华赵国栋张云宇曹子璨
沈阳理工大学 刘珠光 李爱华 赵国栋 张云宇 曹子璨
Web网络中挂马网页、钓鱼网页等黑页的存在和传播,无时无刻不威胁用户使用网页的安全,而且恶意页面所采用的攻击技术和欺骗手段也逐渐复杂化、多样化。用户在正常浏览网页的时候,若点击弹框、链接、图片等就有可能中招,导致用户处于不安全状态。主机悄无声息的被植入远控,成为肉鸡、矿机,这不仅仅消耗主机的处理器资源,还会导致用户敏感数据泄露,更有甚者会利用该主机作为入口,去攻击其他的用户主机。这些黑页的广泛传播,为黑产从业者带来了可观的利益。今天的网络用户、网络应用呈爆炸式增长,网络的快速增长给黑页的隐藏提供便利,层层嵌套使得更不容易发现,而且网民的安全意识普遍不高,如何快速高效的识别恶意网页成为当今网络亟待解决的问题。
1 网页挂马检测技术
网页木马是近几年新出现的网络攻击形式,它伪装成正常的网页文件或者将恶意代码插入到正常的网页代码之中,当用户和网页进行交互时,木马就会通过漏洞自动将恶意程序植入到客户端,导致客户端机器中马。
近年来检测挂马网页的主要方式有如下两种:基于正则的特征匹配检测与客户端蜜罐检测技术。
(1)基于正则的特征匹配检测。对常见的恶意代码进行规则入库,然后通过将库内的规则与网页进行特征匹配,相似度达到一定程度则判定为恶意代码,进行标记,反馈到客户端,对用户进行提示。但是此类方式也存在很多的缺陷:网页挂马技术会随着检测技术的提升也在不断深入,各种跳转重定向、代码混淆、框架挂马层出不群。而且扫描检测的时候需要很大带宽,占用很多的CPU资源,会给企业带来很高的成本。对于大量网站的企业来讲,扫描检测的效率也是不容忽视的问题,特征匹配需要将规则库内规则和网页进行逐一匹配,会有很高的时间成本。所以存在很多的问题影响到恶意代码的检测。
(2)客户端蜜罐检测技术。网页恶意代码常常隐藏到正常的网页中,通过客户端与服务器端的交互进行传播,蜜罐检测技术是两端交互之后,对客户端的状态进行检测,监控客户端是否出现异常的系统调用,是否会修改一些系统的默认配置,是否会导致系统进程和注册表数据异常。蜜罐技术的实现策略有两种:第一种策略,蜜罐系统直接安装在客户端,通过代理的方式进行检测,就是客户端和服务器端交互的流量都要先通过蜜罐系统的检测,对流量进行行为和状态检测,如果出现异常状态,就将恶意代码进行拦截。但是这种方式会带来交互速度过慢、消耗CPU资源、增加客户端成本等等缺点。第二种策略,是大型网安公司,在公网部署蜜罐检测系统,对公网的资产进行扫面检测,对恶意代码网页进行识别标记,反馈到用户,给用户提醒,用户注意防范。
2 网页挂马检测系统的设计与实现
2.1 智能检测分析URL库的建立
通过搜索引擎和正则表达式的结合,在全网范围内搜索足够多的网站地址,使用爬虫获取网站的目录结构,以便于接下来进行智能分析。
2.2 智能提取页面关键内容
通常页面会有各种快捷栏、导航条等等垃圾干扰信息,所以本系统采用基于DOM树结构的网页内容抽取技术,通过遍历DOM树的每个节点,将删除掉网页的非文本内容,并提取网页的关键信息。但是,由于部分网站结构不是标准的DOM树结构,在抽取信息时会出现错误。所以使用基于关键词匹配的抽取技术作为补充,以确保抽取的页面内容的正确性。
2.3 智能规则库的建立
选取智能分析算法,分析当前已知的、开源的网页挂马的技术:JS文件挂马、body挂马、XSS中挂马、JS变形加密等,将其编写入智能规则库中。
将一些挂马链接的关键字写入规则文件,用于正则匹配,如图1所示。
图1 挂马连接的关键字正则匹配
2.4 特征知识库的建立
机器学习中最重要的是特征选择。只有选择合适的特征,训练有素的分类器才能具有良好的分类效果。
特征集合是网页挂马特征值的集合,当网页被挂马之后,将网页源码中一处或者多处挂马特征提取出来,作为网页漏洞的特征,加入待检测特征知识库便于后续模块的检测。
特征提取模板是整个系统的核心,它的实现由两部分组成,分别是HTML unit和Rhino,特征提取是由Rhino模块负责进行提取。然后对提取到的HTML页面中的脚本代码进行解析,是通过HTML unit模块实现对DOM树形结构的访问,将提取的待检测网页的所有特征,形成完整的特征记录,并加入待检测特征知识库中,为检测模块提供使用。
2.5 基于BM匹配算法网页挂马挂链检测
系统主要采用正则匹配的方式进行检测。对提取到的网页代码与规则库中的特征代码进行匹配,若匹配成功则提取恶意代码程序,并做纪录加入到漏洞报告中,直至所有同样的特征全部被提取出来。
基于正则规则对特征库的匹配算法技术,除了对匹配的准确率有较高要求,还对匹配效率有很高的要求,所以系统实现过程中选取高效且准确的规则匹配算法,对本系统的匹配效率和准确率的提高有着重大的意义。
采用BM字符串搜索算法,BM算法是一种非常高效的字符串搜索算法,它将好后缀规则和坏字符规则完美糅合。BM算法的基本流程,是通过比较两个文本字符串,即文本字符串T和模式字符串P。也就是说,当文本字符串中的字符不匹配时,此刻的字符称为坏字符,模式字符串将向右移动。从错误字符右端的位置减去作为错误字符在模式字符串中的位置的模式字符串移动的位数。不良字符规则在文本字符串T上展开。对于后缀良好规则,在模式字符串中成功匹配的字符串是后缀良好字符串。此时,目标字符串从右元素开始并与左匹配,并与良好的后缀对齐。两种并行算法的目的是使P字符串每次尽可能地向右移动。一般而言,下一个移位的大小取决于两个并行操作的最大值,以减少匹配不必要的字段浪费时间,从而节省时间成本。
3 检测报告数据分析
3.1 检测报告生成
当扫描完一个网站后,将在检测系统目录下生成漏洞报告,以便于后续的修复过程使用。
此处采用两种方式获取资产:一是通过fofa的API将资产批量爬取用于检测;二是通过将域名收集到本地的文件下,进行读入然后用于检测。域名收集如图2所示,匹配结果如图3所示。
图2 域名收集
图3 匹配结果
3.2 检测报告内容分析
对提取到的特征代码进行检测,将特征代码与智能规则库文本进行正则匹配,匹配到与规则相关的特征进行输出,记录到结果文件中,给出检测到的相应关键字,便于后续的排查和修复。
结束语:基于智能分析的网页挂马检测系统,对挂马的特征关键字单独编写入库。方便后期的添加和修改。采用多线程的方式进行匹配提高检测的效率,节约时间成本。采用BM匹配算法提高匹配的准确度,好后缀和坏字符的匹配模式可有效减少误报。智能分析的引入也大大减少人工的付出,对挂马网页的检测与排查具有很高的实用价值。