Come trovare a quale nome host un client TLS si sta connettendo || era: come trovare il fornitore di servizi originale di informazioni fornite da una rete CDN?


1

ok. primo post dopo anni di agguato. e anche il titolo era una sfida in sé ...

Prerequisiti:

  • La società A fornisce servizi tramite una CDN come Cloudflare, Akamai, CloudFront, ...

Situazione:

  • (Mio) Il cliente A richiede informazioni
  • Il server DNS (My) (dnsmasq) vede la query e risolve un indirizzo che punta alla CDN
  • Il client A accede felicemente a CDN tramite https. Tutto funziona.

La mia sfida:

Vorrei sapere da quale azienda il mio cliente accede a un servizio. (Azienda A in questo esempio). In questo momento, l'unica pepita di informazioni che ho è la query DNS e la risposta, ad esempio:

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]

Cosa ho provato:

A parte nslookup, scavare (di cui non sono un eroe), nmap, netstat e un po 'di tcpdump ho letto ogni articolo su Superuser.com con "Akamai" e "ricercato" (duckduckgo) molto. O i miei parametri di ricerca sono sbagliati o questa è una domanda molto semplice, purtroppo non sono state trovate risposte.

Quasi lì:

Nel fare ciò mi sono imbattuto in robtex.com , dove è possibile inserire l'indirizzo ex. "e4478.a.akamaiedge.net" e restituisce ogni tipo di informazione.
Sotto l'intestazione "Utilizzo come CNAME" risolve "e4478.a.akamaiedge.net" in "www.icloud.com.edgekey.net".
Ora questo mi aiuta molto! Questo è quello che mi piacerebbe ottenere con una (combinazione di) comandi della shell un * xy, se possibile.

Non tutti gli indirizzi sono risolti in un solo CNAME.
Ex. "e6858.dsce9.akamaiedge.net" è stato risolto in un elenco di "compinstantwinner.club, www.pboy.com, www.apple.com.edgekey.net.globalredir.akadns.net" ma va bene. Almeno posso restringerlo (se non è del tutto ovvio come in questo caso).

Mi sono anche imbattuto in questo link per determinare il servizio che utilizza * .CloudFront.net che sembrava promettente, ma sostanzialmente dice che non c'è modo di scoprire tali informazioni. In qualche modo Robtex lo fa e non rinuncio alla speranza che ci sia un modo per farlo anche per me.

Qualche consiglio?


Penso che i tuoi downvotes provengano dal titolo. Ho troppe modifiche in sospeso, o lo riparerei, ma suggerisco "Come trovare a quale hostname si connette un client TLS".
Duncan X Simpson,

Ma non c'è modo di trovare l'IP senza che il sito te lo dica specificamente.
Duncan X Simpson,

Grazie Duncan X Simpson. Se scopro come potrei cambiare il titolo, lo farò!
Lupo,

Per cambiare il titolo, premi il pulsante Modifica sotto i tag della tua domanda.
Duncan X Simpson,

fatto. tutto richiede più tempo la prima volta. :)
Lupo,

Risposte:


0

Wireshark sarebbe perfetto per questo. Ma prima, l'avvertimento obbligatorio:

AVERE IL PERMESSO!

Se intercetti una rete senza il consenso di tutti coloro che la utilizzano ( tosse EULA tosse ), stai infrangendo le leggi federali sulle intercettazioni.

Come menzionato nell'altra risposta, SNI è la strada da percorrere. Per prima cosa acquisisci un po 'di traffico. DEVE includere il ciao del cliente, cosa che farà se è stato acquisito dall'inizio della connessione. Quindi vai a trovare il pacchetto ciao cliente. All'interno di quel pacchetto, ispeziona il dissettore SSL e troverai il nome del server. Ecco dove si trova visivamente:

Illustrazione di Wireshark


Grazie. Dal momento che sto solo osservando il traffico tra il mio client locale e il mio server DNS locale, spero di essere al sicuro da qualsiasi procedimento giudiziario ..;)
Wolf,

La soluzione che stai proponendo suggerisce che questa è una connessione https. Non ne sono sicuro. È un servizio sul client (in questo caso, relativo a macOS iCloud) che viene avviato ogni volta che il client viene avviato. Catturare il traffico significherebbe rispecchiare uno switchport su un'altra macchina. Abbastanza complesso (per un n0ob come me). Speravo che ci fosse una combinazione di nslookup-traceroute-dig-qualunque stringa di comando in cui avrei potuto inserire indirizzi come "e6858.dsce9.akamaiedge.net" e che sputasse un elenco di CNAME correlati.
Lupo,

@Wolf 1. È molto probabile HTTPS. 2. Anche se non lo è, probabilmente utilizza comunque SNI. 3. Catturare il traffico non lo richiede. Se è possibile eseguire Wireshark / ecc. sul client stesso, questo è tutto ciò che è necessario. Altrimenti, potrebbe essere necessario utilizzare l'avvelenamento ARP (che non dovrebbe essere troppo difficile) se non è possibile ottenere una porta con mirroring o un router / switch nel percorso per acquisire il traffico.
Duncan X Simpson,

0

In molti casi, il reindirizzamento del nodo perimetrale CDN viene eseguito tramite trucchi DNS CNAME, come hai notato, quindi il client pensa ancora che stia andando al sito originale. In tal caso, l'intestazione "Host:" della richiesta HTTP avrà comunque il nome del sito originale. Nel caso di TLS (HTTPS), l'handshake TLS può contenere un Server Name Indicator (SNI) che ti dice la stessa cosa.

Prima di chiedere: Sì, anche TLS perde spesso il nome del sito in cui stai andando. I ricercatori stanno lottando per trovare un buon modo per aggirare ciò che non rompe l'hosting web virtuale. La maggior parte dei provider di CDN probabilmente ha bisogno dell'hosting web virtuale per funzionare, quindi probabilmente usano SNI.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.