Como localizar o nome do host ao qual um cliente TLS está se conectando || foi: Como encontrar o provedor de serviços original de informações que é servido por um CDN?

1

ok. primeiro post depois de anos de espreita. e até mesmo o título era um desafio em si ...

Pré-requisito:

  • A empresa A está fornecendo serviços por meio de um CDN como o Cloudflare, o Akamai, o CloudFront, ...

Situação:

  • (Meu) O cliente A está solicitando informações
  • (Meu) servidor DNS (dnsmasq) vê a consulta e resolve um endereço que aponta para o CDN
  • O cliente A está felizmente acessando o CDN via https. Tudo funciona.

Meu desafio:

Gostaria de descobrir de qual empresa meu cliente está acessando um serviço. (Empresa A neste exemplo). Agora, a única pepita de informação que tenho é a consulta e resposta dns, ex:

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]

O que eu tentei:

Além do nslookup, dig (que eu não sou um herói), nmap, netstat e um pouco do tcpdump eu li todos os artigos no Superuser.com com "Akamai" e "pesquisei" (duckduckgo'ed) muito. Ou meus parâmetros de pesquisa estão errados ou esta é uma questão muito básica, infelizmente nenhuma resposta foi encontrada.

Quase lá:

Ao fazer isso, deparei com robtex.com , onde é possível digitar o endereço ex. "e4478.a.akamaiedge.net" e devolve todo tipo de informação.
Sob o título "Usando como um CNAME", resolve "e4478.a.akamaiedge.net" para "www.icloud.com.edgekey.net".
Agora isso me ajuda muito! Isto é o que eu adoraria obter com (combinação de) un * xy comandos shell, se possível.

Nem todos os endereços são resolvidos para apenas um CNAME.
Ex. "e6858.dsce9.akamaiedge.net" é resolvido para uma lista de "cominstantwinner.club, www.pboy.com, www.apple.com.edgekey.net.globalredir.akadns.net ", mas está tudo bem. Pelo menos eu posso reduzi-lo (se não for claro óbvio, como neste caso).

Eu também encontrei este link Determinando o serviço que está usando * .CloudFront.net que parecia promissor, mas basicamente diz, não há como descobrir essa informação. De alguma forma Robtex faz isso, e eu não espero que haja uma maneira de fazer isso para mim também.

Algum conselho?

    
por Wolf 30.05.2018 / 18:18

2 respostas

0

O Wireshark seria perfeito para isso. Mas primeiro, o aviso obrigatório:

OBTER PERMISSÃO!

Se você escutar uma rede sem o consentimento de todos os usuários ( cough cough EULA cough ), você está violando as leis federais de interceptação de chamadas.

Como a outra resposta mencionada, o SNI é o caminho a percorrer. Primeiro, capture algum tráfego. DEVE incluir o cliente hello, o que será feito se você capturou desde o início da conexão. Em seguida, encontre o pacote de saudação do cliente. Dentro desse pacote, inspecione o dissector SSL e você encontrará o nome do servidor. Aqui é onde isso é visualmente:

    
por 30.05.2018 / 19:47
0

Em muitos casos, o redirecionamento do nó de borda CDN é feito por meio de truques CNAME de DNS, como você observou, para que o cliente ainda ache que está indo para o site original. Quando esse for o caso, o cabeçalho "Host:" da solicitação de HTTP ainda terá o nome do site original. No caso de TLS (HTTPS), o handshake TLS pode conter um Indicador de Nome do Servidor (SNI) que informa a mesma coisa.

Antes de perguntar: sim, até mesmo o TLS vaza o nome do site que você está visitando. Os pesquisadores estão se esforçando para encontrar uma maneira de contornar isso que não quebra a hospedagem virtual na web. A maioria dos provedores de CDN provavelmente precisa de hospedagem virtual para funcionar, então eles provavelmente usam o SNI.

    
por 30.05.2018 / 19:22