深度分享|关于恶意软件加密流量检测的思考
摘要
近年来,随着人们网络安全意识的提升,对于数据保护的意识也越来越强,促使加密技术在互联网上迅速普及。TLS作为数据包加密的标准协议,被多数网站用来保护用户的消息、交易和凭证,但是,越来越多的恶意软件也利用TLS加密来隐藏其通信,以绕过传统的检测设备或平台。本文主要围绕恶意软件检测的关键问题进行探讨。
一、前言
互联网现在已经成为我们生活中不可或缺的一部分,如何保证用户的敏感信息及隐私在网络空间中的安全性成为至关重要的问题。大多数互联网通信都使用TLS加密,但并不能保证绝对的安全,恶意软件也会使用TLS和服务端通信,比如接收服务端指令或发送从被感染主机上收集的敏感数据。随着TLS的使用越来越普遍、有效证书的获取越来越廉价和容易,使用TLS的恶意软件也会越来越多,所以检测出恶意软件的TLS加密通信流量是非常必要的。
通过解密TLS数据包载荷来检测恶意软件通信的方法有很多缺点,本文关注数据包的元数据等特征而非内容来避免解密检测的弊端,文中首先列举了一些恶意软件TLS流和良性TLS流的区别,然后从数据、特征、检测等方面抛出了恶意软件通信流量检测的关键问题并给出相关建议。
二、恶意软件特征
特征的选择必须由观察到的恶意流和良性流的明显差异而定,如果两个数据集一开始就非常相似,那么尝试对其进行分类肯定是徒劳的。通过研究数据之间的具有区分度的特征,可以验证恶意流和良性流确实是可分离的,并且对特征的构建和选择也具有一定指导意义。
帝国理工大学的Olivier Roques公开的报告[1]中对数据集[2]的特征分布进行了分析,该数据集包含一万多条恶意流和两万多条良性流,良性流量数据主要来自2019年5月到6月Lastline的企业办公网络环境,恶意流量数据主要来自公开数据集mta[3]和Stratosphere[4],时间跨度较长,从2016年到2019年。本节从元数据、TLS参数、证书三个方面列举了恶意软件TLS流和良性TLS流的一些差异。
1、元数据差异
(1)源端口:默认情况下,操作系统随机分配的端口范围是49152-65535,但是一些恶意软件不向操作系统请求源端口,而是使用自定义端口,这使其在普通连接中突显出来。如图1所示,横坐标表示源端口是否为系统随机分配的端口,纵坐标表示在恶意流和良性流中各自的占比。
图1 源端口特征分布
(2)目的端口:默认情况下,合法的服务器在特定的端口上如443、465、853、992等监听TLS相关的数据包,除了恶意软件,客户端没有理由发起TLS会话到其他端口,但一些恶意软件作者可能只想使用加密,并不关心应该使用哪个端口,所以使用其他端口提供TLS服务,这使其很容易被检测。如图2所示,横坐标表示目的端口是否为TLS常用的目的端口,纵坐标表示在恶意流和良性流中各自的占比。
图2 目的端口特征分布
(3)字节熵:熵值的大小通常取决于加密的强弱,一般认为恶意软件流可能由于忽略数据包的加密而具有较小的熵值,但实际情况恰恰相反,良性流具有较小的熵值,如图3所示,横坐标表示恶意流和良性流,纵坐标表示平均字节熵的值。推测这与良性流的持续时间较短有关,因为TLS流中握手部分未加密并且占良性TLS流的很大一部分,所以降低了最终的平均字节熵。
图3 字节熵特征分布
(4)流的持续时间:如图4所示,横坐标表示恶意流和良性流,纵坐标表示流的持续时间,恶意软件通信的平均持续时间要比良性流量更长,这是由于Lastline的员工通常使用TLS来加载网页和下载小的资源,所以会导致较短的TLS会话,而恶意软件可能倾向于发送和接收大量的数据。
图4 流的持续时间特征分布
2、TLS参数差异
(1)TLS客户端提供的密码套件:如图5所示,横坐标表示TLS密码套件的代码,纵坐标表示在恶意流和良性流中各个密码套件的占比。有些密码套件完全被恶意软件忽略,而有些则不成比例地受到青睐,比如蓝色框中的两个TLS密码套件因为比较安全所以良性流用的较多,而红色框中的两个密码套件由于使用了过时的RC4算法而被良性流认为是不安全的,恶意软件使用得却较多,这可能归因于恶意软件作者缺乏选择密码套件强度或更新密码套件的意识,或者只要内容加密而并不关注算法的选择。
图5 客户端提供的密码套件特征分布
(2)TLS客户端提供的扩展:如图6所示,横坐标表示TLS扩展的代码,纵坐标表示在恶意流和良性流中各个扩展的占比。比起恶意流,良性流倾向于提供更多的扩展,且蓝色框中的这几个扩展几乎没有被恶意软件使用。
图6 客户端提供的扩展特征分布
3、证书差异
(1)证书是否自签名:如图7所示,横坐标表示证书是否自签名,纵坐标表示在恶意流和良性流中各自的占比。正如预期的那样,恶意软件往往更多地依赖于自签名证书。
图7 证书是否自签名特征分布
(2)证书包含域名的数量:如图7所示,横坐标表示证书包含域名的数量,纵坐标表示在恶意流和良性流中各个数量的占比。相比于恶意流,良性流证书包含的域名会比较少,一种可能的解释是由于合法证书比较贵所以公司会把多个域名放到同一个证书中。
图8 证书包含域名的数量特征分布
三、相关问题
通过对恶意软件通信流量检测的探索和研究,可以从以下几个方面对相关问题进行探讨。
1、数据的采集
分类器的性能在很大程度上取决于训练数据集的质量,从上文也可以看出很多特征取决于数据集获取的方式或环境,所以我们需要构建一个尽可能反映现网流量的数据集。关于数据集,笔者认为分类器在实际场景中的使用主要受到以下两个因素的影响。
(1)网络环境
一般来说,不同网络环境下恶意流量是相似的,而良性流量受网络环境影响较大,会随着操作系统、浏览器、业务场景等的不同而产生较大变化,比如学校、家庭和不同企业产生的流量是不一样的。
模型在不同网络环境中迁移时,为了减少误报,可能需要为不同环境重新构造良性数据集,而良性数据也是比较容易收集的。
(2)时间
相比良性流量,时间的偏差对恶意流量的影响更大一些,收集到的数据会受到概念漂移的影响,这意味着数据会随着时间的推移而过时,恶意软件不断优化更新、新的恶意软件被引入、用户习惯产生变化等,训练好的模型的可用性在时间上是有限的,很可能只在近期有效。
数据在时间上的偏差并非无解。一方面,为了避免时间偏差的影响,我们应该收集来自同一时期的恶意数据和良性数据,保证分类器学到的是黑白数据的特征而非不同时间流量的差异。另一方面,为了使分类器对时间衰减具有鲁棒性,我们需要及时关注新的恶意软件保持恶意数据集的更新,或者结合概念漂移样本检测等方法,使分类器能够检测到新的威胁。
2、特征的构建和选择
特征工程是将原始数据转变为模型训练数据的过程,好的特征工程能使模型性能得到提升,有时甚至在简单的模型上也能取得不错的效果。特征工程一般包括特征构建、特征提取和特征选择三个部分,笔者对恶意软件流量检测中特征构建和特征选择的相关问题进行了简述。
(1)特征构建
TLS参数比如密码套件或扩展等都是可以设置的,一些攻击者也会根据合法流量中广泛使用的参数不断更新恶意软件,再比如是否自签名、有效期等证书参数也有方式修改,所以这些特征很容易受到数据集或时间的影响。
相比于这些容易被改变的特征,数据流的字节数、包数、字节分布等元特征并不受到攻击者的直接控制,很难被篡改,也就更具有区分度,鲁棒性也更强,可以尽量发现并使用这类特征。更重要的是,为了防止攻击者修改参数使分类器无法区分,我们有必要对分类器使用的特征进行保密。
(2)特征选择
一般来说,有效特征越多,检测效果就越好,为了提升分类器的鲁棒性,可以考虑除TLS流之外的其他流特征,比如结合TLS握手之前进行的DNS查询或者相同源IP的HTTP流提取更多特征。
然而,随着特征的增多,分类器对时间和空间的消耗也就越多,在不可兼得的情况下,需要根据实际情况在精度和资源消耗之间取一个平衡点,适时对特征集进行精简或扩充。
3、模型的选择
数据和特征决定了机器学习模型性能的上限,而模型和算法只是逼近这个上限而已。常见做法是在同一数据集上对不同的模型进行对比,根据在测试集上的检测结果选择最优的模型,虽然结果有好有坏,但实际上大多数符合应用场景的模型之间结果相差并不是很大。所以笔者认为选择合适的模型、对模型的参数进行选择和调优是非常重要的,但对检测结果并不是决定性的。
4、召回率与误报率的平衡
具有较好的召回率固然重要,但误报的数量是判定检测系统是否可用的一个很关键的因素。在大流量场景下,即使较低的误报率也可能产生大量的误报,不论召回率如何,这些假阳性都将占用运营人员的精力和时间,从而成为管理负担,甚至合法的告警都可能被忽略。所以要根据实际需求对召回率和误报率做一个很好的平衡或控制。
5、现网环境中的误报
模型在现网环境中使用时产生误报的原因比较复杂,在训练集上的过拟合或欠拟合都有可能造成误报,除了在上述数据采集和特征工程等方面需要重点关注之外,也可以通过一些其他方法缓解误报问题。首先,在策略层面进行调整,比如通过提高阈值的方法来保证更高的准确率,从而减少误报;其次,加入专家知识和经验,比如可以定期对模型输出结果进行二次分析或后处理,校正模型输出结果从而减少误报;最后,单独使用分类器难免会产生误报,我们可以将它和其他检测器或方法结合起来,比如结合DGA检测器或JA3方法减少误报,也可以结合主动探测技术发现网络环境中的威胁。
四、小结
本文列举了一些恶意软件和良性TLS流的区别,并就恶意软件通信流量检测的关键问题进行了探讨,实践表明,利用具有区分度的特征构建的模型在一段时间内能够有效地从TLS加密流中检测出恶意流。当然,随着攻击者技术的提升,恶意软件也越来越隐匿,唯有不断探索和研究新的特征和方法,才能更好的应对网络流量中日益复杂的攻击。
参考文献
[1]https://github.com/ojroques/tls-malware-detection
[2] https://drive.google.com/drive/folders/1TfRz6q65wPaiuB4D9qmyfCxoJ8zEBUQY
[3] Brad Duncan. malware-traffic-analysis. URL: https://www.malware-trafficanalysis.net/
[4] Stratosphere IPS. Malware Capture Facility Project. URL: https://www.stratosphereips.org/datasets-malwar