一种快速、不区分格式的检测恶意Web内容的深度学习方法
作者:fish@DAS
原文作者:Joshua Saxe(主页[1]), Richard Harang, Cody Wild, Hillary Sanders
原文标题:A Deep Learning Approach to Fast, Format-Agnostic Detection of Malicious Web Content.
原文会议:2018 IEEE Security and Privacy Workshops (SPW)
原文链接:https://arxiv.org/abs/1804.05020
一、论文主要内容:
本文主要内容是使用深度学习检恶意Web内容,提出的方法是直接使用简单正则表达式从静态HTML文件中提取的与语言无关的token流来表示HTML,再将该HTML文档的特征表示输入到神经网络中。该方法具有快速、不区分格式等特点,适合部署于终端、防火墙与web代理中。
二、作者的工作:
2.1问题提出
恶意Web内容是网络攻击的一大方式,利用恶意web内容的攻击在当今的网络上非常普遍。作者认为检测和阻止此类恶意内容存在以下挑战:
?首先,检测方法必须在用户终端和防火墙中的硬件上快速运行,以免影响用户的浏览体验。?其次,方法必须能够抵御恶意Web内容中的语法和语义变化,从而避免诸如Javascript模糊处理和文本随机化之类的对抗性规避技术。?最后,检测方法必须能够处理局部恶意内容的情况:嵌入正常的Web内容中的小段恶意代码。因为当今的许多网络攻击都是在良性网页中通过恶意的广告网络或评论来实现的。
为了解决这些挑战,本文提出了一种用于检测恶意Web内容的深度学习方法。
2.2模型设计
设计思想
首先对于局部恶意片段,作者认为要确定给定的文档是恶意的,需要模型在多个层次规模上检查该文档。这是因为恶意Javascript代码段的大小范围很小,但是HTML文档的长度差异很大,所以恶意内容部分在整个HTML文档比例中是可变的。
作者还认为不应该显式分析HTML文档(HTML,Javascript,CSS和原始数据的集合),愿意是实现起来复杂,需要大量的计算开销,并且会在检测器自身内部打开攻击页面,这有可能潜在地被攻击者利用。事实上web页面中可执行部分是有JavaScript控制的,因此也不应该在HTML文档中进行Javascript的仿真,静态分析或符号执行。
到此,思路清晰。作者仅仅对HTML文档计算词袋样式的token,并且不只使用表示整个文档token流,还使用多个不同层次规模大小的表示文档的token流。
具体实现
本文方法包括一个特征提取器和一个神经网络模型,特征提取器即从HTML文档中解析出一系列token,神经网络模型通过使用多个层次规模的聚合特征的共享权重来进行分类。其中神经网络模型部分包括两个逻辑组件:
?inspector,它以不同层次规模大小的文档按比例应用共享权重,并将有关文档的信息聚合为1024长度的向量。?master network,该网络使用inspector的输出为输入,进行最终分类决策。
Feature extraction模块:
原始数据为HTML文档,使用正则([^\x00-\x7F]+|\w+)对文档进行分割,这个正则表达式的意思是匹配除了ASCII值从0-127的字符外的字符或者匹配包括下划线的任何单词字符(等价于’[A-Za-z0-9_]’)二者之一。简单说就是去掉了大部分标点符号。
我们将token流分成16个等长的连续块,其中每个块的长度定义为token数,如果文档中的令牌数不能被16整除,则最后一个块中的token数会比其他块少。
最后使用散列方法,将每个token块散列到1024个分区,16个块则表示为16X1024的向量,该向量表示一个HTML文档的词袋样式的token。
Inspector模块:
将16个token块分成8份、4份、2份、1份四个不同大小。一共就是31个token块。Inspector具有两个全连接层,每层具有1024个ReLU单元,使用归一化来防止梯度消失,dropout设置为0.2。经过上述过程,31个块每个都输出为1024维的向量,过最大池化得到一个输出。
Master模块:
最后一层是26个Sigmoid函数,其中1个用于判断该Web是否为恶意,其余25个用于判断具体类别。
三、实验
3.1实验数据
作者使用从威胁情报站点VirusTotal收集的数据。VirusTotal每天接收数万个新的HTML文件,使用来自数十家安全供应商的60个Web威胁扫描程序扫描它们。作者所在的Sophos公司订阅了VirusTotal的付费威胁情报服务,会收到提交给VirusTotal的每个HTML文件及其相应的扫描结果。本文中使用的实验数据集是在2017年前10个月从VirusTotal Feed中收集的。
训练/测试划分是根据文件在VirusTotal上首次报告的时间计算的。此过程确保
?训练和测试集是不同的?训练和测试过程近似于实际的部署方案
数据的标签是从扫描器的综合结果得出,标记规则为:
?Benign: receiving 0 detections from security vendors?Malicious: receiving 3 or more detections?Indeterminate: received 1 or 2 detections, and did not use them
这种标记方法带来的弊端是只会简单地记住安全厂商产品已经能检测出恶意web内容的知识,而不是学习新的检测功能,以检测厂商社区可能会错过的恶意软件。
实验将9月1日之前的数据用于训练,9月1日之后的数据用于测试。这样切分数据集有助于减轻供应商社区可能会错过的恶意Web内容的能力的问题。这是因为使用的测试集是训练集中未见过的文件。为了证明提出的方法的有效性,作者还手动检查了样本,标签为良性,但是将其分配为恶意的可能性很高,即误报率较高,他们发现这些假阳性文件中的大多数都明显是恶意或垃圾内容。
3.2实验步骤
作者进行了五个对比实验,其中三个测试了本文的方法相对于其他模型的有效性,剩下两个探索了模型的内部工作原理。
三个测试模型有效性的对比实验:
?LR-BoT:Elastic Net regularized logistic regression on bag of token features.?FF-BoT:A feed-forward architecture using the 16284-length feature hashed bag of tokens feature representation used above.?XGBoost-BoT:A gradient boosted decision tree (XG-Boost) model using the same feature input as FF-BoT.
两个验证模型内部结构对实验结果的影响的对比实验:
?FlatSequential:删除了平均池化步骤,即在输入到Inspector模型的31个聚合表示中,该模型只使用了最初的16个连续块。该对比模型检验了使用不同层次规模的文档对检测结果的准确率有所提升。?FlattenedFF:使用相同的特征表示,但没有Inspector模块,即没有应用共享权重,而是简单地将16x1024的token向量的转换为单个16384长的向量,并将其输入到前馈神经网络中,使用单独权重。该对比模型检验了共享权重对检测结果的准确率有所提升。
3.3实验结果
作者提出的方法误报率为0.1%,ROC曲线为97.5%,对小规模的网页能以每秒超过100条的速度进行分类,能够检测到安全社区遗漏的未知恶意Web内容。进一步地,对不同恶意家族也能进行区分,对XSS注入、浏览器漏洞利用和iFrame操纵攻击检测结果突出,但对钓鱼网站的表现最差。
四、总结
文章没有使用常规的词袋模型用于提取数据特征,而是使用hash对原始HTML文档进行处理,并考虑了不同层次规模大小的划分,以往的研究多是直接使用一个整体,没有考虑局部的一些特征,这也许会错过有效信息导致检测结果的偏差。这篇文章的对数据的处理这块想法新颖,不过模型训练部分属于常规操作,实验结果表现良好。