Telegram menyerang kembali DPI dan mengunci - TLS palsu

gambar

Telegram sedang menguji versi baru dari pemblokiran - memotong lalu lintas di bawah TLS normal (https).
Latar Belakang: Upaya untuk memblokir Telegram terjadi di berbagai negara, opsi pemblokiran pertama adalah sederhana - memblokir alamat IP server Telegram.

Telegram cukup berhasil melawan serangan ini, secara berkala mengubah IP yang darinya tersedia, namun ini menyebabkan ...

Proksi kaus kaki menjadi tersedia beberapa saat kemudian, tetapi protokol itu tidak menyiratkan enkripsi, dan ini memungkinkan untuk hanya melihat "di dalam" terowongan kaus kaki, menentukan bahwa Telegram ada di dalamnya, memblokir proxy.

Babak berikutnya adalah rilis MTProto Proxy, server proxy Telegram yang menggunakan protokol MTProto, tetapi juga memiliki beberapa masalah - ukuran paket cukup karakteristik dan spesifik, dan banyak DPI mulai menentukan Telegram setelah paket pertama memblokir akses.

Jawaban untuk perilaku ini adalah pengenalan versi baru dari protokol MTProto - dengan panjang acak, sekarang lebih sulit untuk menentukan bahwa terowongan Telegram ada di depan kita, bagian dari DPI mulai mengklasifikasikan lalu lintas sebagai bagian "lain" tetapi masih belajar untuk mengidentifikasi pola karakteristik dan dengan beberapa kemungkinan (bukan 100%) menentukan bahwa lalu lintas terkait dengan Telegram
Sekarang kita bergerak ke tahap berikutnya (tampaknya final atau pra-final) - steganografi .
Steganografi (dari bahasa Yunani. Στεγανός "tersembunyi" + γράφω "Saya menulis"; surat-surat. "Penulisan rahasia") - metode mentransmisikan atau menyimpan informasi, dengan mempertimbangkan kerahasiaan fakta transfer (penyimpanan) tersebut.
Dengan kata lain, Telegram sekarang akan berpura-pura sebagai lalu lintas TLS (https) biasa.

Kenapa berpura-pura?


Jawabannya ada di permukaan - saat ini, sebagian besar lalu lintas adalah TLS (https), saat menggunakan protokol ini, inilah yang akan dilihat oleh penyedia atau DPI Anda:

  1. IP Anda
  2. Server IP
  3. Domain koneksi (URL tidak akan melihat)

Selain itu, pekerjaan aktif sedang dilakukan pada item terakhir untuk menghapusnya, dan selain dua IP, hanya ada terowongan terenkripsi dengan konten yang tidak diketahui.

Dalam situasi ini, semua protokol non-standar mulai menarik perhatian tambahan dan solusi untuk masalah ini adalah satu hal - jika Anda terlihat seperti TLS (https) maka ada lebih sedikit pertanyaan.

Implementasi teknis


Saat menggunakan protokol baru, aliran MTProto dibungkus dengan HTTPS standar (pesan negosiasi terowongan pertama) di mana domain (palsu) sedang ditransfer. Setelah negosiasi protokol MTProto - Fake-TLS tidak digunakan, maka lalu lintas mulai berjalan dengan protokol MTProto biasa dengan panjang acak (dd - kunci).

Untuk referensi: Telegram menggunakan 3 jenis kunci untuk Proxy MTProto:

  1. Kunci biasa (Mudah ditentukan oleh DPI)
  2. Dua huruf pertama - dd - panjang pesan acak (DPI dapat menentukan protokol hanya dengan paket negosiasi koneksi pertama - sepertinya https / TLS biasa)
  3. Dua huruf pertama - ee - TLS palsu + panjang pesan acak (DPI tidak dapat menentukan protokol, pesan pertama dan semua yang berikutnya terlihat seperti HTTPS / TLS)

Di mana mencoba?


Sudah ada dua server proxy yang mendukung standar baru (masih belum ada server proxy resmi, walaupun sudah lama menambahkan dukungan untuk kunci dd)

Mendukung mode Proxy TLS Palsu:

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

Harap dicatat: pada saat penulisan, artikel - fungsi tl palsu bersifat eksperimental, oleh karena itu Anda perlu menggunakan versi perangkat lunak Beta atau Alpha (baik proksi maupun klien)

Klien mana yang mendukung mode baru?


Versi beta Telegram Desktop, Telegram iOS dan katakan versi stabil di Android.

Bagaimana cara mencoba?


  1. Misalnya, kami akan menggunakan proxy dengan Python:
  2. Instal 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/id463165/


All Articles