文章来源|MS08067 内网安全知识星球
本文作者:Spark(Ms08067 内网小组成员)
众所周知,谷歌云和亚马逊云于2018年宣布停止支持域前置技术。在去年8月的DEFCON28上安全研 究人员发布了一款名为“Noctilucent”(夜光)的开源工具。该工具使用TLS1.3协议从某种程度上 复活了域前置技术。这一新技术被安全研究人员称为“域隐藏”。
1、域前置
域前置是一种隐藏连接真实端点来规避审查的技术,其原理为在不同通信层使用不同的域名:在明文的DNS请求和TLS服务器名称中使用无害的域名来初始化连接,而实际要连接的被封锁域名仅在创建加密的HTTPS连接后发出,使其不以明文暴露给网络审查者。
为了彻底地理解域前置,需要先了解一些HTTP和HTTPS的基础知识。
1.0 SNI
1.1 HTTP基础
这样的传输过程显然是有问题的:
为了解决以上的问题,HTTPS诞生了。
1.2 HTTPS基础
接下来才是HTTPS的不同之处:
HTTPS的认证过程比HTTP安全很多,但是整个DNS的过程以及证书交换的过程仍然是未加密的。这 一点导致域名和证书可能会在客户端和服务端的中间环节被泄露。
1.3 域前置原理
接下来说明域前置的原理:
握手的响应过程与之前相同
任何GAE上的网站都可以被用来前置一个未经审查的GAE域名
你可以将域前置看成一个信封里的明信片:
这种技术在所有主流的CDN上都是可行的,直到2018年4月,俄罗斯政府向各大供应商施压,试图阻 止全球知名的app——Telegram使用谷歌云和AWS来实现域前置。谷歌云、亚马逊云等大型云服务商先后禁止了该服务。虽然后来Telegram找到了其他的方法来躲避俄罗斯政府的审查,俄罗斯政府也取消了该禁令,但是各大云服务商再也没有恢复过域前置技术。
1.4 域前置的问题
必须由相同服务商提供的域名才可以被前置
带宽
CPU时间
复杂的注册方式
身份认证
手机号
信用卡
2.域隐藏
为了解决上述的问题,安全人员开发了域隐藏技术。域隐藏能实现域前置的隐藏真实域名的目的。它 比域前置更灵活,只需要把域名DNS记录托管在Cloudflare,而主机服务器可以托管在任何地方。
2.1 DNS over TLS/HTTPS
在探究TLS1.3的结构之前,需要使DNS传输更加安全
解决办法就是将DNS查询包装在TLS连接中。可以使用DNS over HTTPS(DoH)来实现这一目的。DoH可以绕过一些防火墙和审计设备,并且该技术正被广泛地使用。
2.2 TLS1.3+ESNI
解决了DNS查询的加密问题后,还可以使用DoH为域名获取一个服务器的ESNI公钥,并用该公钥加 密ClientHello包中的server_name。当server_name被加密后,防火墙或者审计设备便无法根据 server_name来阻断非法域名的请求。
带有ESNI的TLS1.3连接中必须拥有服务器的公钥,用以加密ClientHello中的server_name。获取该 公钥的方式是使用DNS查询TXT记录中的_esni记录。
3.示例
项目地址:
https://github.com/SixGenInc/Noctilucent
将CS的代理设为本地的9999端口,使用夜光斗篷(Noctilucent Cloak,详见github)配合 shadowsocks,可以实现域隐藏。该示例中,利用www.bitdenfender.com作为被隐藏的域名。
开启夜光斗篷并以socks4模式运行本地的shadowsocks服务。
在受害主机中运行payload,主机上线。
防火墙中只有cloudflare.com的记录
也查询不到bitdenfender.com的任何记录。
本文分享自 Ms08067安全实验室 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!