导语 近年来,互联网发展日益迅猛,与此同时,互联网攻击也日益频发。黑客为了不同的目的或利益,经常发起各式各样的网络攻击。网站篡改是黑客攻击的一种。黑客常常出于利益、政治目的,攻破相关网站之后,将网站内容进行修改。本文提出的基于NLP技术的网站篡改检测引擎,致力于快速发现被篡改的网站,降低网站所有者的相关损失。
网页篡改是恶意破坏或更改网页内容,使网站无法正常工作或出现黑客插入的非正常网页内容。根据国家互联网应急中心2020年3月的报告:“境内被篡改网站的数量为 26,029 个,境内被篡改网站数量按地区分布排名前三位的分别是北京市、广东省和山东省。按网站类型统计,被篡改数量最多的是.COM 域名类网站,其多为商业类网站;被篡改的.GOV 域名类网站有 87 个,占境内被篡改网站的比例为 0.3%。”。
2、网站篡改常用手段
网站篡改从手段上分为显式篡改和隐式篡改。显式篡改往往很明显,进入网站直接很醒目,黑客常常是为了炫技或者声明一些自己的主张;隐式篡改一般是在被篡改的网站中插入色情、博彩等非法链接,或者直接在站下插入一些子页面,以帮助黑客牟取非法经济利益。
网站篡改检测当前主要分为两类:
**(1)基于网站服务端的本地检测:**该类方法需要部署在网站的服务器端,常常采用核心内嵌或文件过滤技术,对站点发布的每个网页进行校验检测;
**(2)基于网站的远程检测:**该类方法不需要部署在网站的服务器端,远程通过爬取技术,获取网站内容进行检测,细分为:基于页面历史MD5比对技术、基于DOM树检测技术和基于敏感词检测技术。
本文提出的基于NLP的网站篡改检测引擎本质上是基于敏感词检测,不过在传统方案的基础上,加入了基于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的去误报引擎中,因此敏感词库的丰富程度在很大程度上决定了整个引擎的检出能力。
然而,传统方法中,敏感词库主要来自于人工运营收集,成本高效率低。为了解决这个问题,本文提出了基于新词发现的敏感词扩充引擎。
基于新词发现的敏感词扩充引擎,核心依据是:“近朱者赤,近墨者黑”,我们可以从已知的敏感文本中,挖掘出新生代的敏感词。
经过调研,我们决定采用基于新词发现算法进行新的敏感词发现。算法核心思想即成词的必要条件:“词频高,词内部紧密,词外部丰富”,算法具体步骤如下:
经过算法发现的第一批新词举例如下:
该账号主要围绕智能化技术如何帮助企业提升网络安全水平展开,内容涉及机器学习、大数据处理等智能化技术在安全领域的实践经验分享,业界领先的产品和前沿趋势的解读分析等。通过分享、交流,推动安全智能的落地、应用。欢迎关注~