9 апреля 2026 года Apple удалила альтернативный Telegram-клиент Telega из App Store. В тот же день Cloudflare Radar пометил домены telega.me и api.telega.info как spyware, после чего центр сертификации GlobalSign отозвал у проекта TLS-сертификат. 10 апреля Cloudflare снял пометку spyware — по словам разработчиков Telega, после предоставления ими «необходимой информации». Однако 11 апреля VirusTotal (Alphabet) пометил домены Telega как malware. На момент публикации TLS-сертификат остаётся отозванным, приложение в App Store не восстановлено.

Представители Telega заявили «Осторожно, новостям»: «Телега работает через официальный Telegram API с использованием протокола MTProto. Данные защищены шифрованием Telegram».

Я провёл полный технический аудит Android-версии Telega 2.4.2 — статический анализ декомпилированного кода и живой динамический эксперимент на контролируемом стенде. Ниже — что я нашёл.


Статический и динамический анализ Android-версии Telega 2.4.2 на контролируемом стенде. Что я нашёл, как воспроизвести, и почему утверждение о «шифровании Telegram» технически некорректно.

SHA-256 анализируемого APK (base.apk): efb7a89496e11af0bd8516a7a571a723a393be62feaf542810f999200ffcbe9c.

TL;DR

  1. Telega подменяет адреса дата-центров Telegram на собственные серверы оператора в Казани (AS203502, подсеть 130.49.152.0/24).

  2. Через эти серверы оператор получает auth_key — рабочий ключ к Telegram-аккаунту пользователя. Подтверждено на живом эксперименте: в настоящем Telegram появилась сессия, которую я не создавал.

  3. Каждая фотография, отправленная через Telega, перекодируется на сервере оператора. Оператор видит содержимое в расшифрованном виде.

  4. Секретные чаты не работают.

  5. Публичный «исходный код» на GitHub не соответствует распространяемому APK.

Как устроена подмена

При первом запуске Telega обращается к https://api.telega.info/v1/dc-proxy и получает JSON со списком из 25 IP-адресов:

{
  "dc_version": 2,
  "dcs": [
    {"id":1, "addresses":[
      {"host":"130.49.152.50","port":443},
      {"host":"130.49.152.20","port":443},
      ...
    ]},
    ...
  ]
}

Клиент подключается к этим адресам как к настоящим Telegram DC. Все 25 адресов принадлежат не Telegram, а оператору Telega:

netname:  RU-TELEGA
org-name: JOINT STOCK COMPANY "TELEGA"
route:    130.49.152.0/24
origin:   AS203502
country:  RU

Почему клиент доверяет поддельным серверам? В нативной библиотеке libtmessages.49.so зашит дополнительный RSA-ключ с отпечатком 0x2c945714333b5ebd, которого нет в официальном Telegram. Этим ключом серверы оператора подписывают MTProto-handshake, и клиент принимает его как валидный.

Утверждение оператора «данные защищены шифрованием Telegram» технически некорректно. MTProto-шифрование действительно используется, но auth_key генерируется через серверы оператора — а значит оператор является стороной шифрования, а не транзитным каналом.

Эксперимент: живая сессия

Чтобы подтвердить, что это не теоретическая уязвимость, а работающий перехват, я завёл тестовый аккаунт и прошёл онбординг в Telega на эмуляторе Android 14.

Результат: в настоящем Telegram-клиенте на другом устройстве появилась активная сессия, которой я не создавал.

Список активных сессий в Telegram — видна сессия Telega
Список активных сессий в Telegram — видна сессия Telega
Детали сессии Telega: «iOS SDK 34», геолокация Russia
Детали сессии Telega: «iOS SDK 34», геолокация Russia

Характерные маркеры этой сессии:

Поле

Значение

Версия системы

iOS SDK 34 (не существует — это конкатенация «iOS» + Android API level)

Геолокация

Russia (хотя GPS был выставлен на Хельсинки — Telegram определил страну по IP сервера оператора)

IP-адрес

Нет данных

Секретные чаты

Принимать

«iOS SDK 34» — это строка, которую оператор подставляет в поле system_version при MTProto handshake. Ни один реальный клиент такую строку не генерирует. Это независимое подтверждение того, что handshake собирается не клиентом, а проходит через MitM-инфраструктуру.

Любой пользователь Telegram может проверить наличие Telega-сессии: Настройки -> Устройства -> Активные сеансы. Если есть сессия с «Версия системы: iOS SDK 34» — это оператор Telega.

Секретные чаты скомпрометированы

Оператор создаёт полноценную Telegram-сессию с настройкой «Секретные чаты: Принимать» (по умолчанию). При открытии нового secret chat одной из e2e-сторон становится сессия оператора, а не реальное устройство. Оператор получает plaintext secret chat как одна из сторон ключевого обмена.

При использовании Telega скомпрометированы все чаты, включая секретные.

Фотографии перекодируются на сервере

Я отправил одну тестовую картинку двумя способами:

  • Как файл (через скрепку): картинка дошла побитно идентичной. SHA-256 совпадает.

  • Как фото (через галерею): SHA-256 изменился. Размер изменился (2539 байт вместо 2298). Пиксели идентичны, но JPEG упакован другой библиотекой (libjpeg вместо encoder отправителя).

Между отправителем и получателем кто-то декодировал фотографию, пропустил через свой сервер и упаковал заново. Кто — очевидно: инфраструктура оператора в 130.49.152.0/24.

Это означает, что оператор видит содержимое каждого фото-сообщения и технически способен подменять пиксели.

Телеметрия: побайтовый профиль каждого пользователя

Раз в сутки Telega отправляет на stats.telega.info детальную статистику:

POST /v1/network/usage
Authorization: Bearer v4.local.EW2HsZyLuKol...
{
  "items": [
    {"content_type":"call",      "wifi":{"incoming":0,       "outgoing":0}},
    {"content_type":"message",   "wifi":{"incoming":3096242, "outgoing":870670}},
    {"content_type":"video",     "wifi":{"incoming":8766576, "outgoing":0}},
    {"content_type":"image",     "wifi":{"incoming":2198480, "outgoing":2324}},
    {"content_type":"file",      "wifi":{"incoming":2942592, "outgoing":0}},
    {"content_type":"audio",     "wifi":{"incoming":801868,  "outgoing":0}},
    {"content_type":"total",     "wifi":{"incoming":17805758,"outgoing":872994}}
  ]
}

Оператор знает, сколько байт каждый пользователь отправил/получил по каждому типу контента (текст, фото, видео, аудио, файлы, звонки) и через какую сеть (WiFi или мобильные данные). Авторизация через PASETO v4.local — привязана к Telegram user ID, не анонимная.

Такого эндпоинта в настоящем Telegram нет.

Серверная цензура: Mlist

В декомпилированном коде обнаружен пакет ru.dahl.messenger.moderation — механизм серверно-управляемой цензуры.

Как это работает:

  1. Оператор через Firebase Remote Config переключает флаг moderation_enabled в true.

  2. Клиент запрашивает у api.hub.telega.info список идентификаторов (user_id, channel_id, chat_id).

  3. Сообщения от этих идентификаторов скрываются локально: каналы не открываются, поиск не находит, сообщения не показываются.

Цензура может быть включена для произвольного подмножества пользователей (по профилю AppMetrica = Telegram user ID), без обновления приложения, в любой момент. Классическая схема: «выключено в магазине, включено после установки».

Секретные чаты заблокированы на уровне конфига

Помимо того, что секретные чаты скомпрометированы через MitM, они ещё и принудительно отключены в клиенте.

В декомпилированном коде класс FeatureManager читает Firebase Remote Config флаг enable_sc. Значение по умолчанию в коде — true. Но сервер оператора возвращает false — и клиент не позволяет ни создавать секретные чаты, ни принимать входящие приглашения. Они молча игнорируются.

Тот же механизм используется для блокировки Telegram-звонков: isTelegramCallFallbackEnabled() жёстко возвращает false без чтения конфига — даже Firebase Remote Config не может включить обратно.

Пользователь Telega лишён обоих механизмов сквозного шифрования в Telegram: ни secret chats, ни зашифрованных голосовых звонков.

Независимая проверка: tria.ge 8/10

Я загрузил base.apk Telega 2.4.2 в публичный песочник tria.ge. Результат: 8 из 10 (высокий уровень угрозы).

Сработавшие сигнатуры (MITRE ATT&CK):

  • T1426 — root detection (score 8)

  • T1407 — динамическая загрузка DEX/JAR (score 7)

  • T1424 — перечисление запущенных процессов (score 7)

  • T1421 — сбор информации о сети (score 6)

  • T1422 — чтение данных оператора связи (score 6)

Теги: defense_evasion, discovery, evasion, execution, persistence.

При этом в песочнице не зафиксировано подключений к api.telega.info или 130.49.152.0/24 — потому что MitM-инфраструктура активируется только после ввода номера телефона. Без логина приложение выглядит как обычный Telegram-клиент с Firebase/Google-трафиком. Это объясняет, почему автоматические проверки Google Play не выявили подмену.

Параллельно с этим

  • Два AppMetrica-проекта работают одновременно (bc06ee20-... и 20799a27-...) — двойная телеметрия в Yandex.

  • Звонки только внутри Telega — через серверы VK Group (calls.okcdn.ru, AS47764). Кросс-звонки Telega<->Telegram невозможны. Оператор ведёт серверный реестр активных устройств.

  • Автоподписка на канал @telegaru (6.27 млн подписчиков на момент исследования) с принудительными уведомлениями — без спроса.

  • PII отправляются отдельным эндпоинтом /v1/api/account: телефон, имя, модель устройства, IP, тайм-зона — на серверы оператора в открытом виде, помимо Telegram handshake.

«Открытый код» на GitHub

Оператор ссылается на Telegru как на исходный код. Я проверил.

Android. Публичный репозиторий Telegru/Telegram-Android — это чистый upstream mirror от DrKLO/Telegram. Пакет org.telegram.messenger, имя «Telegram», ни одного упоминания «Даль» или «Телега». Распространяемый APK — пакет ru.dahl.messenger, десятки собственных интеграций. Связи между ними нет.

Desktop. Форк Telegru/tdesktop содержит минимальные модификации (брендинг + один сетевой запрос). Но критические элементы — подмена DC, инжектированный RSA-ключ, механизм цензуры — есть только в бинарнике, не в публичном коде. Проверено:

git clone --branch custom https://github.com/Telegru/tdesktop.git
grep -rIli "dc-proxy\|130.49.152\|2c945714\|api.hub.telega" Telegram/SourceFiles/
# 0 совпадений

Те же маркеры в скачанном Linux-бинарнике Telega:

strings Telega | grep -c "dc-proxy\|130.49.152\|2c945714\|api.hub.telega"
# 4+ совпадения

Бинарник собирается из приватного кода, которого нет в публичном репозитории.

Что делать, если Telega установлена

  1. Удалите Telega с устройства.

  2. Откройте Telegram -> Настройки -> Устройства -> Активные сеансы.

  3. Найдите сессии с «Версия системы: iOS SDK 34» или «IP-адрес: Нет данных». Завершите их.

  4. Отпишитесь от @telegaru / @dahlmessenger.

  5. Если вели переписку через Telega — считайте её содержимое известным оператору. Если среди собеседников были источники журналистов, клиенты адвокатов, пациенты — предупредите их.

Оператор

АО «Телега», ИНН 1655506819, Казань. Собственная автономная система AS203502 в RIPE. Маркетинговый бренд «АО Даль». Инфраструктура размещена в Yandex Cloud, VK Cloud Solutions, DDoS-Guard — всё на территории РФ.

Методология

  • Статический анализ: декомпиляция jadx 1.5.5, сравнение RSA-ключей с эталоном DrKLO/Telegram, WHOIS через RIPE и Censys.

  • Динамический анализ: Android 14 эмулятор (Pixel 7 AVD), mitmproxy + Frida SSL unpin + pairip bypass, fake GPS Helsinki.

  • Верификация кода: git clone + grep по всем публичным репозиториям Telegru, сравнение с strings бинарника.

SHA-256 всех артефактов указаны в тексте для независимой верификации.