内容简介:简介在过去的两年中,我们一直在系统的收集和分析恶意软件生成的数据包捕获。在此期间,我们观察到,有一种恶意软件是使用基于TLS的加密来逃避检测,而这种恶意软件的样本百分比正在稳步增加。2015年8月,2.21%的恶意软件样本使用TLS,而到了2017年5月,数据增加到21.44%。在同一时间段内,使用TLS但是没有和HTTP进行未加密连接的恶意软件,从0.12%增加到4.45%。识别加密网络流量中包含的威胁会带来一系列独特的挑战。监控这些流量,使他们不受恶意软件威胁和侵害是非常重要的,这样做也是为了维护用户的
简介
在过去的两年中,我们一直在系统的收集和分析恶意软件生成的数据包捕获。在此期间,我们观察到,有一种恶意软件是使用基于TLS的加密来逃避检测,而这种恶意软件的样本百分比正在稳步增加。2015年8月,2.21%的恶意软件样本使用TLS,而到了2017年5月,数据增加到21.44%。在同一时间段内,使用TLS但是没有和HTTP进行未加密连接的恶意软件,从0.12%增加到4.45%。
识别加密网络流量中包含的威胁会带来一系列独特的挑战。监控这些流量,使他们不受恶意软件威胁和侵害是非常重要的,这样做也是为了维护用户的隐私。由于在TLS会话时,模式匹配效果较差,因此我们需要开发一种新方法,即能够准确检测恶意软件的通信。为此,我们利用使用流的各个数据包长度,以及到达时间间隔来了解传输数据的行为特征,并使用ClientHello中包含的TLS元数据,来理解传输数据的TLS客户端。 我们将这两种视图结合在一个受监督的机器学习框架中,这样我们便能够在TLS通信中检测已知和未知的威胁。
为了更直观的了解,图1提供了TLS会话的简化视图。在TLS 1.2中,大多数有趣的TLS握手消息都未加密,在图1中我们用红色标记。我们用于分类的所有TLS特定信息都来自ClientHello,它也可以在TLS 1.3中访问。
数据
在这个项目的整个生命周期中,我们一直认为数据是我们成功的核心。我们与ThreatGrid和Cisco Infosec合作,获取恶意包捕获和实时企业数据。这些数据反馈对我们的帮助是巨大的,它能够引导我们的分析,并且发展出最具信息量的流动特征。我们所分析的数据特性是十分有趣的,为了让大家理解有趣在那里,我们首先关注一个特定的恶意软件样本,bestafera,它是著名的键盘记录和数据泄露软件。
通过数据包长度和时间进行行为分析
图2显示了两个不同TLS会话的数据包长度和到达间隔:图2a中的谷歌搜索和图2b中的bestafera启动连接。 x轴表示时间,向上的线表示从客户端(源)发送到服务器(目的地)的数据包大小,向下的线表示从服务器发送到客户端的数据包大小。红线表示未加密的消息,黑线是加密的应用程序数据记录的大小。
谷歌搜索遵循一种典型模式:客户端的初始请求位于一个小的出站数据包中,然后是大量响应,它跨越许多MTU大小的数据包。这几个来回的数据包是谷歌在我还在输入时,自动完成的搜索。 最后,谷歌认为它对我输入的内容有自己想法,所以发送了一组更新的结果。 bestafera与之通信的服务器首先发送一个包含自签名证书的数据包,这可以看作是图2b中第一个向下的细红线。握手后,客户端立即开始将数据泄露到服务器。然后是暂停,服务器定期发送计划命令和控制消息。针对会话内容,数据包长度和到达时间间隔无法提供更深入的见解,但它们确实有助于推断会话的行为方面。
使用TLS元数据对应用程序进行指纹识别
TLS ClientHello消息提供了两个特别有趣的信息,他们可以用来区分不同的TLS库和应用程序。客户端向服务器提供了一个列表,这其中包括在客户端的优先级中订购的合适密码套件的列表。每个密码套件定义了一组方法,例如加密算法和伪随机函数,这些方法将使用TLS建立连接和传输数据。客户端还可以发布一组TLS扩展,它可以向服务器提供密钥交换所需的参数,例如ec_point_formats。
在提供的唯一密码套件的数量和提供的不同子组中,密码套件提供的向量是可以变化。类似的扩展列表也会根据连接的上下文而变化。因为大多数应用程序通常有不同的优先级,所以,在实践中,这些列表可以而且确实包含大量歧视性信息。例如,桌面浏览器倾向于更重的重量,更安全的加密算法,移动应用程序倾向于更高效的加密算法。他默认的密码套件提供与TLS库捆绑的客户向量,而且他通常提供更广泛的密码套件,这样可以帮助测试服务器配置。
大多数用户级应用程序,以及在野外看到的大量TLS连接,都使用流行的TLS库,如BoringSSL,NSS或OpenSSL。这些应用程序通常具有唯一的TLS指纹,因为开发人员会修改库的默认值,这样便能优化它的应用程序。更明确地说,OpenSSL 1.0.1r中s_client的TLS指纹很可能与使用OpenSSL 1.0.1r进行通信的应用程序不同。这也是为什么bestafera的TLS指纹既有趣又独特的原因——它使用OpenSSL 1.0.1r的默认设置来创建其TLS连接。
应用机器学习
特征表示
对于本文,我们关注的是三种数据类型的简单特性:传统的NetFlow、数据包长度以及从TLS ClientHello获取的信息。这些数据类型都是从单个TLS会话中提取的,但我们还开发了包含多个流的特征模型。在训练之前,将所有特征都归一化为具有零均值和单位方差。
Legacy
我们使用了传统NetFlow中存在的5个功能:流的持续时间、从客户端发送的数据包数、从服务器发送的数据包数、从客户端发送的字节数以及从服务器发送的字节数。
SPL
我们创建一个长度为20的特征向量,其中每个条目都是双向流中相应的数据包大小。从客户端到服务器的数据包大小是正数,从服务器到客户端的数据包大小是负数。
TLS
我们分析了提供的密码套件列表,以及ClientHello消息中包含的广告扩展列表。在我们的数据中,我们观察到176个独特的密码套件和21个独特的扩展,这导致了长度为197的二进制特征向量。如果密码套件或扩展名出现在ClientHello消息中,则相应的功能设置为1。
学习
所有的结果都使用了scikit-learn随机森林实现。基于我们之前进行的纵向研究,我们将集合中树木的数量设置为125棵,并且将树的每一次分裂所考虑的特征数量设置为特征总数的平方根。随机森林模型使用的特性集由遗留特性、SPL、TLS特性的某些子集组成,具体需要看实验情况。
结果
我们从ThreatGrid的一个企业网络Site1和324,771流量中抽取了1,621,910个TLS流量,然后训练我们的随机森林模型。然后,我们模拟了从单独的企业网络Site2中看不见的数据部署模型,以及在上一个数据集之后的两个月内,收集的恶意软件数据。表1显示了该实验在不同阈值下的结果。0.5是分类器的默认阈值,并且阈值越高,训练的模型就越确定TLS流是由恶意软件生成的。恶意软件/良性的准确性是分开的,这样便能证明特征子集超过了一个特定的类。例如,Legacy可以在良性集上实现接近完美的准确性,但这些功能无法推广到恶意软件数据集。
在0.99的阈值处,使用Legacy / SPL特征的分类器正确的分类了98.95%的良性样本和69.81%的恶意样本。如果我们将有关应用程序(TLS)的信息与网络流量(SPL)的行为特征相结合,这些结果将得到显着改善。Legacy / SPL / TLS的组合是良性和恶意软件样本上性能最佳的模型。 在0.95的阈值下,该模型分别对于良性和恶意保持数据集实现了99.99%和85.80%的准确度。
结论
由于涉及隐私、法律义务、费用或不合作的端点,解密解决方案在所有设置中都不理想。思科投入了大量时间来开发研究产品,以填补这些空白,并且完善现有的解决方案。我们对真实网络数据的验证研究表明,我们可以在最小误报的情况下实现可靠的检测。除了让思科的产品团队进一步开发这项工作外,我们还通过开源和学术论文吸引了更广泛的外部受众。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 指纹是小儿科!世行106页报告解密7大生物识别技术【附下载】| 智东西内参
- APICloud解密本地资源到逆向APP算法到通用资源解密
- NodeJS加密解密,node-rsa加密解密用法
- CMSEasy企业建站源代码解密工具,适用于纯本地解密机制!
- 如何解密keystore文件
- 解密 Runloop
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Pattern Recognition and Machine Learning
Christopher Bishop / Springer / 2007-10-1 / USD 94.95
The dramatic growth in practical applications for machine learning over the last ten years has been accompanied by many important developments in the underlying algorithms and techniques. For example,......一起来看看 《Pattern Recognition and Machine Learning》 这本书的介绍吧!