APP下载

基于深度图卷积神经网络的Exploit Kit攻击活动检测方法

2022-07-06刘小乐许益家

信息安全研究 2022年7期
关键词:卷积标签样本

刘小乐 方 勇 黄 诚 许益家

(四川大学网络空间安全学院 成都 610065)

现代社会中,用户每天都需要上网进行一些必要的网络活动,如浏览新闻网站、查看电子邮件、搜索信息等.用户点击一些看起来很正常的链接,然而可能会遭受信用卡信息被盗、电子邮件账户被劫持、文件勒索等.这些网络安全事件正日益成为Web用户普遍会遇到的问题,它们通常是由漏洞利用工具包(exploit kit,EK)造成的.EK通常利用Web浏览器及其相关插件、操作系统或其他软件中的漏洞来传播恶意负载.典型EK通常包括一个管理控制台、一堆不同应用程序的漏洞利用代码以及其他帮助黑客进行攻击的附加功能[1].EK攻击的大致过程是:用户访问受感染的网站或点击恶意广告,经过1个或多个重定向网站重定向到恶意网站,恶意网站利用浏览器或插件漏洞控制用户计算机,最终控制它们自动下载恶意负载[2].虽然EK的活跃程度会因浏览器的安全性提高、漏洞修补等因素受到波动,但只要软件中存在漏洞,EK就是一个有效的威胁.Bottle EK从2019年9月以来一直比较活跃,它利用漏洞CVE-2018-15982和CVE-2018-8174启动木马Cinobi,从日本银行用户信息中窃取用户的银行凭据[2].因此,如何准确地检测EK攻击活动是安全研究人员需要重视的问题.

之前的研究工作是通过构建url检测模型来判断url是否托管了EK:文献[3-5]从IP地址、whois查询结果、域名、重定向等方面提取特征检测可疑的url;Akiyama等人[6]开发了一种基于蜜罐的监控系统,专门监控url重定向行为,发现恶意url重定向与EK攻击活动密切相关;Eshete等人[7]通过分析40多个EK的url样本来提取基于内容、链接和结构的特征以及浏览器与恶意服务器之间的交互特征,并构建一组分类器,通过蜜罐访问url并使用这些分类器来分析检测url.以上基于url的检测方法忽略了EK攻击期间网络流量数据包之间的交互过程,导致检测准确度较低.为解决这一问题,有研究者提取EK攻击过程中产生的HTTP重定向链来进行分析:Mekky等人[8]关注Web会话的重定向链,利用重定向链的长度、跨域次数和重定向延迟区分有EK攻击活动的网站与正常网站,实验表明该方法在准确识别恶意链方面非常有效;Burgess等人[9]提出REdiREKT系统,利用Zeek入侵检测系统处理HTTP流量,从中提取重定向链,将每个样本的重定向链存储为JSON对象并从中提取48个特征进行检测;Qin等人[10]从网络流量中提取HTTP头信息,并基于用户的单个会话构建HTTP消息图,从图中提取节点特征、边特征、图属性特征以及和图中心性质相关的特征.这些方法虽提高了模型检测的性能,但提取的特征仅包含节点信息,忽视了节点间的结构特征,导致构建的模型对EK攻击活动的检测是不精确的.

本文提出一种基于深度图卷积神经网络(deep graph convolutional neural network,DGCNN)检测EK攻击活动的方法.该方法根据EK网络会话中的HTTP头信息和响应实体内容提取重定向关系,根据自定义的节点和边的生成规则构建重定向图,并使用DGCNN提取深层次的图节点结构特征.相比其他检测模型,本文方法增加了节点之间基于响应实体内容的重定向,构建更完整的重定向图;使用DGCNN丰富图的节点结构特征向量表示,提高了模型检测准确率,使得模型平均检测准确率达到97.54%.

1 EK攻击活动检测模型

本文使用PCAP格式数据集.PCAP文件由1个PCAP文件头和多个PCAP数据包组成,PCAP数据包又由数据包头和数据包内容组成,数据包内容是本文需要进行解析还原的数据.本文检测模型框架如图1所示.检测流程为:首先,通过函数scapy.rdpcap()将PCAP格式的样本解析成HTTP请求和响应,确定HTTP请求响应对;然后,提取HTTP头信息中的重定向和响应实体中基于内容的重定向,对每个样本构建一个连通的重定向图,该图将每对HTTP请求响应对作为节点,HTTP请求响应对之间的重定向关系作为边;接着,根据节点属性字段content_type占比确定节点标签的数学表示,根据边类型确定边标签的数学表示,提取HTTP请求响应对中的域名和路径的统计特征作为节点的属性特征;最后,将节点属性特征、节点标签和边标签的数学表示输入4层图卷积层进行深层次的图节点结构特征提取,将提取的节点结构特征向量连接聚合成整张图的图表示,并输入传统的卷积层、池化层和全连接层进行图分类.

1.1 数据解析

使用函数scapy.rdpcap()解析PCAP格式样本.scapy.rdpcap()按照TCP/IP 4层参考模型显示数据包的详细信息,数据包解析后的输出字段信息如表1所示.本文通过解析[Raw]层的信息来提取HTTP请求和响应的各字段信息.

表1 数据包解析后的分层及字段信息

由于HTTP/1.1协议的并发性,并不能直接确定每个HTTP请求对应的HTTP响应.根据当前数据包请求中的ack值是否等于其他数据包响应中的seq值来确定最终的HTTP请求响应对.

1.2 重定向图构建

本文将构建的重定向图命名为HRG.HRG是一个有向的异质图,由节点和有向边组成,每个节点都有自己的类型和属性信息,每条边也都有自己的类型和方向.

1.2.1 HRG 中节点和边的生成方法

1) 节点生成

HRG中的每个节点表示1个HTTP请求响应对,表示为字典形式node={id,host,path,referer,location,method,http_version,status_code,content_type,payload}.其中,id表示网络会话中HTTP请求响应对的顺序,即节点在图中的序号.从HTTP请求报文中获取method,http_version,host,path和referer字段;从HTTP响应报文中获取location,status_code和content_type字段,并将获得的响应实体内容添加到payload字段.

2) 边生成

HRG中的每条边表示2个节点之间的重定向关系,表示为字典形式edge={srcN,dstN,type}.其中,srcN表示起始节点,dstN表示结束节点,type表示边类型.type有4个属性,分别为None,referer,location和content_redir(基于响应内容的重定向).本文定义的边生成规则如下,其中节点的url由字符串“http://”与节点的字段host和path中的字符串拼接得到.

(1) 如果i.location等于j.url且i.id小于j.id,则生成从节点i指向节点j的类型为location的边;

(2) 如果i.referer等于j.url且i.id大于j.id,则生成从节点j指向节点i的类型为referer的边;

(3) 如果i.payload中的url等于j.url且i.id小于j.id,则生成从节点i指向节点j的类型为content_redir的边,本文使用正则表达式提取payload中的url;

(4) 如果节点i是节点j的上一个节点,且以上3种情况都没有,则生成从节点i指向节点j的类型为None的边.

图2给出了一个由有Neutrino EK攻击活动的网络会话构建HRG的示例,图中展示了5个HTTP请求响应对的信息,即创建了5个节点.在会话交互过程中,用户首先访问http://93.171.172.220/?1(节点1),服务器返回一个HTTP重定向目标http://93.171.172.220/?2(节点2);然后用户访问节点2,服务器返回一个HTTP重定向目标http://1208b83b81c141ecd6f05e24.webhop.org:8000/aotyprvqvj?hash=6a4c601e0802b403736ff29 f3ceaa7c0&qspot=4012736(节点3);接着用户访问节点3所在网站,该网站加载所需的.js,.css等资源,从而引出节点4、节点5等其他节点.根据边生成规则(1),节点1的location与节点2的url相同,生成从节点1指向节点2的类型为location的边.同样,生成从节点2到节点3的类型为location的边.根据边生成规则(2),节点4和节点5的referer与节点3的url相同,分别生成从节点3指向节点4和节点5的类型为referer的边.

1.2.2 HRG中节点和边的数学表示

为方便将图作为DGCNN的输入,将图中节点和边的信息转化为数学表示.将节点信息分别转化为节点标签和节点属性特征,将边类型转化为边标签.

1) 节点标签数学表示

本文根据节点的属性字段content_type来确定节点标签.首先从malware-traffic-analysis.net[11]网站收集有EK攻击活动的PCAP文件,从文献[10]收集正常网络活动的PCAP文件,构建所有PCAP文件的HRG图;然后分别对有EK攻击活动的HRG图样本和正常网络活动的HRG图样本统计每种content_type出现的次数占所有节点的比例.根据有EK攻击活动的HRG图样本中content_type的排名,每种content_type占比结果如表2所示:

表2 content_type占比

从表2可知,有EK攻击活动的PCAP文件流量数据包中content_type是text/html的占比最大,响应的HTML内容中可能会包含CSS,JavaScript等内容,特别是嵌入或引入的JavaScript脚本可能是恶意的.有EK攻击活动样本中content_type是图片格式和CSS样式表的占比较正常网络活动样本中的少,说明正常网络活动样本可能经常引入图片或CSS样式来丰富网站内容,重定向网站或执行漏洞利用的网站则不需要这些额外资源.有EK攻击活动样本中包含java,flash,silverlight和octet-stream的content_type占比较正常网络活动样本中的大,它们的响应中可能包含java,flash和silverlight的漏洞利用信息,如果在EK攻击活动的漏洞利用阶段执行成功,EK攻击将交付恶意负载,将其安装在用户的客户端,而正常网络活动样本中这些响应类型几乎不会出现.根据表2给具有不同content_type的节点设置不同的节点标签(用权重表示),如表3所示:

表3 节点标签数学表示

2) 节点属性特征数学表示

通过人工对有EK攻击活动样本和正常网络活动样本进行分析,发现有EK攻击活动的请求中出现的域名和路径与正常网络活动请求中出现的域名和路径在长度、特殊字符、字母等方面有很大不同.本文提取节点中host字段域名的特征和path字段路径和查询的特征,共提取22个字符统计特征作为节点的属性特征表示,如表4所示.表4中“路径”指url中的路径拼接查询后的字符串,粗体字符串表示本文提取的新特征.

表4 域名和路径的字符统计特征

续表4

3) 边标签数学表示

本文根据边类型确定边标签.分别统计所有有EK攻击活动的HRG图样本和正常网络活动的HRG图样本中的边类型占比,如表5所示.由表5可知,有EK攻击活动样本中边类型content_redir占比最大,说明在EK攻击活动中攻击者经常利用基于内容的重定向将用户重定向到恶意网站.边类型referer占比较小,因为EK攻击活动中的重定向网站不需要引入额外的.css,.js等资源来丰富网站内容,但也可能是攻击者将HTTP头信息中referer字段的信息隐藏.正常网络活动样本中边类型referer占比最大,说明在正常网络活动中正常网站内容丰富,通常会通过referer加载许多其他资源.表5还给出了根据边类型占比设置的边标签(用权重表示).

表5 边类型占比及边标签

2 基于DGCNN的EK攻击活动检测模型构建

DGCNN是文献[16]提出的端到端的用于图分类的深度学习模型,直接接收图(用图的邻接矩阵和节点信息矩阵表示)作为输入,不需要进行任何预处理.DGCNN首先使用多层图卷积层提取深层次的图节点结构特征;然后SortPooling层根据图卷积层的输出(即节点结构特征向量)对图中节点进行排序,并按照节点顺序连接节点结构特征向量生成整张图的图表示;最后将输出的图表示输入传统卷积层和全连接层进行图分类.

1) 图卷积层

本文用X∈n×c表示图的节点信息矩阵,是由节点标签的one-hot编码矩阵和节点的属性特征矩阵拼接后的矩阵.其中,c表示图初始有c列特征元素,n表示图中的节点数.图卷积层的输出根据式(1)计算得出:

(1)

为了提取深层次的图节点结构特征,DGCNN堆叠多个图卷积层,如式(2)所示:

(2)

其中,Zt表示第t个图卷积层的输出,Wt表示第t个图卷积层的参数矩阵.将t个图卷积层的输出水平连接起来得到输出Z1:t[Z1,Z2,…,Zt].Z1:t的每一行都可以看作是1个节点的特征向量表示,其编码了节点的深层次的结构信息.

2) SortPooling层

SortPooling层的输入是Z1:t,共有n行,每行表示1个节点的特征向量,因此有n个节点.每列表示组成特征向量的1个特征元素[17].该层的输出是1个有k行的向量矩阵,k是一个可调整的整数参数.经过该层池化后,原来的n个节点变成k个节点,且这k个节点按节点结构特征向量进行了排序.把这k个节点的结构特征向量按排列的顺序展开,连接成整张图的图表示.

将SortPooling层输出的图表示输入卷积层、最大池化层和全连接层进行分类预测.

3 实验与分析

3.1 实验数据及环境

本文的EK数据集从网站malware-traffic-analysis.net[11]获取.该网站由专业安全研究人员维护,其中的案例几乎包含了所有流行的EK,且每个案例都由研究人员手动分析.对网站从2013—2021年的PCAP文件进行爬取,将爬取的.zip文件用网站提供的密码解压缩,除去密码不能解密的和不是EK攻击活动的,共得到1 199个PCAP文件.正常数据集采用文献[10]数据,从Alexa排名前5万的网站中收集,总共40 GB.本文使用VirusTotal[18]过滤掉正常数据集中包含可疑域名的PCAP文件,再过滤掉没有重定向边的PCAP文件,最后留下10 543个至少包含1条重定向边的PCAP样本.为保证数据集的平衡,从正常数据集中随机选取1 200个PCAP文件构成正常网络活动样本.本文对EK数据集与正常网络活动样本中的每个样本都构建HRG图,总共获得113 271个节点和210 904条边.

实验环境的软硬件配置信息如表6所示.PCAP文件解析使用scapy库实现,HRG图的创建使用networkx库实现,DGCNN模型使用stellargraph库和Keras库实现.

表6 实验环境配置

3.2 实验评估指标

本文的EK攻击活动检测是一个二分类问题.实验结果使用准确率(acc)、精确率(P)、召回率(R)和F1值进行评估,公式如下:

(3)

(4)

(5)

(6)

其中,TP(true positive)表示样本预测值为恶意且样本标签为恶意的样本数,TN(true negative)表示样本预测值为正常且样本标签为正常的样本数,FP(false positive)表示样本预测值为恶意但样本标签为正常的样本数,FN(false negative)表示样本预测值为正常但样本标签为恶意的样本数.

3.3 实验设计与结果分析

本文模型各层设置的主要参数如表7所示:

表7 模型参数设置

为验证本文模型的有效性,设计以下2组实验.

1) 准确率(acc)和损失值(loss)

将收集的EK数据集和正常网络活动样本按照8∶2的比例分为训练集和测试集,采用本文方法使用训练集训练模型,并使用测试集进行模型评估.训练模型的迭代轮数(epochs)为200,批处理大小(batch_size)为50,选用Adam优化器且学习率为0.001.图3给出了在训练集和测试集上得到的acc和loss,这里loss是指模型分类预测值和真实值之间的差别,由交叉熵损失函数计算得到.

由图3(a)可知,随着epochs的增加,训练集和测试集的acc都逐渐增加.当epochs为200时,训练集的acc达到98.75%,测试集的acc趋近于训练集的acc,达到97.81%.由图3(b)可知,随着epochs的增加,训练集和测试集的loss都呈下降状态,且在[0,0.2]的范围内波动.当epochs为200时,训练集的loss为0.035 7,测试集的loss为0.068 5.可见,随着epochs的增加,本文模型能够有效检测EK攻击活动且损失较小.

2) 检测模型对比

将本文提出的EK活动检测模型与文献[10]和文献[19]提出的检测模型进行对比,使用10折交叉验证方法进行模型评估,结果如表8所示:

表8 检测模型对比 %

文献[10]构建网络会话图模型,从图中提取节点属性特征、边属性特征、图属性特征和图中心性质特征进行检测,忽视了图的节点结构特征.文献[19]利用EK中使用的url路径和查询组件特征检测EK活动,因提取的特征少、不全面,导致训练的模型检测EK攻击活动不准确.本文采用图卷积神经网络的方法提取重定向图的节点结构特征,丰富了图的向量表示,由表8可知,本文模型在准确率、精确率、召回率等方面都有明显提升,平均检测准确率达到97.54%.

4 结束语

为更好地解决EK攻击活动检测问题,本文提出一种基于DGCNN的EK攻击活动检测模型.通过与其他方法对比,本文模型能够精确有效地检测EK攻击活动,平均检测准确率达到97.54%.为继续提高模型的检测准确率,未来研究工作主要有3点:1)公有的EK数据集较少,还需要收集更多的数据集进行模型验证;2)本文只提取了节点属性的统计特征,忽略了属性的字符级特征;3)本文利用url的正则匹配提取基于响应内容的重定向关系,但攻击者可能通过对响应内容中的url实施分割、编码等混淆技术来阻止检测,这导致提取的url不完善,未来将研究如何重构响应内容中的url.

猜你喜欢

卷积标签样本
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
用样本估计总体复习点拨
从滤波器理解卷积
规划·样本
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
基于傅里叶域卷积表示的目标跟踪算法
随机微分方程的样本Lyapunov二次型估计
让衣柜摆脱“杂乱无章”的标签