Press "Enter" to skip to content

基于NLP技术的网站篡改检测引擎

导语近年来,互联网发展日益迅猛,与此同时,互联网攻击也日益频发。黑客为了不同的目的或利益,经常发起各式各样的网络攻击。网站篡改是黑客攻击的一种。黑客常常出于利益、政治目的,攻破相关网站之后,将网站内容进行修改。本文提出的基于NLP技术的网站篡改检测引擎,致力于快速发现被篡改的网站,降低网站所有者的相关损失。

 

1、背景

 

网页篡改是恶意破坏或更改网页内容,使网站无法正常工作或出现黑客插入的非正常网页内容。根据国家互联网应急中心2020年3月的报告:“境内被篡改网站的数量为 26,029 个,境内被篡改网站数量按地区分布排名前三位的分别是北京市、广东省和山东省。按网站类型统计,被篡改数量最多的是.COM 域名类网站,其多为商业类网站;被篡改的.GOV 域名类网站有 87 个,占境内被篡改网站的比例为 0.3%。”。

 

 

2、网站篡改常用手段

 

网站篡改从手段上分为显式篡改和隐式篡改。显式篡改往往很明显,进入网站直接很醒目,黑客常常是为了炫技或者声明一些自己的主张;隐式篡改一般是在被篡改的网站中插入色情、博彩等非法链接,或者直接在站下插入一些子页面,以帮助黑客牟取非法经济利益。

 

3、基于NLP的网站篡改检测引擎框架

 

网站篡改检测当前主要分为两类:

 

(1)基于网站服务端的本地检测:该类方法需要部署在网站的服务器端,常常采用核心内嵌或文件过滤技术,对站点发布的每个网页进行校验检测;

 

(2)基于网站的远程检测:该类方法不需要部署在网站的服务器端,远程通过爬取技术,获取网站内容进行检测,细分为:基于页面历史MD5比对技术、基于DOM树检测技术和基于敏感词检测技术。

 

本文提出的基于NLP的网站篡改检测引擎本质上是基于敏感词检测,不过在传统方案的基础上,加入了基于BERT的去误报引擎和基于新词发现的敏感词扩充引擎。整体框架如下:

 

 

4、基于BERT的去误报引擎

 

4.1 背景

 

传统的基于敏感词检测的技术,具有较高的误报率,增加人工运营的工作量。因为其仅仅检测敏感出现与否,却忽略了敏感词出现的上下文。

 

4.2 思路

 

采用机器学习模型,结合敏感词出现的上下文,进行判断,提升检测准确率。

 

4.3 数据准备

 

正样本:包含敏感词且属于篡改的长度为100的句子

 

负样本:包含敏感词但属于正常的长度为100的句子

 

4.4 模型选择过程

 

4.4.1-LR模型

 

采用结巴分词对语料进行处理,进而采用one-hot编码后,输入LR模型进行训练。该模型在验证集上的准确率87%左右。通过进行badcase分析,发现该模型能学习到词与词之间的共现性,但是无法学习到相关的位置信息。例如,训练集中,模型学习到文本“打击博彩”是正常内容,所以当验证集中出现“精准打击,博彩网址xxxx.com”时,模型会根据训练集中学习到的知识,将其判断为正常内容。

 

4.4.2-LSTM模型

 

为了克服LR模型的取点,充分利用上下文信息,我将结巴分词后的语料,输入LSTM模型进行训练。该模型在验证集上的准确率在93%左右。存在的主要问题是:受数据集大小的限制,该模型无法充分学习到词语间的相似性。比如“抵制色情”和“禁止色情”都是属于正常内容,但模型会因为不清楚“抵制”和“禁止”之间的相似性,而做出误判。

 

4.4.3-基于单个汉子的BERT模型

 

2018年底BERT的提出,在NLP各项任务中狂破11项纪录。2019年5月,公司AILAB团队开源了基于200G中文语料的BERT预训练模型。为了解决LSTM模型存在的问题,同时试试BERT模型的威力,我将AILAB团队预训练好的BERT模型,结合自己的数据和场景进行了应用。最终验证集准确率在99%以上。

 

4.4.4-模型准确率对比

 

 

4.5 引擎在真实场景中的检测情况

 

我们引擎与其他传统引擎在真实扫描197个站点(25281个url)上的结果对比:

 

 

从结果可以看出,我们提出的基于BERT的去误报检测引擎,能够大大提升篡改检测的准确性,减少人工运营工作量

 

5、基于新词发现的敏感词扩充引擎

 

在第3节的框架图不难看出,敏感词库是基于敏感词进行网站篡改检测的重要组成部分。只有匹配上敏感词的内容,才会进一步被送入基于BERT的去误报引擎中,因此敏感词库的丰富程度在很大程度上决定了整个引擎的检出能力。

 

然而,传统方法中,敏感词库主要来自于人工运营收集,成本高效率低。为了解决这个问题,本文提出了基于新词发现的敏感词扩充引擎。

 

基于新词发现的敏感词扩充引擎,核心依据是:“近朱者赤,近墨者黑”,我们可以从已知的敏感文本中,挖掘出新生代的敏感词。

 

经过调研,我们决定采用基于新词发现算法进行新的敏感词发现。算法核心思想即成词的必要条件:“词频高,词内部紧密,词外部丰富”,算法具体步骤如下:

 

 

经过算法发现的第一批新词举例如下:

 

 

( 魏向前 )

 

声明:本文来自腾讯安全智能,版权归作者所有。文章内容仅代表作者独立观点,不代表本站立场,转载目的在于传递更多信息。如有侵权,请留言。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注