从2015年开始,思科信息安全团队中一位名叫Rich West的系统架构师就一直在与思科高级安全研究小组的一名工程师尝试去解决一个非常新颖的问题:思科信息安全团队希望能够找到一种方法来更好地保护思科员工的信息安全,并防止恶意软件通过加密流量窃取员工的个人隐私数据。但当时似乎只有一种可行的方法,即通过设置代理并解密通信数据来检查所有的SSL和TLS流量。
如果是在恶意活动中,那么上述这种“可行方法”就是我们常说的中间人(MitM)攻击。但即便是出于安全防御端的角度来看,这种方法仍然会被视为一种侵犯用户隐私的行为,因为当用户需要向银行或加密邮件服务发送加密通讯信息时,上面的这种方法就会破坏加密信任链,从而导致用户隐私受到侵害。除此之外,这种方法的计算量也非常高,而且高到足以造成网络性能的大幅下降,更不用说管理额外的SSL证书(流量被检查之后需要重新签名)所带来的性能负担了。
Rich West和他的团队最终认为,这种以牺牲隐私权和网络性能为代价来换取安全性的方法是不值当的。因此,他们需要一种新的方法,他们需要一种不涉及到向检查节点发送内部流量的方法。为了解决这个问题,West与思科工程师David McGrew取得了联系。
一个待解决的复杂问题
McGrew是思科高级安全研究小组的一员,他和他的团队一直都在研究如何使用NetFlows配合新的算法来检测恶意软件。当West将他的需求(设计一种新的方法在加密数据中识别恶意攻击)告知了McGrew的团队之后,这个耗时长达两年的项目便诞生了,而且该项目现在已接近完工。这个项目集合了多款新型网络产品和软件,旨在从根本上改变现代网络的底层架构和驱动模型,而思科在本周已经正式对外公布了该项目。
McGrew和他的团队所开发来的这种模型名叫Encrypted Traffic Analytics(ETA),即加密流量分析模型。思科公司手中掌握有庞大的网络资源和数据资源,思科也一直希望将手中的这些资源结合自动化技术以及机器学习来实现无处不在的安全保护,而ETA模型的出现让思科离这个目标近了一大步。
数据加密通常都会被认为是一件好事,因为加密不仅能够保证网络交易和聊天的私密性,而且也可以防止攻击者(中间人攻击)窥探或篡改用户的网络通信数据。
随着越来越多的企业环境开始使用云服务,这也让Google和Mozilla这样的公司开始强制网站去使用TLS等安全传输协议了。各大浏览器厂商首先要求所有的加密流量必须由受信任的证书机构(CA)所颁发的证书来进行签名,而相关机构也在努力试图通过简化证书申请以及流量加密等过程来推广TLS的使用。但正是因为加密所需的成本降低了,而且几乎毫无成本,所以很多网络攻击者也开始通过普通的TLS或SSL流量来试图掩盖他们的恶意命令、远程控制行为以及数据窃取活动。
想要在普通流量中检测恶意软件的活动本身就是一件非常复杂的事情,而且还涉及到海量数据分析等情况,再加上TLS和SSL等加密协议的出现,使得目前所面临的挑战难上加难。但对于McGrew来说,这正是让他激动不已的地方。
NetFlow中包含有大量有价值的信息,但它也会受到一定的语境限制。它可以表示网络上的两台设备正在交互,以及通信时长和发送的字节数等等,但这些数据毕竟还是不完整的。McGrew认为,隐私和安全并不应该是必须二选一的,为了解决这个复杂的问题,他不仅需要从头开始,而且还需要涉及到大量代码和密集的数据建模。
‘好吧,你到底需要什么?’ – ‘数据,很多很多的数据。’
这个项目需要大量的资源,所以McGrew首先想到了思科的技术投资基金(Tech Fund)。思科的“Tech Fund”项目通常投资的都是那些能够改变现状的新型产品或高新技术,而且这些项目通常都需要好几年的开发时间。
就算有了资金做保障,但在真正形成项目并开始编码之前,McGrew还需要从思科的网络系统中获取数据分析样本,包括恶意软件样本在内。为了解决这个问题,McGrew在2015年3月份邀请了Blake Anderson加入。Anderson是一名拥有博士学位的数据科学家,他主要研究的是机器学习在网络安全中的应用。当时,他也正在与美国洛斯阿拉莫斯国家实验室一起研究如何将机器学习方法应用到恶意软件的分析过程中。
当Anderson加入到思科这个团队时,McGrew的团队正在开发相应的分析工具,而且他们已经可以通过NetFlow数据来识别出具体的应用程序了。比如说,他们可以识别出NetFlow数据是来源于Chrome浏览器还是来源于微软的更新服务,不过他们还没有将这项技术应用到针对恶意软件的数据分析活动中。
为了获取到分析样本,Anderson以及McGrew的团队几乎与思科公司的每一个产品部门都沟通过,包括内部信息安全团队、Talos威胁情报小组和ThreatGRID团队等等。在花费了几个月的时间编写了一万多行代码之后,McGrew和Anderson便开始将他们的数据模型应用到实际的测试中。在获取到了数百万的数据包和已知的恶意软件样本之后,Anderson开始尝试在不进行任何解密的情况下对海量数据进行筛选和归类,并通过“最具描述性的特征”来识别出恶意流量和正常流量。
Anderson表示:“我认为收集正确的数据才是最重要的。很多人会在收集到了大量数据之后才去考虑他们能用这些数据去做什么,但我们打算采取相反的做法,我们会列出我们所需要的数据类型,然后再从思科的其他产品团队那里收集这些数据。”
隐藏的恶意软件与指纹
如果网站拥有权威CA签发的TLS证书,这意味着用户可以放心地访问这个网站,但这并非绝对。据了解,至少从2009年起,很多攻击者就开始通过使用伪造的、窃取来的、甚至是合法的SSL签名证书来欺骗互联网的信任系统。这样一来,攻击者就可以通过安全证书来诱使用户交出自己的登录凭证或下载恶意Payload。
在过去的几个月里,滥用合法TLS证书的攻击事件数量呈上升趋势,这很可能是由于类似Let’s Encrypt这样的CA机构开始免费签发TLS证书所导致的。这也就意味着,网络钓鱼攻击者将能够轻而易举地制作出足以以假乱真的PayPal或比特币钱包钓鱼网站。比如说,下图所示的就是一个使用了免费加密证书的钓鱼网站:
事实证明,降低密钥的获取难度确实是一把双刃剑
Rich West认为,从某种程度上来说,他们的成功是以牺牲其他安全部门作为代价的。他们一直在敦促IT公司、厂商和App开发者通过加密技术来保证数据的安全,但这样也增加了处理这些加密数据的难度。不过幸运的是,通过对数百万TLS数据流、恶意软件样本和数据包进行了分析之后,Anderson和McGrew发现TLS数据流中未加密的元数据包含攻击者无法隐藏的数据指纹,而且即使数据经过加密也无法隐藏这种指纹。TLS擅长的就是隐藏明文信息,但它所创建出来的还有一系列可观测的复杂参数,而McGrew和Anderson这样的工程师就可以用这些数据来训练他们的模型了。
比如说,当一段TLS流量开始发送时,首先从一个握手包开始。客户端(比如说Chrome浏览器)会给其尝试通信的服务器发送ClientHello消息。“Hello”消息包含一组参数,例如使用的密码套件、接受的版本以及可选的扩展。但类似“ClientHello”这样的TLS元数据是没有被加密的,因为它们在消息开始加密之前就发送出去了。这也就意味着,Anderson的模型可以在完全不知道消息内部数据的情况下对这些未加密的数据进行分析,而该模型将准确地分辨出该流量来自于恶意软件还是普通活动。
展望
Anderson表示,他希望ETA能够通过软件代码更新等形式应用到任何地方,并给网络上的任何设备提供恶意软件识别服务,因为ETA的目标就是让任何需要处理网络数据的设备都变成安全设备。Anderson说到:“我们接下来会想办法将我们的技术应用到路由器和交换机上,这是非常有意义的。在这个过程中,我们依然可以通过云端来训练我们的模型,并将机器学习与网络层联系起来。”