获得许可!

获得许可!

好的。潜水多年后的第一篇帖子。甚至标题本身就是一个挑战......

先决条件:

  • 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

Wireshark 非常适合此用途。但首先,必须警告:

获得许可!

如果你在未经所有使用者同意的情况下窃听网络(咳嗽最终用户许可协议咳嗽),你违反了联邦窃听法。

正如另一个答案所提到的,SNI 是可行的方法。首先捕获一些流量。它必须包含客户端问候,如果您从连接开始时就捕获了它,它将包含它。接下来去查找所述客户端问候数据包。在该数据包中,检查 SSL 解析器,您将找到服务器名称。以下是它的直观位置:

Wireshark 插图

答案2

在许多情况下,CDN 边缘节点重定向是通过 DNS CNAME 技巧完成的(如您所述),因此客户端仍然认为它将转到原始站点。在这种情况下,HTTP 请求的“Host:”标头仍将包含原始站点的名称。对于 TLS(HTTPS),TLS 握手可能包含服务器名称指示符 (SNI),它会告诉您相同的信息。

在您询问之前:是的,即使是 TLS 也经常会泄露您要访问的网站的名称。研究人员正在努力寻找一种不会破坏虚拟网络托管的好方法。大多数 CDN 提供商可能需要虚拟网络托管才能工作,因此他们可能会使用 SNI。

相关内容