So finden Sie den Hostnamen, zu dem ein TLS-Client eine Verbindung mit || herstellt war: Wie finde ich den ursprünglichen Dienstanbieter von Informationen, die von einem CDN bereitgestellt werden?

831
Wolf

OK. erster post nach jahrelangen lauern. und selbst der Titel war an sich schon eine Herausforderung ...

Voraussetzung:

  • Unternehmen A bietet Dienste über ein CDN wie Cloudflare, Akamai, CloudFront, ...

Situation:

  • (Mein) Kunde A fordert Informationen an
  • (Mein) DNS-Server (dnsmasq) erkennt die Abfrage und löst eine Adresse auf, die auf das CDN verweist
  • Client A greift glücklich über https auf CDN zu. Funktioniert alles.

Meine Herausforderung:

Ich möchte herausfinden, von welchem ​​Unternehmen mein Kunde auf einen Dienst zugreift. (Firma A in diesem Beispiel). Im Moment ist das einzige Nugget an Informationen, das ich habe, die DNS-Abfrage und -Antwort, zB:

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] 

Was habe ich ausprobiert:

Abgesehen von nslookup, dig (von dem ich kein Held bin), nmap, netstat und ein wenig tcpdump habe ich jeden Artikel auf Superuser.com mit "Akamai" darin gelesen und viel "recherchiert" (duckduckgo'ed). Entweder sind meine Suchparameter falsch oder es handelt sich um eine sehr grundlegende Frage. Leider wurden keine Antworten gefunden.

Fast dort:

Dabei bin ich auf robtex.com gestoßen, wo es möglich ist, die Adresse ex einzugeben. "e4478.a.akamaiedge.net" und gibt alle möglichen Informationen zurück.
Unter der Überschrift "Verwendung als CNAME" wird "e4478.a.akamaiedge.net" in "www.icloud.com.edgekey.net" aufgelöst.
Das hilft mir jetzt sehr! Dies würde ich gerne mit einer (Kombination von) un * xy-Shellbefehlen erhalten, wenn überhaupt möglich.

Nicht jede Adresse wird in nur einen CNAME aufgelöst.
Ex. "e6858.dsce9.akamaiedge.net" wurde in eine Liste des "compinstantwinner.club, www.pboy.com, www.apple.com.edgekey.net.globalredir.akadns.net" aufgelöst, aber das ist in Ordnung. Zumindest kann ich es einschränken (wenn es nicht offensichtlich ist, wie in diesem Fall).

Ich bin auch auf diesen Link gestoßen. Bestimmung des Dienstes, der * .CloudFront.net verwendet, der vielversprechend aussieht, aber im Grunde sagt, es gibt keine Möglichkeit, diese Informationen herauszufinden. Irgendwie tut Robtex es, und ich gebe die Hoffnung nicht auf, dass es auch für mich einen Weg gibt.

Irgendein Rat?

1
Ich denke, deine Downvotes kommen vom Titel. Ich habe zu viele ausstehende Änderungen oder würde sie korrigieren. Ich empfehle jedoch "Wie finde ich den Hostnamen, mit dem sich ein TLS-Client verbindet". Duncan X Simpson vor 6 Jahren 0
Es ist jedoch nicht möglich, die IP-Adresse zu finden, wenn Sie nicht ausdrücklich von der Site informiert werden. Duncan X Simpson vor 6 Jahren 0
Danke, Duncan X Simpson. Wenn ich herausfinde, wie ich den Titel ändern könnte, mache ich das! Wolf vor 6 Jahren 0
Um den Titel zu ändern, klicken Sie auf die Schaltfläche Bearbeiten unter den Tags Ihrer Frage. Duncan X Simpson vor 6 Jahren 0
erledigt. alles dauert länger beim ersten mal. :) Wolf vor 6 Jahren 0
Ich würde den "war" Teil loswerden. Wenn die Leute wissen müssen, können sie einfach auf den "bearbeiteten" Link klicken. Duncan X Simpson vor 6 Jahren 0
Der von Ihnen vorgeschlagene Titel setzt voraus, dass das Problem mit TLS zusammenhängt. Das war mir nicht klar, als ich die Frage stellte. Wenn andere das gleiche Problem haben wie ich, würde ihnen der alte Titel helfen. Wolf vor 6 Jahren 0
Ich verstehe, dass Sie nur versuchen, mir zu helfen, nicht abgelehnt zu werden, aber in der Tat bin ich nicht hier, um zu punkten. Es hat einen Grund, warum ich so viele Jahre gelauert habe und war sehr nervös, als ich meine erste Frage stellte. Es sind Leute wie Sie, die es wert sind. Dank dafür! :) (und ja, ich muss lernen, dass "return" bedeutet "Kommentar hinzufügen" ...) Wolf vor 6 Jahren 0

2 Antworten auf die Frage

0
Spiff

In vielen Fällen erfolgt die Umleitung des CDN-Randknotens durch DNS-CNAME-Tricks, wie Sie bereits festgestellt haben, sodass der Client immer noch der Meinung ist, dass er zur ursprünglichen Site geht. In diesem Fall hat der Header "Host:" der HTTP-Anforderung immer noch den Namen der ursprünglichen Site. Im Falle von TLS (HTTPS) enthält der TLS-Handshake möglicherweise einen SNI (Server Name Indicator), der Ihnen das gleiche sagt.

Bevor Sie fragen: Ja, selbst TLS verliert häufig den Namen der Website, die Sie besuchen. Forscher kämpfen darum, einen guten Weg zu finden, der das virtuelle Webhosting nicht bricht. Die meisten CDN-Anbieter benötigen wahrscheinlich virtuelles Webhosting, um SNI zu verwenden.

0
Duncan X Simpson

Wireshark wäre dafür perfekt. Aber zuerst die obligatorische Warnung:

ERLAUBNIS BEKOMMEN!

Wenn Sie ein Netzwerk ohne Zustimmung aller Benutzer abhören ( Husten EULA- Husten ), verstoßen Sie gegen die Abhörgesetze.

Wie in der anderen Antwort erwähnt, ist SNI der richtige Weg. Erfassen Sie zuerst etwas Verkehr. Es MUSS den Client hallo einschließen, was Sie tun werden, wenn Sie vom Beginn der Verbindung aus aufgenommen wurden. Als nächstes gehen Sie zum besagten Client-Hallo-Paket. Überprüfen Sie den SSL-Dissector in diesem Paket und Sie finden den Servernamen. Hier ist, wo das visuell ist:

Wireshark-Abbildung

Vielen Dank. Da ich nur den Datenverkehr zwischen meinem lokalen Client und meinem lokalen DNS-Server beobachte, hoffe ich, dass ich vor jeder Strafverfolgung sicher bin ..;) Wolf vor 6 Jahren 0
Die von Ihnen vorgeschlagene Lösung schlägt vor, dass es sich um eine https-Verbindung handelt. Ich bin mir darüber nicht sicher. Es ist ein Dienst auf dem Client (in diesem Fall ein mit macOS iCloud verwandter), der bei jedem Start des Clients aktiviert wird. Das Erfassen von Datenverkehr würde bedeuten, einen Switchport auf einem anderen Computer zu spiegeln. Ziemlich komplex (für einen n0ob wie ich). Ich hoffte, dass es eine Kombination aus nslookup-traceroute-dig-egal-Befehlszeichenfolge gab, in die ich Adressen wie "e6858.dsce9.akamaiedge.net" ablegen konnte und die eine Liste verwandter CNAMEs ausspuckte. Wolf vor 6 Jahren 0
@ Wolf 1. Es ist höchstwahrscheinlich HTTPS. 2. Auch wenn dies nicht der Fall ist, wird wahrscheinlich SNI verwendet. 3. Das Erfassen von Datenverkehr erfordert dies nicht. Wenn Sie Wireshark / etc ausführen können. auf dem Client selbst ist das alles was nötig ist. Andernfalls müssen Sie möglicherweise ARP-Poisoning verwenden (was nicht zu schwierig sein sollte), wenn Sie keinen gespiegelten Port oder keinen Router / Switch im Pfad erhalten, um den Verkehr zu erfassen. Duncan X Simpson vor 6 Jahren 0