设为首页 | 收藏本站欢迎来到卓越网络免费免备案CDN加速,DDoS和CC攻击防御,高防CDN管理平台!

已阅读

卓越CDN云加速关于域前置攻击的科普

作者:cdnfine      来源:cdnfine      发布时间:2019-05-05

随着网络审查技术的不断发展和普及,越来越多的组织开始使用技术和社会手段阻止受其控制的网络用户访问信息。与此同时,被限制用户也会采取某些躲避手段来获取禁止访问的信息。审查技术与审查躲避技术在博弈中相互促进、不断发展。其中域名前置(Domain Fronting, DF)技术逐渐成为了一种主要的技术手段(更多DF技术可详见http://www.arkteam.net/?p=2175)。

域名前置是一种通过隐藏连接的真实目的地来规避互联网审查的技术。在应用层上运作时,DF允许用户通过HTTPS连接到被屏蔽的服务,而表面上则像在与另一个完全不同的站点通信。其威胁模型如图1所示。

卓越CDN云加速关于域前置攻击的科普

上图所示威胁模型中最为关键的一步便是中间Web服务的解析和转发。DF的实现要求中间Web服务能够在一个前端服务器后托管多个域名,从而将非法流量隐藏在合法流量之中,实现躲避审查者的目的。而其中最为典型的便是 CDN(Content Delivery Network, 内容转发网络),本文将针对CDN及其具体工作流程展开介绍。推荐阅读:《国内CDN加速中的亚太内容分发

通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,使内容传输的更快、更稳定。

典型的利用CDN网络的域名前置技术的工作流程如下(图2):

1.当用户点击网站页面上的内容URL,经过本地DNS系统解析将域名的解析权交给CDN专用DNS服务器。

2.CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。

3.用户向CDN的全局负载均衡设备发起内容URL访问请求。

4.CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

5.区域负载均衡设备会为用户选择一台合适的服务器提供服务并返回其IP地址。

6.全局负载均衡设备把服务器的IP地址返回给用户。

7.用户向服务器(allowed.example)发起请求。

8.服务器(allowed.example)解析包并转发至forbidden.example。

卓越CDN云加速关于域前置攻击的科普

目前,有许多CDN都支持DF技术(例如Amazon CloudFront,Microsoft Azure,Fastly,CloudFlare,Akamai等),但其只为自己的客户域提供域名前置服务。

虽然该技术不是最新技术,但非常不常见。

特点

此技术的原理为在不同通信层使用不同的域名。在明文的DNS请求和TLS服务器名称指示(SNI)中使用无害的域名来初始化连接、公布给审查者,而实际要连接的被封锁域名仅在创建加密的HTTPS连接后发出,使其不以明文暴露给网络审查者。 此技术利用审查者通常很难区分被伪装流量与合法流量的特点,迫使审查者选择放行所有看似无害的流量,或者选择彻底封锁此域的流量。而彻底封锁可能带来显著的附加损害。 这种举动在被封锁的站点与无害站点为同一个大型服务提供商时较为可行,例如由Google应用服务引擎(GAE)等提供的服务。 Google后于2018年4月禁用域前置,称这从未是Google有意支持的一项功能。亚马逊公司也在不久后决定停用CloudFront上的域前置支持,表示这已被视为违反AWS服务条款。有报道认为,Google和亚马逊做此决定的部分原因是来自俄罗斯政府的压力,因Telegram在当地使用这两家云服务提供商进行域前置活动。

0x01 简介

最近看到了一些关于Domain Fronting的技术,感觉很有意思,其特点在于,你真正访问的域名并不是你看到的域名,即可以隐藏攻击者的真实地址,并且此技术能够让我们在一些受限制的网络中依然连接到我们的C2服务器,其关键思想是在不同的通信层使用不同的域名,在HTTP(S)请求中,目标域名通常显示在三个关键位置:DNS查询,TLS(SNI)拓展及HTTP主机头中,通常,这三个地方都会是我们要访问的域名地址,然而,在”Domain Fronting”请求中,DNS查询以及SNI携带了一个域名(前域),而在HTTP host头中携带了另一个域名(隐蔽的,被禁止访问的域名),简单的图例如下:

卓越CDN云加速关于域前置攻击的科普

通常检查器不能阻止DNS及SNI中请求的内容,而HOST头对检查器不可见,但对接收HTTP(S)请求的前端服务器可见,而前端服务器,在内部请求HTTP头中的Host的地址,进而达到隐蔽目的地的目的。关于Domain Fronting 这里有一篇文章有详细的介绍《Blocking-resistant communication through domain fronting》。本文就不在详细介绍了。感觉这个技术很有趣,所以就对此技术进行了一下研究与学习,并写此文进行分享。

0x02 场景

渗透测试过程中,我们会遇到这种情形,即网络中部署了很多防御方案,比如防火墙开启IDP,IPS,IDS等,这些方案可用于限制网络出站规则,例如,仅仅允许TCP 80及443通过代理离开网络,并且还会有许多设备在应用层来检查这个流量,如果检测到恶意的Payload,则进行拦截并报警。绕过这些解决方案一直是入侵者与防御者之间的博弈,防御者努力的想怎么拦,而入侵者在努力的想怎么绕。因此也有了很多很多的攻击技术,比如DNS隧道,ICMP隧道等等。最近有一篇文章《Doodles, stickers, and censorship circumvention for Signal Android》介绍了通过Domain Fronting来绕过信号限制的方式,在此文中指出“许多流行的服务和CDN(如Google,Amazon Cloudfront,Amazon S3,Azure,CloudFlare,Fastly和Akamai)可以以一种看起来与其他未经审查的流量不可辨别的方式获取信号。因此,我们也可以通过此技术来绕过一些过滤规则。

使用此技巧可以有效地隐藏自己的真实地址,并且可以在一定程度上绕过某些防护,在渗透测试中应该是一个很不错的技术,希望此文对你有所帮助。

Keywords: 免费CDN加速 免备案CDN加速 高防CDN加速