好的。潜水多年后的第一篇帖子。甚至标题本身就是一个挑战......
先决条件:
- A 公司通过 Cloudflare、Akamai、CloudFront 等 CDN 提供服务……
情况:
- (我的)客户 A 正在请求信息
- (我的)DNS 服务器(dnsmasq)看到该查询并解析指向 CDN 的地址
- 客户端 A 顺利地通过 https 访问 CDN。一切正常。
我的挑战:
我想了解我的客户从哪家公司访问服务。(本例中为公司 A)。目前,我掌握的唯一信息是 DNS 查询和应答,例如:
query[A] e4478.a.akamaiedge.net from [IP_of_Client_A]
query[A] e673.dsce9.akamaiedge.net from [IP_of_Client_A]
query[A] e6858.dsce9.akamaiedge.net from [IP_of_Client_A]
我尝试过什么:
除了 nslookup、dig(我不是这方面的专家)、nmap、netstat 和一些 tcpdump 之外,我还阅读了 Superuser.com 上每一篇提到“Akamai”的文章,并“研究”了很多次(duckduckgo'ed)。要么是我的搜索参数不对,要么这是一个非常基本的问题,可惜没有找到答案。
差不多了:
在这样做的时候我遇到了robtex.com,其中可以输入地址,例如“e4478.a.akamaiedge.net”,它会返回各种信息。
在“用作 CNAME”标题下,它会将“e4478.a.akamaiedge.net”解析为“www.icloud.com.edgekey.net”。
现在这对我有很大的帮助!如果可能的话,这就是我希望通过 un*xy shell 命令(组合)获得的功能。
并非每个地址都解析为一个 CNAME。
例如,“e6858.dsce9.akamaiedge.net”解析为“com-instantwinner.club、www.pboy.com、www.apple.com.edgekey.net.globalredir.akadns.net”列表,但没关系。至少我可以缩小范围(如果它不像本例中那样明显)。
我也看到了这个链接确定使用 *.CloudFront.net 的服务这看起来很有希望,但基本上说,没有办法找到这些信息。 Robtex 以某种方式做到了这一点,而且我不会放弃希望,我也会有办法做到这一点。
有什么建议吗?
答案1
答案2
在许多情况下,CDN 边缘节点重定向是通过 DNS CNAME 技巧完成的(如您所述),因此客户端仍然认为它将转到原始站点。在这种情况下,HTTP 请求的“Host:”标头仍将包含原始站点的名称。对于 TLS(HTTPS),TLS 握手可能包含服务器名称指示符 (SNI),它会告诉您相同的信息。
在您询问之前:是的,即使是 TLS 也经常会泄露您要访问的网站的名称。研究人员正在努力寻找一种不会破坏虚拟网络托管的好方法。大多数 CDN 提供商可能需要虚拟网络托管才能工作,因此他们可能会使用 SNI。