Machine Learning for Encrypted Malware Traffic Classification: Accounting for Noisy Labels and Non-Stationarity–阅读笔记
论文来源:2017 KDD
论文链接
加密恶意软件流量分类的机器学习:考虑噪声标签和非平稳性
不准确的基本事实和高度不固定的数据分布使得机器学习算法在恶意网络流量监测中结果不理想。
作者基于现实世界的制约,提供了具体的建议。
除了被动监控要求之外,准确地识别单个基于会话级别上的恶意网络流量是必要的,因为它能保证网络设备(如路由器和交换机)有效地执行网络策略。
利用加密的网络传输的百分比正在迅速增加,恶意软件作者也利用这一趋势来逃避基于签名的检测。
由于隐私、法律和技术原因,使用中间人解密传输,然后使用传统技术来检测威胁并不理想。
考虑到上述约束条件,对加密网络会话的元数据进行机器学习是一个自然的解决方案。
网络数据中的不准确的基础事实和非稳定性使得机器学习难以达到满意的效果。
获取标记数据进行培训的最直接的方法是使用沙盒环境运行恶意软件,并收集样本的相关数据包捕获文件,以获得正面标记的恶意数据,并监视网络并收集所有负面标记的良性连接数据。
网络数据中的不准确的基础事实:
网络数据的非稳定性:
作者通过实验测试六种常见算法在面对网络安全领域中不准确的基础事实和不断发展的数据流时的表现。
作者还提供了用于此问题的标准特征集与在领域专家的帮助下开发的自定义特征集之间的比较。
一般来说,追求对数据的更深入的理解和对数据生成过程的反复证明是非常有价值的。
附加的数据特征可以减轻准确的地面真实标签方面的一些负担:恶意软件通常通过访问标准网站(例如https://www.google.com)来执行连接检查。标准的检测不可能从这种标准网站开始区分,但是,如果包含关于连接的附加功能(如TLS握手元数据:TLS提供有关始发客户端的信息)则可以区分这两种情况。
作者在算法和数据特征方面为从业者提供了具体的建议,以正确和健壮地对加密的恶意软件通信进行分类。
TLS (运输层协议)是保护许多纯文本应用程序协议的主要协议,例如,HTTPS是TLS上的纯文本HTTP(应用层)协议。
客户端最初发送一个ClientHello消息(未加密),该消息为服务器提供了一个密钥套件列表和客户端支持的一组TLS扩展:
ClientHello之后,服务器发送一个ServerHello消息,其中包含:
客户端然后发送一个ClientKeyExchange消息,建立TLS会话的预主密钥。
线性回归: 找到一个线性模型,使得系数向量w使数据样本和标签之间的残差平方和误差最小。
逻辑回归返回一个适当的概率,可以解释为一个特征向量属于一个特定类别的概率。 我们使用了逻辑回归的两个不同版本: l2 -正则化和 l1 -正则化。
决策树学习输入特征的简单规则,将空间划分为不同的类。
这里使用网格搜索和交叉验证来调整两个可调超参数:在寻找最佳分割和树的最大深度时要考虑的特征的数量。
随机森林使用决策树集合进行预测。从完整数据集的引导样本中学习每个单独的决策树,集合的输出是所有单独树木的平均概率。
这里使用网格搜索和交叉验证来调整每个分割的特征数量和树的深度。
基于核的支持向量机通过使用内核技巧来将样本投影到更高维的特征空间,其中不同类更可能是线性可分的,从而学习非线性函数。
对于支持向量机,有以下可调超参数:
具有两个或更多隐藏层的多层感知器(MLP)模型可以学习高度非线性函数。 但是,这些模型也有许多需要学习的参数,并且有潜在的重要性。
再次使用网格搜索和交叉验证来调整MLP模型的超参数。
作者利用三种环境来收集数据:
作者编写了一个基于libpcap的开源软件包Joy 来处理实时传输和数据包捕获文件。 Joy将网络数据转换为包含所有相关数据特征的JSON格式。
对于所有的实验,我们只使用完成TLS握手的TLS会话,并发送应用程序数据。
对于标准的一组特征(22个特征)包括以下:
我们比较了六种常用算法:线性回归,l 1 / l 2-logistic回归,决策树,随机森林集成,支持向量机和多层感知器。 我们的目标是覆盖大量不同的学习和优化算法,而不是创建单独的超优化算法。 出于这个原因,当调整超参数时,我们简单地使用网格搜索和交叉验证一组标准值。 除了使用Keras [12]的多层感知器之外,我们使用了Scikit-learn [33]的实现。 再次,我们的重点是在监督学习技术[37]
增强的数据特征集通过合并单独的数据包长度和时间扩展了标准数据集,提供了应用程序行为步骤的更详细视图,以及TLS元数据,它提供了应用程序用于TLS的库的信息。
分组长度
图2显示了两个不同的TLS会话的数据包长度和到达间隔:图2a中的Google搜索和图2b中的bestafera发起的连接。 x轴代表时间,上行代表从客户端发送到服务器的数据包大小,下行代表从服务器发送到客户端的数据包大小。红线表示未加密的消息,黑线是加密的。
对于特定的功能,我们记录了会话的前50个数据包的有效载荷的大小。然后,我们将这些大小表示为一阶马尔可夫链。我们假定一个1,500字节的MTU,并创建了10个状态,每个状态为150个字节,并且估计具有收集的包大小的状态之间的转换概率。
TLS握手元数据
TLS ClientHellomessage提供了两个特别有趣的信息,可以用来区分不同的TLS库和应用程序。
由于大多数应用程序通常具有不同的优先级,因此这些列表实际上可能包含大量的歧视性信息。
大多数用户级别的应用程序以及扩展中大量的TLS连接都使用流行的TLS库,如:
这些应用程序通常具有唯一的TLS指纹,因为开发人员将修改库的默认值以优化其应用程序。
在这项工作中,作者从所提供的密码套件和扩展名列表中推导出特征,它们提供关于发起会话的客户端的信息。
作者观察到197个独特的密码套件和扩展。创建了一个长度为197的二进制向量,并且如果TLS会话支持相关的密码套件或扩展名,则为其分配1。
鉴于在网络安全领域进行监督学习的两个主要问题:数据中的非平稳性和噪声标签。设计了几个实验来评估六种流行算法的优缺点;还分析了增强特征集对算法的影响。
图3a和3b中最左边的列显示了企业流量与恶意流量之间的10倍交叉验证准确度。
即使是中等规模的网络,每天也有数千万的网络连接。由于这种规模,以及可能针对潜在恶意会话采取的典型的补救措施,保持较低的误报率比总的准确性要重要得多。图3还报告了0.001%的错误发现率(FDR)中的精度。这是分类的准确性,因为每10万真实肯定只允许一个误报。这个严格的度量被用作在真实网络环境中应该预期的结果的代理,即测试数据集中相对平衡的类别组成是不现实的。随机森林集合是唯一一个在使用标准表示时在.001%FDR处具有显着大于零精度的分类。随着增强的表示,所有的算法,除了线性回归和决策树,都使用这个度量来执行。
TLS(Transport Layer Security,安全传输层协议)用于在两个通信应用程序之间提供保密性和数据完整性。
该协议由两层组成:
较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面,与具体的应用无关。
马尔可夫链,是指数学中具有马尔可夫性质的离散事件随机过程。该过程中,在给定当前知识或信息的情况下,过去(即当前以前的历史状态)对于预测将来(即当前以后的未来状态)是无关的。
在马尔可夫链的每一步,系统根据概率分布,可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率。随机漫步就是马尔可夫链的例子。