本文译自:https://www.secjuice.com/finding-real-ips-of-origin-servers-behind-cloudflare-or-tor/
本文对隐藏了IP的服务器寻找真实源IP提供了一些思路和方法,工具主要使用Censys
隐藏服务(Hidden services),CloudFlare的效用,或者任何类似的服务的需求都源自隐藏原始服务器IP。但是一个小的错误会导致暴露IP。这可以让攻击者直接攻击使用了CloudFlare的网站(绕过WAF,速率限制,DDOS防护等等)甚至解除隐藏使用了TOR隐藏服务了的操作者身份。错误取决于您使用的服务或技术类型,并非所有方法都适用于每种技术(例如,TOR隐藏服务不存在MX record)
注:
这里补充一下TOR的Hidden services,Tor除了提供客户端的匿名访问外,还可以为服务器提供匿名服务。通过使用Tor网络,用户可以维护位置不可知的服务器。这些服务器所构成的网络被称为 "Tor Hidden Services",信息界又称为暗网。暗网里双方互不知IP地址。Tor隐藏服务由于不需要公开的IP地址,服务就可以躲在防火墙和NAT背后。
DNS MX record即邮件交换记录(mail exchanger record) 。用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理。如:用户所用的邮件是以域名mydomain.com为结尾的,则需要在管理界面中添加该域名的MX记录来处理所有以@mydomain.com结尾的邮件。
假如您在xyz123boot.com上主持一项有争议的服务。 您的原始服务器IP是136.23.63.44。 CloudFlare为您提供DDoS防护,Web应用程序防火墙和其他一些服务用以保护您的项目免受希望您的项目挂掉的人们的影响。 您的Web服务器支持SSL并具有证书,因此CloudFlare与您的服务器之间的通信就像您的用户和CloudFlare之间的通信一样被加密(即不是Flexible SSL)。 其他一切都只是安全的错觉,到现在为止还挺好。
注:在CDN设置页面中可以开启CloudFlare的免费SSL服务,默认是Flexible SSL,即您的用户到CloudFlare的连接是加密的,但是CloudFlare到您服务器的连接是不加密的
问题是,当在端口443(https://136.23.63.44:443) 上直接连接到您的IP时,您也会暴露SSL证书。 扫描0.0.0.0/0,整个互联网,在端口443上获取对xyz123boot.com有效的证书,将向攻击者提供您的Web服务器IP。
Censys正在为您扫描。 您唯一需要做的就是将上述单词中描述的搜索词转换为实际的搜索查询。
xyz123boot.com的证书:parsed.names:xyz123boot.com
只显示有效的:tags.raw:trusted
在Censys上组合多个参数可以通过使用简单的布尔逻辑来完成。(https://www.censys.io/certificates/help)
搜索条目:parsed.names:xyz123boot.com和tags.raw:trusted
Censys将向您显示在扫描中找到的符合上述标准的所有证书
逐个单击搜索结果,您可以通过单击右侧的“Explore”打开包含多个工具的下拉列表。
选择What's using this certificate?
> IPv4 Hosts
.
您将看到使用特定证书的IPv4主机列表。 其中一个可能是源IP。
您可以通过IP的443端口来验证。它是否重定向到xyz123boot.com? 它是否直接显示网站?
假如你是FBI,想要关闭一个在cheesecp5vaogohv.onion下可用的儿童色情隐藏服务。为了做到这一点,你需要原始IP,这样你就可以联系主机,并且可能还通过追踪资金来查找操作者。
隐藏的服务具有SSL证书。 查找使用相同证书的IPv4主机只需将其SHA1指纹(不带冒号)粘贴到Censys IPv4主机搜索中即可。使用此方法可以轻松找到配置糟糕的Web服务器。
在遭受多次攻击后,您决定开始使用CloudFlare。 像Censys for DNS records这样的数据驱动服务仍然有旧的A record 指向您的Web服务器IP地址。
这样做的平台是SecurityTrails。 只需在搜索字段中输入网站域名,然后按Enter键即可。 “Historical Data”可以在左侧的侧栏中找到。
除了旧的A record,即使是当前的DNS记录也可能泄漏原始服务器IP。 例如,MX record是查找IP的常用方法。 如果网站在与服务器相同的服务器和IP上托管自己的邮件服务器,则源服务器IP将在MX record中。
注:关于A Records:https://support.dnsimple.com/articles/a-record/
简单讲A 记录是用来指定主机名(或域名)对应的IP地址记录,是用于名称解析的重要记录。
借助数据驱动的平台,任何人都可以对大量数据进行强大的搜索,甚至可以通过比较HTTP头来查找原始服务器。
特别是当拥有一个非常独特的服务器头带有各种软件包括子版本,这样找到你变得更容易。
这也不限于单个参数。 如1.1中所述,您可以在Censys上组合搜索参数。 使用此方法找到的可能性随着您发送的每个不太常见的头部key或value而增加。
假设您正在与1500个其他Web服务器共享您的服务器HTTP头,这些服务器正在发送相同的头key和value组合。 您还使用新的PHP框架发送唯一的HTTP标头(例如:X-Generated-Via:XYZ Framework)。 目前约有400名网站管理员在生产中使用该框架。 交叉点由最终三个服务器组成。 手动完成这些操作需要几秒钟,你就找到了IP。
例如,Censys上用于匹配服务器头的搜索参数是80.http.get.headers.server
:
查找由CloudFlare提供服务的网站方法如下:
80.http.get.headers.server: cloudflare
使用TOR隐藏服务或是通过CloudFlare提供服务的网站也是一个普通的网站。 一个快速的测试也可以揭示IP。
像HTTP服务器头之类的头部可用于查找正在使用的服务和版本的可能漏洞。 当获得对服务器的访问权限时,您显然可以轻松找到IP。
另一种尝试是找到触发错误的边缘情况。 错误消息可以显示敏感信息。 这些信息可以只是IP本身,也可以是任何可以用作此处描述的其他方法的参数的信息。 这些尝试是具有创造性的,可以进行侦察和组合使用。
每一个测试都应在侦察阶段运行gobuster来查找文件和目录。您可以找到的是日志、数据库转储/备份等等。
此外,值得一试的是找出可以使应用程序让网站与其他服务进行交互的方式。 如果您不是NSA,如果他们只是在使用API,您可能无法获得IP。 但作为一个例子,也许你可以在网站上设置一个头像并提供图片的URL而不是上传它。 如果他们正在下载它,他们可能是从他们的原始服务器进行的。 现在IP在您的日志中。
这只是一个快速概述。 你可以做通常做的所有测试技巧的很大一部分,并且网站管理员可能会犯很多错误。
如果原始服务器IP也返回网站的内容,那么相当于你得到了大量在网上可搜索的数据。
浏览网站源代码,您需要寻找独特的代码片段。 在JavaScript中使用带有access/identifier keys的第三方服务(例如Google Analytics,reCAPTCHA)是一个不错的开始。
从HackTheBox网站获取的Google Analytics跟踪代码示例:
ga('create', 'UA-93577176-1', 'auto');
可以使用参数80.http.get.body:
来完成按 body/source 过滤Censys数据。
不幸的是,普通搜索字段有局限性。 您可以在Censys上请求研究访问,这样您就可以通过Google BigQuery进行更强大的查询。
Shodan是一种类似于Censys的服务,也提供了http.html
搜索参数。
搜索示例:
https://www.shodan.io/search?query=http.html%3AUA-32023260-1
https://en.wikipedia.org/wiki/Tor_(anonymity_network)#Hidden_services
https://support.dnsimple.com/articles/a-record/
http://www.chinaz.com/web/2015/0121/379846.shtml
https://zhidao.baidu.com/question/1691539939903827828.html