Снова привет!
Недавно у меня в инфополе появился молодежный клиент для Telegram с молодежным названием «Телега». Разработчики обещают многое: и блокировки он обходит, и работает стабильнее, и вообще - зачем вам муж, если есть телега!
Вижу я о нем слишком много полярных мнений

Сначала я относился к этому скептически - мало ли альтернативных клиентов? Но потом сработал профессиональный триггер. Я же реверс-инженер (и вообще Java учу!), почему бы не попрактиковаться? Тем более, гордо заявлено: Open Source.
Акт 1. В поисках... исходного кода
Раз заявлен Open Source, значит, идем на сайт искать репозиторий.
Захожу... хм, пусто. Ни ссылок на GitHub, ни GitLab, ни даже архива с кодом.
Ладно, думаю, спрошу в чате канала. Пишу вежливое: "А где исходники? Можно ссылочку?".
Спустя мгновение сообщение исчезает. Удалили.

Окей, может, там злой бот-автомодератор триггерится на ссылки? Иду в официальную поддержку.
Молчат, Возможно. ночь по МСК, люди спят, а сообщение наврное бот удалил, по ошибке. Решил не ждать и скачать сам APK. Вдруг ссылка зашита внутри, в разделе "О приложении"?
Там... там приложение, на гугл диске , профессионально
Запускаю, захожу в настройки. Вижу надпись: «Работает под открытой лицензией».

Стоп «Открытая лицензия» это как? Тут у меня случился флешбэк - Помните мой пост про NiceOS? Там ребята взяли ядро Linux (GPL) и запретили его декомпилировать, вот бы тут был не NiceOS 2.0.
Акт 2. Лицензионные мемы
Полез читать EULA (Пользовательское соглашение), И там такой шедевр:
Перевод: они взяли официальный клиент Telegram (GPL v2), поменяли пару сотен строчек, и говорят что весь код теперь принадлежит им, по крайней мере звучит это так.
Чувак говорит что мессенджер разработан на базе открытого кода, и дает ссылку... на лицензию TDLib (Boost Software License 1.0)
Серьезно? Вы форкнули Telegram for Android (который под GPL v2), но ссылаетесь на лицензию библиотеки TDLib? Это... это просто некомпетентность.
Читаем дальше их соглашение:
Это прямое нарушение GPL v2.
Главная суть GPL: вы обязаны предоставлять исходный код и вы не можете запрещать пользователям копировать или распространять свободное ПО.
Ну и вишенка на торте:
Сегодня они подпишут вас на свой канал, завтра - на zarazaex.xyz, а послезавтра - на казино, И ответственность их (пункт 7.8) ограничена 500 рублями.
Акт 3. РЕВЕРСИХА
Ладно, Давайте посмотрим, что там внутри, Код-то может быть хорошим?
Звонки для бабушек
Смотрю трафик.
Звонки идут через Одноклассники? Серьезно? Через сервера социальной сети для тех, кому за 40? Интересное решение для молодежного клиента.
PFS (Perfect Forward Secrecy)
Если кто не знает, PFS - это технология, благодаря которой компрометация одного главного ключа не позволяет расшифровать весь записанный ранее трафик.
В Телеге PFS управляется с сервера. То есть он может и будет отключен по желанию владельца сервера, зачем? да кто знает.
Прокси и обход блокировок
Разработчики заявляют, что обходят блокировки. Как?
Обычный Telegram использует захардкоженные DC (дата-центры). Их блокируют по IP.
Телега делает хитрее:
-
Делает HTTP-запрос на
https://api.telega.info/v1/dc-proxy -
Получает JSON с адресами новых DC.
Вроде звучит логично?
Проблема №1: В коде нет проверки подписи ответа.
Проблема №2: Нет проверки сертификата (TrustManager заглушен).
Приложение слепо верит серверу api.telega.info, Любой MitM на пути - и злоумышленник подсовывает вам свои IP-адреса, перенаправляя весь трафик на свой поддельный сервер.
В нормальных условиях используется схема:Пользователь -> MTProto Proxy -> Telegram DC
Прокси не знает ключей шифрования и не видит содержимое. Здесь же архитектура позволяет направить вас куда угодно.
Акт 4. Финальный босс (Вы не поверите)
Я копался в ресурсах APK и нашел файл:resources/res/raw/rootca_ssl_rsa2022.cer
Открываю...
У меня глаз начал дергаться, Я знаю этот хеш, Я писал об этом статьи.
Это корневой сертификат Минцифры.

Что это значит?
В приложение вшит сертификат Russian Trusted Root CA.
В сочетании с отсутствием проверки сертификатов (см. выше) и отсутствием Certificate Pinning (который они вырезали из оригинального клиента Telegram), это позволяет реализовать полноценную MitM-атаку
Ваш трафик может быть расшифрован на лету владельцем приватного ключа этого сертификата.
Подробнее о том, чем это грозит, читайте в моей статье: Сертификаты Минцифры 2 - вы уже в опасности.
Акт 5. Слив данных
Напоследок я посмотрел, что именно приложение отправляет на сервера telega.info:
-
phone(Номер телефона) -
ip(IP-адрес) -
deviceModel -
systemVersion -
authKeyId(ID ключа авторизации Telegram! кстати это что? )
Итоги
-
Нарушение лицензии GPL v2 (закрытый исходный код, запрет на копирование).
-
Звонки через Одноклассники.
-
Принудительные подписки на каналы.
-
Дырявая схема проксирования (нет проверки SSL, нет подписи).
-
Сертификат Минцифры для потенциального перехвата трафика.
-
Слив данных (включая ключи) на сторонние сервера.
-
Отсутствие Certificate Pinning, который был в оригинале.
Пока, я спать
Автор: zarazaexe
