文章来源|MS08067 内网安全知识星球
本文作者:Spark(Ms08067 内网小组成员)
众所周知,谷歌云和亚马逊云于2018年宣布停止支持域前置技术。在去年8月的DEFCON28上安全研 究人员发布了一款名为“Noctilucent”(夜光)的开源工具。该工具使用TLS1.3协议从某种程度上 复活了域前置技术。这一新技术被安全研究人员称为“域隐藏”。
1、域前置
域前置是一种隐藏连接真实端点来规避审查的技术,其原理为在不同通信层使用不同的域名:在明文的DNS请求和TLS服务器名称中使用无害的域名来初始化连接,而实际要连接的被封锁域名仅在创建加密的HTTPS连接后发出,使其不以明文暴露给网络审查者。
为了彻底地理解域前置,需要先了解一些HTTP和HTTPS的基础知识。
1.0 SNI
SNI(Server Name Indication)是一个TLS的扩展,用于允许多个网站托管在同一个服务器 上。
对于TLS1.3来说,这个扩展是加密的,也就是ESNI(Encrypted Server Name Indication)。
1.1 HTTP基础
在一次HTTP连接中,用户的第一个外部请求是向DNS请求目标web服务器的IP地址
这是一个未加密的数据包,发送到UDP协议的53端口
DNS会返回一个包含目标web服务器IP地址的响应包
该响应包也是未加密的
用户得知了该域名所部署的服务器的IP地址后,会对其发送一个GET请求,并将域名作 为“Host”请求头
也是未加密的数据包,通过TCP协议发送至80端口
服务器返回HTML的内容作为响应