通过随机化TLS来规避安全检测
近期,Akamai的研究人员观察到网络攻击者正在使用一种新技术来规避安全产品对恶意流量的检测。这项新技术——我们称之为Cipher Stunting——已经成为一种不可忽视的安全威胁,它最早可以追溯到2018年初。通过使用某些高明的手段,攻击者把SSL/TLS签名随机化,试图逃避安全产品的检测。
攻击者不断改变他们的攻击方式,把他们的规避技术变得日益复杂和巧妙,他们主要的目标是航空公司,银行和约会网站。Akamai观察到,在过去几个月中,攻击者一直在篡改超大规模的SSL/TLS签名。
在真正发现Cipher Stunting之前,Akamai观察到的TLS指纹大概有数万个。在初步发现后不久,TLS指纹数量激增至数百万,最近跃升至数十亿。
背景
大多数(约82%)恶意流量(包括对网络应用的攻击,非法抓取,滥用登录凭证等)都是通过SSL/TLS保驾护航的。而且这个数字在过去几年中一直在增长,因为越来越多的Web应用都开始使用SSL/TLS协议来保护用户数据的隐私。
通常来说,用户在建立TLS连接期间的行为方式可用来进行指纹识别,可用来区分出攻击者和合法用户。而当进行指纹识别时,我们的目标就是选择所有客户端所发送的协商组件。针对SSL/TLS的协商情形,用于指纹识别的理想组件就是通过明文发送的“Client Hello”消息,因为这在每次握手中都是必需的。
关于SSL/TLS指纹识别的研究并不新鲜。2009年,IvanRistić就进行了一项针对密码套件列表的研究。然后,他编写了一个Apache模块,以便基于密码套件被动提权客户端指纹,并提出了一个识别许多浏览器和操作系统的签名库。
2012年,Marek在博客中也发布了相关技术,同样涉及Client Hello。还有一些出现于2015年的研究,当时Lee Brotherston发布了一套用于TLS指纹识别的开源工具,并且Salesforce在2017年开源了名为JA3的SSL/TLS客户端指纹识别软件。
所以各种指纹识别技术已经出现了很长一段时间,应用于许多安全解决方案中,当然也包括犯罪分子所使用的规避技术。
指纹识别存在的根本原因是为了区分合法客户端和非法模仿者,代理和共享IP。从攻击者的角度来看,调整SSL/TLS客户端行为对于指纹识别规避的某些方面来说可能没太大影响,但是根据规避的目的或是所涉及的程序,有可能在其他方面遇到困难。在这样的情况下,许多软件包需要攻击者对其有深入的了解和调试才能正常运行。
Cipher Stunting
利用Client Hello信息观察到的TLS变动情况来自爬虫,搜索引擎以及一些自定义程序等。
在2018年8月,Akamai在全球范围内观察到18652个不同的指纹(大约占所有指纹的0.00000159%),其中一些指纹包含了全互联网流量的30%以上。这是因为以上指纹代表了常见的浏览器和操作系统的TLS客户端堆栈。当时,没有任何证据表明存在任何篡改Client Hello或任何其他指纹组件的行为。
但是在2018年9月初,我们开始通过加密随机化来观察TLS篡改现象。发现许多篡改实例都是针对航空公司,银行和约会网站,这些网站通常是黑客攻击的重点目标。截至10月底,TLS篡改数已攀升至2.55亿。而到了2019年2月底,TLS篡改数剧烈增加,达到13亿。
在Client Hello消息中提供了随机密码套件列表,然后在最后随机化哈希值。从上述图表我们能够分析出重要的攻击细节。这是由于目前可用的SSL/TLS堆栈集合相对较小且有限。每个都允许不同级别的用户自定义SSL/TLS协商流程。
通过利用这些SSL/TLS指纹,Akamai能够猜测出攻击者在客户端中的行为,确定攻击者使用了一个由Java的编写Cipher Stunting攻击工具。
结论
从以上我们可以总结得出,犯罪分子总是竭尽所能避免被安全产品发现,好暗中执行他们的计划。随着时间的推移,这些规避策略会不断的演变,而这一切都要基于对互联网流量的深入了解。
安全厂商也需要及时了解网络攻击趋势,第一时间监控、跟踪、防御各类恶意攻击。
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://blogs.akamai.com/sitr/2019/05/bots-tampering-with-tls-to-avoid-detection.html
最新评论