Анализ безопасности Telegram. Ч.1.

by @redterror
Анализ безопасности Telegram. Ч.1.

Шалом, бродяги-работяги! В этой статье мы рассмотрим Telegram в целом и поговорим об используемом протоколе и некоторых уязвимостях.

Аннотация

Telegram представляет собой платформу для обмена мгновенными текстовыми сообщениями на базе протокола безопасности MTProto. Компания была основана в 2013 году, а сам мессенджер на данный момент имеет более 200 миллионов активных пользователей. Одна из главных целей Telegram – защита пользователей от слежки. Утверждается, что у этого мессенджера наилучшая защита на рынке и железобетонные гарантии безопасности среди приложений подобного рода. В этой статье мы рассмотрим Telegram в целом и воспользуемся утечкой, связанной с доступностью пользователей, с целью обнаружение временных интервалов, когда два абонента разговаривают друг с другом.

Введение

За последнее десятилетие, по мере того как все больше и больше людей получают доступ к интернету, возрастает популярность приложений для обмена мгновенными сообщениями. По состоянию на май 2017 года 2 из 5 наиболее загружаемых Android-приложений используются для обмена мгновенными сообщениями [1]. За последние годы пользователи коммуникационных протоколов, в том числе связанные со службами обмена мгновенными сообщениями, становятся все более озабоченными относительно своей безопасности. С целью удовлетворения этих потребностей многие платформы стали предоставлять сквозное (оконечное) шифрование [2, 3]. Например, в WhatsApp сквозное шифрование появилось 3 года назад, и на данный момент эта функция используется во всех коммуникациях. Этот мессенджер имеет наибольшее количество пользователей, пользующихся сквозным шифрованием.

Telegram – еще одна служба, связанная с обменом мгновенными сообщениями, которая была основана в 2013 году. Несмотря на свою молодость, на данным момент ежемесячно Telegram используют более 100 миллионов пользователей, особенно в Западной Европе. Создатели Telegram утверждают, что у этого мессенджера наилучшая защита среди аналогичных продуктов на рынке, однако в целом доверие пользователей основывается лишь на истории появления этого приложения и таланте разработчиков. Мы поставили задачу проанализировать безопасность Telegram [4], поскольку этот мессенджер находится под непрерывной критикой многих специалистов по криптографии из-за неоднозначных решений, используемых разработчиками.

В этом разделе мы поговорим об истории Telegram и пользовательском интерфейсе. В разделе 2 будет описана архитектура Telegram. В разделе 3 описываются предыдущие проблемы, найденные в Telegram. В разделах 4 и 5 рассматриваются раскрытые уязвимости, связанные с безопасностью в Telegram. В разделе 6 мы рассмотрим текущие проблемы в Telegram и сделаем выводы.

История появления Telegram

Среди других технологических стартапов Telegram занимает особое место, вследствие чего получил повышенное внимание и доверие со стороны пользователей, и мы считаем, что полезно будет затронуть историю появления этого мессенджера.

Telegram был основан в 2013 году братьями Николаем и Павлом Дуровыми, которые были основателями популярной российской социальной сети Vkontakte. После давления со стороны российских властей на предмет получения специфических возможностей (или специальных лазеек для государственных органов) Дуров покинул компанию и заявил, что VK находится под контролем политической партии, находящейся у власти [5]. Затем Дуров покинул Россию и основал Telegram с целью предоставления средства обмена мгновенными сообщениями для простых пользователей, которое было бы защищено от слежки представителями государственных структур.

Благодаря популярности Павла Дурова в России, Telegram быстро завоевал популярность среди русскоязычной аудитории. Кроме того, по факту Telegram предоставляет наиболее удобное средство по сравнению с аналогичными продуктами за счет своей скорости и функциональности.

Протокол, используемый для обмена сообщениями, был разработан братом Павла Николаем, который является математиком, но малоизвестным специалистом по безопасности.

Telegram – уникальное явление среди технологических стартапов, в том числе благодаря тому, что Павел Дуров является единственным спонсором этого проекта. Кроме того, в Telegram отсутствует реклама, а сам клиент – не только бесплатный, но и с открытым исходным кодом.

Функциональность Telegram

Telegram позволяет обмениваться текстовыми и голосовыми сообщениями, а также общаться в группах. Кроме того, у этого мессенджера есть каналы, на которые пользователи могут подписываться и получать сообщения от создателя канала (обычно новостного веб-сайта или знаменитости).

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

Пользователи Telegram могут создавать учетные записи и выполнять авторизацию при помощи аутентификационного кода, получаемого в виде текстового сообщения. После первоначальной авторизации пользователи могут выполнять настройки и искать друг друга. У Telegram также есть функция двухфакторной верификации, если есть желание вводить пароль во время каждого входа в учетную запись.

Клиенты Telegram

У Telegram есть клиенты под все популярные платформы, включая веб-приложения. На Рисунке 1 показана Desktop- и Android-версия. Официальные клиенты идут с открытым исходным кодом, хотя есть и бинарные блобы (то есть исполняемые бинарные файлы без доступных исходных текстов).


Рисунок 1: Официальные клиенты Telegram. Слева: мобильная версия, справа: desktop-клиент. Все официальные клиенты имеют открытый исходный код. Пользовательский интерфейс Telegram довольно быстрый и удобный.

У Telegram также есть возможность работать с командной строкой [6], обладающей практически полным функционалом платформы, хотя и не очень удобной для использования. Например, для добавления контакта нужно ввести следующую команду:

tg> add contact <phone number> <name> <lastname>

Во время исследования безопасности Telegram мы часто пользовались командной строкой.

2. Архитектура Telegram

Как и многие аналогичные приложения Telegram следует традиционному подходу и использует облако для хранения данных. То есть, если злоумышленник сможет получить контроль над сервером, то получит (как минимум) доступ к незашифрованным сообщениям и ко всем метаданным. Обмен сообщениями между пользователями и сервером происходит на базе собственно разработанного протокола MTProto.

Пользователи обмениваются информацией по методу Диффи-Хеллмана для создания общего ключа, который затем используется при передаче сообщений. Коммуникация с сервером осуществляется при помощи публичного RSA-ключа, который прописан внутри клиента Telegram и меняется достаточно редко.

Telegram используется протокол собственной разработки MTProto, который не использует множество традиционных подходов при обмене сообщениями. Создатели Telegram утверждают, что подобный подход используется с целью улучшения производительности, однако у многих экспертов по безопасности на этот счет есть большие сомнения.

3. Известные и исправленные проблемы

Как все компании с технологическим уклоном, у Telegram были, есть и будут уязвимости, связанные с безопасностью, и нестандартные проблемы, которые имеют косвенное отношение к безопасности. Мы расскажем о некоторых из этих проблем, а в последствии рассмотри более подробно один из таких случаев.

3.1 Проблемы нетехнического характера

На концептуальном уровне у Telegram есть несколько нестандартных решений, которые, как мы полагаем, не должны быть частью протокола безопасности. А конкретно:

  • Функция сквозного шифрования не используется по умолчанию [7]. По этой причине большинство технически неискушенных пользователей используют Telegram без функции секретного чата и считают, что сообщения шифруются. Без секретных чатов, по сути, пользователи должны доверять серверам Telegram.
  • Telegram использует криптографический протокол MTProto собственной разработки, что уже неоднократно подвергалось критике. Общая доктрина безопасности говорит о том, что разработчикам не следует изобретать велосипед в криптографической части, а доверить проектирование криптографического протокола экспертам. Те, кто исследовал этот протокол, также имеют скептическое мнение. Специалист по криптографии Мэтт Грин высказал следующее: «Telegram имеет 10 миллионов деталей, которые поддерживают единичный неавторизованный обмен ключами по методу Диффи-Хеллмана». [8]
  • Telegram изначально запрашивает список контактов с телефона/компьютера и хранит полученную информацию на сервере. То есть на серверах хранится огромна база контактов, которая может стать целью для атаки или быть попросту продана властям без ведома пользователя. Это еще один пример, когда пользователи должны доверять безопасности серверов Telegram.

А пока что, на сегодня всё. Этой инфы вам, друзья хватит вполне на обдумывание и осмысление. А в следующей части мы продолжим:


  • Проблемы, связанные с технической безопасностью;
  • Эксплоит для обнаружения доступности пользователей;
  • Постановка эксперимента;
  • Алгоритм корреляции;
  • Результаты использования эксплоита;
  • Заключение.

В общем, оставайтесь с нами. А я сделаю всё возможное, чтобы потраченное вами время окупилось сторицей!

July 19, 2018
by @redterror