首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

哈萨克斯坦拦截HTTPS流量事件的详细分析

近期,哈萨克斯坦政府开始使用一个虚假的根证书对Facebook、Twitter和谷歌等网站的HTTPS连接进行中间人攻击。自从此事件被曝出,研究人员就一直对其中的技术细节和哈萨克斯坦的网络状况进行跟踪分析,如下是对哈萨克斯坦政府命令电信运营商协助进行HTTPS流量拦截事件的初步分析结果:

哈萨克斯坦政府使用虚假的根证书拦截HTTPS连接,这大大破坏了哈萨克斯坦互联网用户的上网体验。

默认情况下,浏览器不信任虚假的根证书,用户必须手动安装。但如果用户不安装虚假的根证书,则根本无法访问某些站点。

真正的拦截行为是在7月17日被首次发现的,自7月20日以来我们一直紧密监控拦截情况,整体拦截活动可以说是断断续续。

只有某些站点的HTTPS流量被拦截,主要根据SNI(Server Name Indication)中的主机名进行拦截。至少有37个域名受到影响,包括知名的社交媒体和通讯网站(完整列表见下面)。

到目前为止,此次拦截行为似乎影响了该国最大的互联网服务提供商Kazakhtelecom(即9198 KazTelecom)的部分网络服务。

国外访问哈萨克斯坦也有可能触发拦截机制,这也方便了我们进行研究。

什么是HTTPS拦截?

HTTPS可通过加密来保证浏览器和网站之间的通信隐秘性,防止互联网服务提供商和政府拦截读取通信内容。网站服务器通过提供由证书颁发机构数字签名的证书来证明其身份,浏览器也有自己默认信任的证书机构。例如,facebook.com会向浏览器提供由DigiCert签名的证书,DigiCert是一个全球公认的证书颁发机构,几乎所有浏览器都信任它。

浏览器可以通过验证网站所提供的证书确认它的真实身份,确保他们正在与真正的facebook.com对话。此外,facebook.com提供的证书还包含一个加密密钥,用于保护浏览器和Facebook的后续通信。

而在HTTPS拦截攻击(中间人攻击)中,攻击者假装自己是一个知名网站(例如facebook.com),并向浏览器提供自己的假证书。通常,攻击者提供的证书并非由权威机构颁发,浏览器并不会信任,会阻断连接。但是,如果攻击者可以说服受害者手动往浏览器中添加虚假的根证书,则浏览器会信任攻击者的服务器发送的虚假证书。此时,攻击者可以假冒成任何网站,受害者会“主动”向其传递敏感信息。

Censored Planet的发现

Censored Planet是一个全球性的网络监察平台,位于密歇根大学。它会利用某种远程监控技术不断监测全球170多个国家各种类型的网络波动。

而这个平台提示我们,从2019年7月20日开始,哈萨克斯坦可能发生了大规模中间人攻击,一种名为HyperQuack的技术检测到了这一现象。HyperQuack的工作原理是主动连接到TLS服务器并发送握手包,其中的SNI包含了很敏感、可能会被拦截的域名。如果返回的结果与正常的有所不同,存在干扰迹象,则代表服务器所在的国家对特定网络通信做出了干扰。

经过调查,我们发现以上异常情况中所涉及的证书都是虚假的,都是由哈萨克斯坦根证书机构CA (Qaznet Trust Network)签署的。这意味着中间有人先解密流量,然后用自己的密钥加密,再转发到目的地。

我们的调查还显示,只有当连接遵循某条网络路径时,才会被拦截。但无论是从国内连国外,还是从国外连国内,都会被拦截。这意味着我们可以通过主动连接到哈萨克斯坦境内的TLS服务器来进行研究分析。

深入分析

受到Censored Planet平台的提示,我们进行了几个实验,以更好地理解哈萨克斯坦的HTTPS的拦截行为。

我们在哈萨克斯坦有2个VPS和52个RIPE Atlas网络探针。并且我们还对该国的TLS服务器进行了更全面的扫描。

最后,我们只直接观察到两个HTTPS拦截样例,都来自RIPE Atlas的探测。我们的两个VPS都可以访问受影响的站点(例如facebook.com),没有经过任何HTTPS拦截。这表示美国的网站的受影响面较小,即使是已知的受影响的域名,请求也并不一定都被拦截。

我们发现要注入证书必须满足以下几个条件:

浏览器到服务器必须通过KazTelecom所能控制的路径,这也是我们能观察到的注入发生的地方。

浏览器必须发送的TLS连接中的SNI中的主机名必须包含敏感域名。

服务器必须提供一个有效的受浏览器信任的TLS证书,不一定是SNI中主机的证书。

当然,这些条件是必要的,但并不是充分的。我们建立了一些满足以上要求的连接,却没有观察到证书注入。我们仍在研究必须满足哪些其他条件才能触发拦截。

据Censys的数据,哈萨克斯坦有超过200000个可访问的TLS服务器,但其中只有6736个提供了浏览器信任的证书。在7月21日,我们从美国对这6736个服务器中进行了TLS握手,并将SNI中的主机名设置为facebook.com和google.com,结果只有459台服务器(7.0%)被注入了证书,这表明哈萨克斯坦的HTTPS拦截行动目前只发生在该国的一小部分地区。

我们又从哈萨克斯坦国内的VPS对6736个服务器进行了相同的扫描,发现有1598(24%)台被注入了证书。虽然这些服务器位于不同的位置,但是所有这些服务器的都和KazTelecom有关。

而在7月22日早些时候,我们注意到所有拦截行为都已停止,9小时后又恢复。此时,我们又重新测试了一遍,发现注入证书的HTTPS服务器数量减少了,仅300台(4.4%);我们再在哈萨克斯坦的VPS中进行测试,发现仅有400台(5.9%)。这表明拦截系统仍在测试或调优中,这可能是广泛部署的前兆。

分析技术

为了确定拦截发生的确切位置,我们使用了一种基于TTL的技术。对于每个出现拦截情况的HTTPS服务器,我们发送多个包含不同TTL值的请求,测试出在发生注入情况下,TTL的最小值。由于TTL控制了跳转步数,因此,如果我们将一个数据包的TTL设置为3,并且没有监测到任何证书注入,那么就说明进行注入的设备离我们超过3次跳转的距离。通过这种技术,我们精确定位了注入设备的网络位置。

我们在哈萨克斯坦的VPS上对被注入证书的1598台HTTPS服务器进行了这种扫描。对于每台服务器,我们都发送了两个请求,一个SNI中的域名为受影响网站,另一个则相反,然后再测量收到响应的最小跳转数。最后,我们发现,注入行为发生在离用户3、4跳的位置,在美国的测试也发现了相同的结果。

通过对网络跳转的分析,我们发现在95%的情况下,注入前的最后一跳地址为92.47.151.210或92.47.150.198,注入后的跳转地址为95.56.243.92或95.59.170.59。所有这些IP地址都属于KazTelecom,这表明KazTelecom是目前唯一进行HTTPS证书注入的互联网服务提供商位置。下面是一个示例,其中注入发生在4至5跳之间。

注入证书

虽然证书注入是由浏览器发出请求中的SNI触发,但是注入的虚假证书似乎是基于服务器的合法证书而不SNI中的域名。这意味着如果向站点iqala.kz发送一个SNI中主机名为facebook.com的请求,则会注入一个CN=iqala.kz的证书,且注入的证书具有以下属性:

与原始服务器证书相同的主题名和主题替代名(SAN)

将公钥替换为基于主机的RSA-2048密钥

有效期与原证书相同,但这个特点已在过去6小时内变化

序列号与原始序列号相同,但最后4个字节会被更改

删除所有其他x509扩展

该证书由一个中间证书(C=KZ, CN=Security Certificate)颁发,该证书由根证书(C=KZ, CN=Qaznet Trust Network)签名。中间证书涉及一个2048位RSA密钥,有效期为3年,而根证书涉及一个4096位RSA密钥,有效期为30年。

流量指纹

执行拦截的设备必须连接到原始TLS服务器,以便检索其合法证书方便进行验证和替换。经过我们对自己所控制的HTTPS服务器发起TLS请求所进行的测试,触发拦截的TLS请求(即SNI中的域名为facebook.com)的响应和正常的响应有很大不同。如果你想进行研究分析,可以点击这里下载。

受影响的域

HTTPS拦截主要由SNI中的域名触发。在我们测试的约10000个域名中,有37个域名受到影响,这些域名主要属于社交媒体和交流网站:

互联网服务提供商告诉用户安装虚假的根证书,可以帮助防止欺诈、黑客攻击。然而,这个受影响域名列表表明,政府真正的意图是监视社交网络上的言论。

结论

哈萨克斯坦国内的HTTPS拦截行动侵犯了该国互联网用户的隐私。虽然没有在全国范围内实施,但政府似乎有意进行全国推广。国际社会或许需要持续关注这一事件,因为这与全球信息安全背道而驰。

本文由白帽汇整理并翻译

来源:https://censoredplanet.org/kazakhstan

本文资讯内容来源于互联网,版权归作者所有,如有侵权,请留言告知,我们将尽快处理。

安全帮大讲堂经典回顾

关于安全帮

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190726A05OF500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券