Telegramm schlĂ€gt DPI zurĂŒck und sperrt - Fake TLS

Bild

Telegram testet eine neue Version der Blockierung des Bypass-Maskierungsverkehrs unter normalem TLS (https).
Hintergrund: Versuche, Telegramm zu blockieren, finden in verschiedenen LĂ€ndern statt. Die erste Blockierungsoption war einfach: Blockieren Sie IP-Adressen von Telegrammservern.

Das Telegramm bekĂ€mpft diesen Angriff erfolgreich genug und Ă€ndert regelmĂ€ĂŸig die IP-Adresse, ĂŒber die es verfĂŒgbar ist. Dies fĂŒhrt jedoch zu einer langen anfĂ€nglichen Verbindung ...

Socken-Proxys wurden etwas spĂ€ter verfĂŒgbar, aber das Protokoll impliziert keine VerschlĂŒsselung. Dies ermöglichte es, einfach in den Socken-Tunnel zu schauen und festzustellen, dass sich ein Telegramm darin befand, wodurch die Proxys blockiert wurden.

Die nĂ€chste Runde war die Veröffentlichung von MTProto Proxy, einem Telegramm-Proxyserver, der sein MTProto-Protokoll verwendet, aber auch einige Probleme hatte - die PaketgrĂ¶ĂŸe ist sehr charakteristisch und spezifisch, und viele DPIs begannen, Telegramm nach dem ersten paketblockierenden Zugriff zu bestimmen.

Die Antwort auf dieses Verhalten war die EinfĂŒhrung einer neuen Version des MTProto-Protokolls - mit einer zufĂ€lligen LĂ€nge ist es jetzt schwieriger festzustellen, dass sich der Telegrammtunnel vor uns befindet. Ein Teil der DPI begann, den Verkehr als „einen anderen“ Teil zu klassifizieren, lernte jedoch immer noch, ein charakteristisches Muster zu identifizieren, und zwar mit einer gewissen Wahrscheinlichkeit (nicht 100%) Stellen Sie fest, dass der Datenverkehr mit Telegramm zusammenhĂ€ngt
Jetzt gehen wir zur nĂ€chsten Stufe ĂŒber (es scheint endgĂŒltig oder vorfinal zu sein) - der Steganographie .
Steganographie (aus dem Griechischen. ÎŁÏ„Î”ÎłÎ±ÎœÏŒÏ‚ „versteckt“ + ÎłÏÎŹÏ†Ï‰ „Ich schreibe“; Briefe. „Geheimes Schreiben“) - eine Methode zur Übermittlung oder Speicherung von Informationen unter BerĂŒcksichtigung der Vertraulichkeit der Tatsache einer solchen Übertragung (Speicherung).
Mit anderen Worten, Telegramm gibt jetzt vor, regulÀrer TLS-Verkehr (https) zu sein.

Warum so tun?


Die Antwort liegt an der OberflĂ€che - derzeit ist der grĂ¶ĂŸte Teil des Datenverkehrs TLS (https). Wenn Sie dieses Protokoll verwenden, sieht Ihr Provider oder DPI Folgendes:

  1. Ihre IP
  2. IP Server
  3. VerbindungsdomÀne (URL wird nicht angezeigt)

DarĂŒber hinaus wird aktiv an dem letzten Element gearbeitet, um es zu entfernen, und zusĂ€tzlich zu zwei IPs gab es nur einen verschlĂŒsselten Tunnel mit unbekanntem Inhalt.

In dieser Situation ziehen alle nicht standardmĂ€ĂŸigen Protokolle zusĂ€tzliche Aufmerksamkeit auf sich, und die Lösung fĂŒr dieses Problem ist eine Sache: Wenn Sie wie TLS (https) aussehen, gibt es weniger Fragen.

Technische Umsetzung


Bei Verwendung des neuen Protokolls wird der MTProto-Stream in Standard-HTTPS (die ersten Tunnelverhandlungsnachrichten) eingeschlossen, in denen die DomĂ€ne (FĂ€lschung) ĂŒbertragen wird. Nach Aushandlung des MTProto-Protokolls - Fake-TLS wird nicht verwendet, beginnt der Datenverkehr mit dem ĂŒblichen MTProto-Protokoll mit zufĂ€lliger LĂ€nge (dd-SchlĂŒssel) zu laufen.

Als Referenz: Telegramm verwendet 3 Arten von SchlĂŒsseln fĂŒr MTProto Proxy:

  1. Normale SchlĂŒssel (leicht durch DPI zu bestimmen)
  2. Die ersten beiden Buchstaben - dd - zufÀllige NachrichtenlÀnge (DPI kann das Protokoll nur anhand der ersten Verbindungsverhandlungspakete bestimmen - es sieht aus wie normales https / TLS)
  3. Die ersten beiden Buchstaben - ee - Fake TLS + zufÀllige NachrichtenlÀnge (DPI kann das Protokoll nicht bestimmen, die erste Nachricht und alle nachfolgenden sehen aus wie HTTPS / TLS)

Wo kann man es versuchen?


Es gibt bereits zwei Proxyserver, die den neuen Standard unterstĂŒtzen (es gibt noch keinen offiziellen Proxyserver, obwohl vor langer Zeit die UnterstĂŒtzung fĂŒr DD-SchlĂŒssel hinzugefĂŒgt wurde).

UnterstĂŒtzung des gefĂ€lschten TLS-Proxy-Modus:

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

Bitte beachten Sie: Zum Zeitpunkt des Schreibens ist die FunktionalitĂ€t des Artikels - fake tls experimentell, daher mĂŒssen Sie Beta- oder Alpha-Versionen der Software verwenden (sowohl Proxys als auch Clients).

Welche Clients unterstĂŒtzen den neuen Modus?


Beta-Versionen von Telegram Desktop, Telegram iOS und sagen stabile Version auf Android.

Wie versuche ich es?


  1. Zum Beispiel werden wir einen Proxy in Python verwenden:
  2. Proxy installieren:

    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/de463165/


All Articles