安全研究人员发现,许多使用 SSL 证书的 Tor 站点可能会因配置错误暴露真实服务器的公共 IP 地址。研究人员指出,托管隐藏服务的服务器在配置正确的情况下仅监听本机地址(127.0.0.1)。但是如果让 Apache 服务器或 Nginx 服务器监听0.0.0.0,就意味着服务器可绕过 Tor 直接与外部建立连接,这样一来,这些配置错误的服务器的真实IP就容易被发现。
Tor (洋葱路由器)匿名网络是一个由位于世界各地的志愿者维护的各自的匿名网络组成的大型分布式匿名网络,类似于分布式的 VPN,但它是免费,开放的,而且其规模之大超乎想象。
Tor是一个世界范围的计算机网络,在请求开始点以加密方式转发请求,直到到达网络中最后一台称为出口节点(exit node)的计算机。出口节点会对请求进行解密并传输到目标服务器。出口节点是专门用于流量离开Tor网络的最后一跳,也是用于返回流量的第一跳。使用Tor时,与你通信的系统将所有传入的流量视为来自出口节点。他们不知道你的位置,也不知道你的真实IP地址。此外,Tor网络中其他系统也不能确定你的位置,因为实质上只是转发流量,并不知道流量的实际来源。请求的响应将返回系统,但对于Tor网络而言,流量源仅充当了路径中的一跳。本质上,你是匿名的。Tor用户可以避免将他们的IP地址暴露给他们访问的服务器。相反,这些服务器只能看到Tor的一个退出节点的IP地址。但是,TOR不仅会在访问Google.com或Facebook.com等网站时保护其用户,对于希望保持匿名的用户来说,Tor网络上的另一个选项是Tor隐藏服务。
Tor的隐藏服务,只能通过Tor技术实现,你可以通过使用.onion扩展来识别它们。与通用的技术相反,这些网站不仅用于暗网活动,也用于正常的使用。事实上,你每天使用的许多网站也可以使用类似的隐藏服务进行访问,以便为重视匿名的用户提供服务。例如,你可以通过https://www.nytimes3xbfgragh.onion或Facebook通过https://facebookcorewwwi.onion访问纽约时报,只要你当前正在使用Tor。
对于网站管理者而言,Tor的另一个优势就是你的用户无法找到服务器的真实IP。这是隐私保障的一大进步,使得审查或删除隐藏的服务变得很困难。为了运行这样的服务,除了调整Tor的一系列设置外,还需要在你托管网站的机器上设置像Apache或Nginx这样的Web服务器。
由于Tor设置中的配置错误,我们本文讨论的漏洞将允许任何人找出隐藏服务的真实IP。
Tor上SSL设置的常见错误
所以如果你使用Tor,那么你显然需要在互联网上保持匿名。假设你用的是TLS/SSL来支持Tor服务。那你必须获得由证书颁发机构签名的.onion扩展名的网站证书。现在,我们假设你的服务URL是examplei.onion。当有人请求网站时,服务器在给予ClientHello请求的ServerHello响应中发送加密数据和证书。证书中的公共名称(CN)区域将声明你的域名,例如www.i.onion。
假设你使用的是Web服务器服务,例如Apache,Nginx或类似的东西,可是由于你错误配置它以监听到达网络接口的所有连接(0.0.0.0),而不是环回地址(127.0.0.1)。这将对你的Web服务器的匿名性造成灾难性影响。
暴露你正在使用的Tor服务的公共IP
任何试图从服务器的公共非Tor IP地址到达端口443的人都将看到CN中找到的证书和.onion域,该域位于给予ClientHello消息的ServerHello响应中。
你可能想知道当你使用Tor时,人们如何能够找到你的公共IP。
如果我假设攻击者可以利用此方法来获取你的个人数据,具体要分几步?
1.攻击者通过端口443向IP范围(例如75.30.203.1-75.30.203.254)发送连接请求;
2.发送ClientHello消息;
3.提取ServerHello消息中的CN;
4.将IP与.onon域相匹配;
重复这4个步骤,攻击者能够使用Tor网络访问许多网站的数据。
总结
根据Rosselyn Barroyeta最近的研究,即使使用最安全的服务,错误配置也会让你暴露。因此你要确保密切关注新的攻击形式。