基于多标签SVM的DNS隧道分类

前言

由于DNS可以完全通过防火墙而不会被过滤,因此常被利用来传输信息,造成了很大的安全隐患。目前可以用来建立隧道的工具有iodine、dnscat2、dns2tcp等等。对于这些隧道的检测方法也有很多,该文不仅对DNS隧道进行了检测,同时还进行了分类。

简介

介绍目前对于DNS隐蔽通道的检测基本是一个二分类问题:去检测是否为DNS隐蔽通道。在这方面主要有两种方法:一是针对DNS有效载荷,诸如请求域名长度、域名熵等内容进行分析;二是针对DNS流量,比如同一个域名的主机数、位置、每一时间段的DNS请求量等进行分析。该文提出,如果能对DNS隐蔽通道进行分类,那么可以识别出一些未知流量,这对于研究很有意义,因此提出了多标记支持向量机对DNS隧道进行分类。在后文将会对相关工作、具体方法、实验分析等内容进行讲解。

相关工作

介绍了SVM的相关概念和目前对DNS隧道的研究现状。其中,作者将DNS隧道分为4类:HTTP类型、HTTPS类型、FTP类型和POP3类型。传统的线性SVM只能解决线可分的二分类问题,因此对于多分类问题,如果用线性SVM处理,只能先区分是否为DNS隧道检测出DNS隧道,然后在DNS隧道中再区分是否为HTTP隧道,再依次区分下去,直至区分出所有类别。在实际工作中,这样的处理方式有很大的弊端并且效果也不太好,因此该文使用kernelSVM的多标签分类,不仅可以检测DNS隧道,还能区分隧道的类型。

实验方法

实验过程包括:数据集、特征集和分类的过程。

A.数据集

用工具iodine、dns2tcp采集DNS隧道数据。其中,通过模拟访问网站获取HTTP、HTTPS类型数据;通过下载文件获取FTP类型数据;通过下载邮件获取POP3类型数据。同时采集正常的流量作为合法的数据。

B.特征提取

特征:DNS请求长度,IP分组发送方长度,IP分组响应长度,编码的DNS查询名称长度,IP分组熵和查询名称熵。

C.K均值聚类

由于特征是数值,没有对应相应的分类标签,不方便进行学习,因此,需要离散化数据,将数据限定在一定的范围内,用K均值聚类的方式将数据划分到相应的标签数组中。

D.Kernel SVM多标签分类

使用核函数,将低维输入空间,转换到高维输入空间,能用对应的超平面准确划分数据。Kernel SVM可以一次对多个类别进行分类,而不是将多个分类处理为多个二分类的情况。如下图,可以使用帯圆圈的超平面而不是线性超平面来执行。

实验讨论及结果

数据集中,90%做为训练,1%作为测试,用1折交叉验证法对kernelSVM分类进行实验验证,同时用贝叶斯分类作为对比。通过对比验证了多标签kernel SVM的性能高于多标签贝叶斯分类,实验结果如下:

总结

首先,用iodine、dns2tcp隧道工具,通过模拟浏览网站、下载文件等行为分别获取HTTP、HTTPS、FTP、POP3四种类型的隧道样本,同时直接采集获取正常的样本。对这些样本进行域名长、信息熵等特征提取后,采用K均值聚类划分数据类别,最后用多标签kernel SVM与多标签贝叶斯分类进行实验对比,证明kernel SVM的性能高于贝叶斯分类。

思考

1.样本集比较少容易产生过拟合性;只采用了2个隧道工具对样本进行采集,容易导致样本特征不全面。

2.实验中,对于是用流还是DNS回答请求对还是什么进行实验并没有说清楚;并且结果中,虽然kernelSVM的性能略高于贝叶斯分类,但是除了正常样本和POP3之外,FTP、HTTP、HTTPS的F-measure并不高。还有很大的提升空间。

3.该文提到对DNS隧道样本进行分类可以检测一部分未知的隧道样本,但是在实验中并没有体现这个观点,究竟能不能识别未知的样本还有待商榷。

作者:Ahmed Almusawi,Haleh Amintoosi

标题:DNS Tunneling Detection Method Based on Multilabel Support Vector Machine

原文期刊:Security and Communication Networks 2018

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181029G0LV9A00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券