一、特征工程的实践流程
在经典的机器学习领域,特征工程始终占据着核心位置,特征工程的质量高低往往直接决定了机器学习效果的成败。本文概述我们在加密恶意流量检测实践中的特征工程方法流程并分析最终使用的流量特征集合。
从广义的角度审视,特征工程的实践流程一般包含特征提取、特征选择、特征应用、特征迭代四个步骤。
二、特征提取
特征提取是特征工程初期的重要工作任务。如何设计待提取的候选特征集合,需要对恶意软件加密通信具有全面的领域知识积累。如何处理提取后的特征候选集合以得到适合机器学习模型输入的特征,需要对数据分析处理方法具有深入的实践经验。
初步特征抽取针对的候选特征集合分为协议无关特征与协议相关特征两类。协议无关特征是指流量数据传输过程中表现的通用特征,例如,数据包的大小、包时间间隔等。协议相关特征是指流量数据在加密传输协议层面表现的专有特征,例如,SSL 扩展种类、加密套件种类。通过对 SSL 协议标准和恶意流量数据的深入研究,并结合收集的数据集进行逐一验证,我们最终得出一组涵盖范围广且和恶意流量相关性高的候选特征集,然后开发专有特征提取系统,为后续的特征数据分析处理提供基础支持。
在已提取的候选特征集合基础上,进行进一步特征数据分析处理,对不适合直接作为机器学习模型输入的数据,进行深度特征抽取。例如,针对加密通信过程中可能出现的各类域名,传统方法是提取域名的数字个数、字母个数、非字母和数字个数等作为特征,我们基于深度学习技术训练 LSTM 模型直接提取其 DGA 域名概率值作为特征,能够给机器学习模型提供更有效的数据信息。后续实验表明,这类深度抽取特征在模型中起到了关键作用。上述 DGA 域名检测模型架构图如下图所示:
三、特征选择
特征选择是特征提取后的一项重要工作,直接决定了最终使用特征集的质量。我们共使用了四类特征选择方法:先验知识验证、降维可视化分析、启发式搜索分析、综合工程测试。前两类方法依靠数据统计分析,后两类方法结合分类模型。
先验知识验证,是指依靠专家先验知识直接对候选特征集合进行取舍。针对数据集上的特征统计结果表现出的差异,先验知识可以直接给出本质原因,指导特征选择。例如,SSL 扩展在 GREASE 扩展项上表现出的正常/恶意流量差别,是不能作为保留特征的,因为,GREASE 扩展项只是浏览器为保证协议可扩展性设计的特性,并不反映恶意流量特性。
降维可视化分析,是指对初步选择的一组特征集进行基于无监督学习的降维处理和可视化分析,直接判断这组特征集的质量。例如,我们使用 PCA 和 t-SNE 等降维方法对一组特征集进行降维,从对降维结果的可视化分析图可以看出,这组特征集在图中的数据集上的聚类和区分效果明显,具有较高的质量。降维可视化效果如下图所示:
启发式搜索分析,是指从一个较小的特征集出发,分批次逐步添加候选特征,使用机器学习模型进行分类效果测试,判断该批次特征的取舍。在特征集数量较大导致无法遍历测试每个特征集的场景下,基于随机选择和树搜索的分析方法可以较好地平衡效率和准确率。
综合工程测试,是指在基本确定的一组特征集基础上,结合机器学习模型进行进一步的综合工程测试。例如,决策树模型和随机森林模型都可以给出特征重要性数值和排序,在这两种模型上进行测试时就可以综合每一次的测试结果,淘汰一些排序低和数值低的特征,进一步精简特征集。
经过上述四步特征选择方法,得到一组相对比较准确的加密流量特征集。在此基础上,还要进行特征之间的相关性分析,去除相关性较大的重复特征,这可以通过计算相关系数、互信息等方法实现。虽然去除重复特征对模型的预测效果并无太大提高,但是其主要目的是精简特征集,减小模型复杂度,提高预测性能。
四、最终特征集
经过特征抽取和特征选择,最终得到四大类特征集:时空特征、握手特征、证书特征、背景特征。在这四大类基础上,又分为 54 个子类、超过 1000 种特征。这些特征足够细粒度地描述每一次加密会话,体现不同类加密流量的细微差别。
4.1时空特征
时空特征即前面提到的协议无关特征。“时” 指的是和时间相关的一组特征集,例如,流时长、包时间间隔等。“空” 指的是和包大小相关的一组特征集,例如,包大小转移矩阵、熵值等。下图分别是两个示例:
4.2握手特征
握手特征即前面提到的协议有关特征之一,主要是和 SSL 协议相关的一组特征集,刻画了客户端和服务端在握手阶段的一系列流量特征。例如,协议版本、支持的扩展项等。下图分别是两个示例:
4.3证书特征
证书特征即前面提到的协议有关特征之一,主要是和 x509 协议相关的一组特征集,刻画了双方使用的数字证书的一系列特征。例如,证书链长度、使用者正常度等。下图分别是两个示例:
4.4背景特征
背景特征是指从背景流量中提取并选择的一类特征,如 DNS、HTTP 等背景流量特征,其中,DNS 背景流量特征主要反映在域名特征,HTTP 背景流量特征主要反映在 HTTP 协议头内容特征。下图是一个 DNS 类特征的示例:
4.5特征迭代
特征工程是一个不断迭代更新的过程,上述内容只是其中一个迭代的工作任务,当基础数据种类和内容发生变动时,需要及时对特征工程进行再次循环,不断修正和完善特征集,在 “特征” 这个关键点上持续下功夫。
经过以上四个步骤,加密恶意流量检测的特征工程可以取得初步成效。经过我们的实践经验总结,需要特别强调的是,不止要在实验室数据验证与特征迭代方面不断加以完善,更需要在多场景下的多数据源现网环境中充分验证和迭代,同时注意新出现的威胁流量数据的收集与验证,才有可能得到一个可投入实际应用的加密恶意流量检测机器学习模型。