首页
学习
活动
专区
工具
TVP
发布

瓜牛带你读文章-之深度学习检测恶意TLS证书

0x00 文章背景

今天给大家带来的是一篇AISec ‘18 Proceedings of the 11th ACM Workshop on Artificial Intelligence and Security的文章解读。文章名为《Hunting Malicious TLS Certificates with Deep Neural Networks》,是关于深度神经网络在加密恶意通信检测方面的应用。

0x01 INTRODUCTION

本文先说加密流量增长是多么的迅速,然后再说类似地,恶意行为也越来越多地使用加密手段。由于Firefox和Chrome 浏览器使用把加密的网站的URL标记为绿色安全的,导致大量的钓鱼网站也开始使用https来加密自身,误导了大量的用户。这里的问题在于滞后的TLS证书判断和大量的加密应用之间的矛盾,我们无法知道一个加密网站是否是安全可信的,反倒加密会给恶意网站提供保护。所以本文针对的目标就是使用深度神经网络来检测恶意的TLS证书。使用已知的恶意网站的证书内容来训练模型。

总的来说就是现在存在的问题是什么,然后作者决定挺身而出,提出一种新的方法来解决这个问题。

0x02 BACKGROUND

背景知识部分介绍了TLS和神经网络

数字证书定义为附加到公开加密密钥的未加密文件,它包含关于证书所有者和加密密钥的组织细节。

本文使用LSTM算法来做识别,该算法由RNNs改进得到。RNNs是一组神经网络,它以时间序列变量或文本数据的顺序依赖性来增强和分析数据。其主要的缺点是RNN模型只能学习短期依赖关系的模式,而不能学习长期依赖关系中的模式。这意味着,如果分析一些时间序列数据,一般的RNN模型将很容易了解最后一天的模式,但是“忘记”上个月模式。为了缓解这个问题,S. Hochreiter和J. Schmidhuber[18](论文中编号,以下同)提出了一种新的模型架构,称为长短期记忆网络(long short- memory network, LSTM)。LSTM模型通过修改基本的处理单元或神经元来实现短期和长期依赖的有效学习过程。

0x03 RELATED WORK

相关工作主要介绍了恶意代码检测和钓鱼网站检测。

传统的恶意软件检测是通过人工方法或使用专家规则分析流量负载来实现的[30]。不幸的是,这些传统方法无法处理加密的内容。然后作者依次介绍了基于专家调查、黑名单、机器学习的检测方法,以及他们各自的问题。

钓鱼网站检测可以通过主动或被动的方式来完成。在响应端,发现诸如谷歌安全浏览API之类的服务。这些类型的服务使用要查询的恶意url的黑名单。黑名单是使用不同的技术构建的,包括手动报告、蜜罐或通过在web上爬行搜索已知的钓鱼特征。

主动检测网络钓鱼攻击的方法包括实时分析网页的特征,以评估该网页的潜在风险。风险评估主要通过分类模型来实现,分类模型大多由机器学习算法构建。其中一些方法使用了一系列网站特征,这意味着要评估一个网站,首先必须对这些网站进行分析提取特征,然后才能使用该算法。这给这些方法增加了巨大的时间门槛。

之前的研究证明,恶意软件和钓鱼攻击者都会在他们的证书信息中留下线索,这些线索可用于跟踪他们回到其基础设施,并将证书分为恶意或合法。然而,没有研究表明是否可以找到同样类型的线索,并用于对钓鱼证书进行分类。

0x04 REAL-TIME MALICIOUS CERTIFICATE DETECTION

本文所用方法的逻辑基础如下:

当前验证web证书的浏览器策略非常简单,主要依赖于检查证书是否自签名和过期日期。然而,域名证书检验(最简单的验证类型)只要通过,浏览器就会向用户发送安全消息。攻击者通常使用自签名证书和免费生成的证书,因为它们生成起来又快又便宜。但是,通过使用这种证书,攻击者暴露了他们的意图,使他们很容易被检测、跟踪和黑名单。综上所述,通过实时检测证书滥用,可以缩短攻击者从攻击中获利的时间,降低攻击成功率。

0x05 FEATURE ENGINEERING

本文提取了能够区分恶意证书和合法证书的特征。特征重点放在证书中包含的信息,主要逻辑是,信息较少的证书更容易引起怀疑。预计攻击者不会花时间或金钱购买和验证证书,因为这可能会减少他们的收入并暴露他们的意图。本文提取了4种特征。

这些特征将用于深度学习建模,本文使用的深度学习算法包含两部分。

第一部分,首先,分析了web证书的主题主体(subject principal)和颁发者主体(issuer principal)字段中包含的文本。为了实现这一点,这些特性中包含的文本通过使用一种基于字母表的热编码技术变成了矩阵表示。在这种数学表示中,每一行表示一个字符,除了该行与字母表中的字符匹配的情况外,都用0填充。

最后,计算嵌入(embedding)并将每个特性作为输入传递给LSTM层,该层创建一个向量大小为32的层,表示主体主体和发行者主体。

第二部分,输入前图中的35种特征,最后,将所有三个网络的输出连接成一个96大小的向量,并添加额外的神经网络层,直到结果降低为单一的恶意概率。其结构如图所示。

0x06 EXPERIMENTAL SETUP

DATA

数据一共5000个钓鱼网站证书,3000个恶意网站证书和1000000个正常网站证书。这些证书的特征分别有明显的区别,如图所示。

然后对这些数据进行清洗,去掉重复的样本最后剩下900个恶意代码网站和2000个钓鱼网站样本。在清理数据集之后,发现恶意软件和钓鱼的数量显著减少,因为大量的恶意代码使用一样的证书,但是,在维护特性创建之后,发现了相同的模式。44.3%的合法企业使用经过验证的证书,而钓鱼和恶意软件活动中分别只有10%和9%使用验证。特别是,两种最强大的验证类型(EV和OV)主要用于合法企业,因为它们意味着更高的成本和获得时间。值得注意的是,发现用于钓鱼攻击的扩展验证的指纹(EV)只有0.01%,而用于组织验证的指纹只有0.6%,这可以解释为被攻陷的正常网站用于钓鱼攻击。

EXPERIMENTAL DESIGN

由于本文的数据集是不平衡的,通过选择随机合法证书来匹配钓鱼和恶意软件证书来创建一个随机平衡的数据集。同时使用5折交叉验证来测试模型效果,衡量标准有准确率、精确率、召回率和F1-Score。

RESULTS

本文使用了一个包含100多万个合法网络证书、900个用于托管恶意软件的证书和2000个用于钓鱼的证书的数据库。本文训练了两种不同的算法,一种是检测恶意软件证书,另一种是检测钓鱼证书,使用的深度神经网络如前面所述。要对证书进行分类,该模型的得分从0到1,其中1表示证书被用于恶意目的(恶意软件或钓鱼)的概率为100%。通过取一个等于0.5的阈值,根据每个证书的得分将其分类为恶意或非恶意。

0x07 笔者总结

这篇文章的主要贡献在于同时使用了证书的文本内容和提取出的相关特征,这个深度学习算法提供了更多的信息量,帮助其实现更好的分类效果。

整篇文章更多在特征层面进行讨论,而在笔者的经验看来,基于机器学习的检测最主要的问题在两点:

其一是实时性,本文虽然称其系统为real-time malicious certificate detection但是没有在其实验当中体现出到底这种方法进行检测需要多少时间。在机器学习方法的应用当中,时间门槛最高的步骤通常在于提取特征,这成为机器学习方法在实际应用当中的一个巨大的障碍。

其二是实际应用的情况,即模型的泛化能力,这是机器学习从诞生开始就在不断讨论的话题。在笔者的实际应用当中,虽然我们的算法一直在进步,但在使用机器学习对于流量进行分析和判断时,仍面临实验环境和部署环境之间的巨大鸿沟。换句话说,即使模型在实验环境中表现得再好,当真正部署到实际场景中时就完全无法预测其效果了。这主要是因为,很多我们提取的特征会随着应用场景的不同而变化。就本文的特征而言,最有可能发生的情况是,不同的用户端请求时服务器端的响应不同。

以上是笔者一点不成熟的小观点,欢迎指正。

论文连接:https://dl.acm.org/citation.cfm?id=3270105

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券