Telegrama revoga DPI e bloqueios - TLS falso

imagem

O Telegram está testando uma nova versão do bloqueio do tráfego de máscara de desvio sob TLS normal (https).
Antecedentes: As tentativas de bloquear o Telegram ocorrem em diferentes países, a primeira opção de bloqueio foi simples - bloquear endereços IP dos servidores do Telegram.

O telegrama luta com sucesso contra esse ataque, alterando periodicamente o IP a partir do qual está disponível, no entanto, isso causa uma longa conexão inicial ...

Os proxies de meias ficaram disponíveis um pouco mais tarde, mas o protocolo não implica em criptografia, e isso tornou possível simplesmente olhar “dentro” do túnel, determinando que o Telegram estava dentro dele, bloqueando o proxy.

A rodada seguinte foi o lançamento do MTProto Proxy, um servidor proxy Telegram que usa seu protocolo MTProto, mas também teve alguns problemas - o tamanho do pacote é bastante característico e específico, e muitos DPIs começaram a determinar o Telegram após o primeiro bloqueio de acesso ao pacote.

A resposta para esse comportamento foi a introdução de uma nova versão do protocolo MTProto - com tamanho aleatório, agora é mais difícil determinar que o túnel do telegrama está à nossa frente, parte do DPI começou a classificar o tráfego como "outra parte", mas ainda aprendeu a identificar um padrão característico e com alguma probabilidade (não 100%) determinar que o tráfego está relacionado ao telegrama
Agora estamos passando para a próxima etapa (parece final ou pré-final) - esteganografia .
Esteganografia (do grego. Στεγανός “escondido” + γράφω “eu escrevo”; cartas. “Escrita secreta”) - um método de transmissão ou armazenamento de informações, levando em consideração a confidencialidade do próprio fato de tal transferência (armazenamento).
Em outras palavras, o Telegram agora fingirá ser tráfego TLS (https) regular.

Por que fingir?


A resposta está na superfície - atualmente, a maior parte do tráfego é TLS (https). Ao usar este protocolo, é isso que o seu provedor ou DPI verá:

  1. Seu IP
  2. Servidor IP
  3. Domínio de conexão (o URL não será exibido)

Além disso, o trabalho ativo está em andamento no último item para removê-lo e, além de dois IPs, havia apenas um túnel criptografado com conteúdo desconhecido.

Nessa situação, todos os protocolos fora do padrão começam a atrair atenção adicional e a solução para esse problema é uma coisa - se você se parece com TLS (https), há menos perguntas.

Implementação técnica


Ao usar o novo protocolo, o fluxo MTProto é agrupado em HTTPS padrão (as primeiras mensagens de negociação de túnel) nas quais o domínio (falso) está sendo transferido. Após a negociação do protocolo MTProto - o Fake-TLS não é usado, o tráfego começa a seguir o protocolo MTProto usual com um comprimento aleatório (chaves dd).

Para referência: o Telegram usa 3 tipos de chaves para o MTProto Proxy:

  1. Chaves regulares (facilmente determinadas por DPI)
  2. As duas primeiras letras - dd - comprimento da mensagem aleatória (o DPI pode determinar o protocolo apenas pelos primeiros pacotes de negociação de conexão - parece https / TLS normal)
  3. As duas primeiras letras - ee - TLS falso + tamanho da mensagem aleatória (o DPI não pode determinar o protocolo, a primeira mensagem e todas as subsequentes se parecem com HTTPS / TLS)

Onde tentar?


Já existem dois servidores proxy compatíveis com o novo padrão (ainda não há servidor proxy oficial, embora tenha adicionado suporte para chaves dd há muito tempo)

Suporte ao modo Proxy TLS falso:

  1. Python github.com/alexbers/mtprotoproxy
  2. Erlang github.com/seriyps/mtproto_proxy/tree/fake-tls

Observe: no momento da redação deste artigo, o artigo - a funcionalidade tls falsa é experimental, portanto, você precisa usar as versões Beta ou Alpha do software (proxies e clientes)

Quais clientes suportam o novo modo?


Versões beta do Telegram Desktop, Telegram iOS e versão estável no Android.

Como tentar?


  1. Por exemplo, usaremos um proxy no Python:
  2. Instale o Proxy:

    git clone https://github.com/alexbers/mtprotoproxy.git; cd mtprotoproxy
  3. :

    python3 mtprotoproxy.py
  4. (experimental) — :

    tg: tg://proxy?server=8.8.8.8&port=443&secret=7gAAAAAAAAAAAAAAAAAAAABnb29nbGUuY29t (experimental)
  5. — , Fake TLS.

?


Google.com , DPI HTTPS Google.com IP — , , .
! (IP) Google.com

Fake TLS — ?


— HTTPS DPI :

  1. IP

( eSNI).

Fake TLS , , , Google - Google — , , - - Google HTTPS/TLS .

?


, — — ( ). , HTTPS . ? — , .

— + () — , — MTProto.

eSNI ( ) — .

?


, Telegram , https/TLS WebSocket — .


MTProto — , Telegram — .

, — () , .

— 443 ( HTTPS) ( dd ee), ee dd , .

— , eSNI — .


Source: https://habr.com/ru/post/pt463165/


All Articles