Frente de Domínio em poucas palavras

Artem Rukavytsia em HackerNoon.com Segue 8 de jul · 4 min ler

Você provavelmente já ouviu falar sobre fronting de domínio , especialmente no contexto de fugir da censura do governo por aplicativos populares de mensagens como Signal e Telegram .

CDNs

Descrição breve

O fronting de domínio permite ignorar a censura de um recurso que pode ser bloqueado por DPI, filtragem de DNS ou bloqueio de IP. Por outro lado, ele depende de CDNs que hospedam vários domínios. Nem o AWS nem o GCP (principais provedores de CDN) permitirão que esse truque seja usado mais. O Google alegou que nunca foi um recurso suportado pelo GCP, enquanto a Amazon declarou que foi uma violação dos Termos de Serviço da AWS.

Como funciona o fronting de domínio?

O fronting de domínio é usado para contornar a censura, fazendo com que o tráfego pareça ser gerado por um domínio válido. Este método é viável porque os CDNs modernos contêm duas partes que existem independentemente umas das outras. A parte externa é usada para estabelecer uma conexão SSL com um cliente, enquanto o interno processa uma solicitação após a descriptografia do tráfego. O redirecionamento para o destino oculto se torna possível nesse estágio.

Em uma situação normal, as três solicitações (DNS, SNI e HTTP Host Header) têm o mesmo nome de host. As solicitações SNNS e SNI são enviadas no texto simples (pode ser rastreado por um censor), enquanto o tráfego HTTP interno é criptografado. O fronting de domínio depende do envio do mesmo host nas solicitações DNS e SNI e no host bloqueado diferente no cabeçalho do host HTTP.

Domínio de frente em poucas palavras

Por exemplo, domínio-A, domínio-B estão sob o mesmo CDN e o domínio-A está bloqueado em alguns países, enquanto o domínio-B não está. Colocar o domínio B válido no cabeçalho SNI e o domínio A bloqueado no cabeçalho HTTP é a ideia principal de fronting de domínio. Como o SNI não é uma parte criptografada do protocolo TLS, uma autoridade pode ver uma intenção de estabelecer uma conexão com um domínio-B válido. O CDN lê o cabeçalho do host HTTP com um domínio A bloqueado e encaminha a solicitação para a origem especificada – domínio A bloqueado.

Experimentar

O processo que captura o tráfego de rede é uma imitação do censor. Eu prefiro usar o Wireshark ou ngrep para esse propósito.

Lançamento tshark em um terminal:

sudo tshark -T campos -Y 'tcp.dstport == 443 e ssl.handshake.extensions_server_name' -e ssl.handshake.extensions_server_name

No segundo terminal, execute este comando:

curl -sI https://github.com

No primeiro terminal tshark mostra o nome do site ao qual acabamos de acessar:

github.com

É uma emulação do pedido acima do qual o cURL envia:

Tshark mostra a mesma resposta ao vivo acima.

Agora vamos tentar aproveitar o fronting de domínio. Como o GCP e a AWS proibiram essa abordagem, vamos usar as páginas do GitHub para fins de demonstração. Lista de sites que usam páginas do GitHub está aqui . Como foi descrito acima, o domínio proibido (selecionado aleatoriamente na lista acima – bulma.io ) deve ser definido apenas no cabeçalho do host HTTP, enquanto o domínio "válido" no mesmo CDN (domínio github.io) – Páginas do GitHub) devem ser especificadas em locais permanecidos.

Ele gera a saída que prova que a resposta foi enviada por recurso "proibido":

<meta property = ”og: url” conteúdo = ”https://bulma.io”>

No primeiro terminal, tshark mostra github.io – domínio “válido” para um censor. Está feito.