Как стать автором
Обновить

Уязвимость в Telegram позволяет обойти пароль local code любой длины

Информационная безопасность *Мессенджеры *Аналитика мобильных приложений *

Из прошлого


В предыдущей своей работе я продемонстрировал уязвимость секретных чатов Telegram, и выложил видео-мануал по восстановлению local code Telegram на GNU/Linux/Windows/Android (взлом СЧ Telegram).

Недавно обнаружил «продолжение уязвимости»: Android-Telegram [обход local code пароля любой длины] (добавлена атака «отпечатком пальца»).

Некоторые комменты, которые я собираюсь опровергнуть, благодаря случайному эксперименту со своим подопытным Android-девайсом.
«На Хабре вышла статья под названием «Уязвимость в Telegram позволяет скомпрометировать секретные чаты». Громкий заголовок, да. Мы ознакомились с материалом и рекомендуем читателям поступить точно так же, хотя бы ради интереса.»
«в Android-версии Telegram уже несколько лет как можно вместо пин-кода задавать сложный буквенно-циферный пароль»
Источник
«В Андроид версии, ЕСТЬ возможность установить произвольный пароль, для тех кому мало 4х значного PIN»
Источник
«Можно юзать не пин, а пароль. Да и если у тебя root или разлоченый бутлоадер или не шифрованный телефон то о какой бесопасности личных данных вообще можно говорить?!»
Источник
«Во-вторых, жертва не должна включать на своем устройстве шифрование данных»
Источник.

Отступление – были всякие (не только критика, что-то по жестче) «забавные» комментарии на счет атаки на Local Code, например, такой коммент:
«Техпод телеграмма, толпа тупых уе… ов, которые не хотят или не могут сказать Дурову, что оказывается взломать секретные чаты можно и для этого не надо ломать его хваленный протокол»
Источник

Переписывать прошлую статью не собираюсь, всё подробно расписано по крекингу local code в предыдущей работе, напомню ключевые моменты:
Telegram local code (pin) взламывается мгновенно с помощью JTR. Условия: нужен root; как выяснилось «сегодня» шифрование Android не всегда спасает; не спасет и вместо «pin» «password» local code Telegram.

Чтобы завладеть секретными чатами Telegram, достаточно было скопировать «несколько файлов» с root-девайса на другой, взломать некриптостойкий local code с помощью JTR. Скорость брутфорс атаки впечатляла, но всё же не такая быстрая, чтобы взломать «когда-нибудь» «password local code» > 30 знаков. Нашел способ атаковать «password local code Android-Telegram» любой длины и сложности.

Алгоритм атаки следующий


Имеем root; зашифрованный гаджет; пароль > 30 знаков на стороне жертвы; устройство отпечатка пальца не существует «то есть неважно».

  • Украсть «внешние данные Telegram» (см.пред.статью).
  • Настроить разблокировку своего Android-девайса отпечатком пальца на стороне исследователя (позиция атакующего).
  • Установить с GP Telegram и объединить с «внешними данными».
  • При открытии Telegram на устройстве исследователя и при запросе ввода 31-значного пароля (для разблокировки local code) – приложить свой палец. Telegram разблокируется, исследователю станут доступны все секретные чаты/переписка и облако.

Интересно, что такой атаке подвержен только Telegram (из 4-х протестируемых приложений). Попробовал провести подобные атаки на keepass2android offline; Сбербанк-онлайн; Яндекс деньги – эти Android приложения требовали пароль и на отпечаток никак не реагировали.


Сюжет на видео:

  • Создан секретный чат между Android на Virtualbox, где нет устройства «отпечатка пальца» и Android 6. Между «террористами» идёт общение.
  • На Android Virtualbox задаю local code 31-значный пароль — блокировка приложения Telegram.
  • Делаю Бэкап учетки Telegram- Virtualbox (не обязательно копировать все данные см.пред. статью).
  • Копирую данные на ЯД.
  • Забираю c ЯД Бэкап на Android 6.
  • Устанавливаю Telegram на Android 6 из GP.
  • Подсовываю часть «внешних данных» из Бэкапа Android 6 на установленный Android 6.
  • Запускаю Telegram на Android 6, получаю запрос на ввод пароля/отпечаток. Прикладываю отпечаток пальца, и Telegram разблокировался, доступна вся переписка СЧ и облако.
  • Перезапускаю Telegram, ввожу 31-значный local code, и Telegram также разблокирован.


Дубль


Удалил отпечаток на смартфоне, сбросил pin-cod смартфона. Установил новый pin на девайсе, создал новый отпечаток пальца. Провёл повторно эксперимент (вычистил полностью Telegram с устройств/инсталлировал) и новый отпечаток снова разблокировал чужую учетку Telegram.

Хет-трик


Для еще более высокой частоты эксперимента заменил устройство/условия. Со стороны жертвы заменил железо: VirtualBox на планшет Android 4.4.2 (устройство отпечатка пальца не существует); заменил учётку Telegram на другую.
Атакующий — уничтожил и полностью вычистил Telegram с устройства. Сбросил/изменил pin на устройстве Android 6, удалил отпечаток пальца и создал новый отпечаток другой подушечки фаланги пальца.
Установил 14-значный пароль local code на Android-e жертвы. Сделал бэкап только внешних данных.
На Android 6 установил Telegram из GP (позиция исследователя) и подсунул внешние данные от Android-a 4.4.2 (полный бэкап/развертывание невозможно, тк. приложение Telegram с планшета не установится на смартфон, поэтому установка приложения на Android 6 с GP, а не с бэкапа).
Запустил Telegram на Android 6, вход в чужую учётку невозможен: появился запрос local code (Который до сих пор взламывается с высокой скоростью в JTR). Приложил свой палец, и чужая учётка вновь открылась на стороне исследователя со всеми СЧ/перепиской.

Подводя итог по этой части статьи.

Telegram подвержен к атаке хищения ключей, но самое странное в мессенджере – «интегрированный отпечаток пальца в приложение». Яндекс деньги; Сбербанк-онлайн; keepass2android offline – не подвержен к подобной (продемонстрированной в этой статье) атаке. У всех перечисленных выше приложений имеется функция разблокировка приложения по отпечатку, но в Telegram она принудительно интегрирована (функция «разблокировка отпечатком пальца» не отключается/не настраивается на гаджете, на котором отсутствует устройство отпечатка пальца) и срабатывает, когда ее используют в коварных целях. В других приложениях функция «отпечаток пальца» не срабатывает – защита от мошенничества.

Мессенджер Telegram – массовый мессенджер, защиту нужно разрабатывать и для домохозяек и для всех. Лицо компании не прав, когда заявляет, что все беды от того, что скомпрометировано все на свете, кроме мессенджера Telegram. Как пример, эта унизительная уязвимость, которая демонстрирует «никакую» конфиденциальность пользователей рутованых Android девайсов.
Если Вы потеряете Ваш рутованный (в некоторых случаях — шифрованный) девайс, за финансы или keepass2android offline переживать не стоит (пароли не вскроют). Тот кто найдет гаджет — получит «лишь» доступ ко всем СЧ Telegram. Зачистка данных Telegram с нового устройства не поможет, если злоумышленник вскроет ее в оффлайн режиме (кэш останется на месте, а local code не защитит).
Понимает ли эту проблему PR-кампания Telegram-Dubai? Если да, то СЧ/TON не должны работать на рутованных устройствах! И официальный FAQ не спасёт репутацию компании, если начнется массовая компрометация устройств.
Telegram-Android v5.4 от 27.02.2019г.

ps/ не имеет отношения к Telegram


Так же мне удалось обойти шифрование на Android девайсе Leagoo и достать все данные, в том числе и данные Telegram для доступа к СЧ (атакой JTR, либо атакой отпечатком пальца).

На xda имеется стоковая прошивка данного гаджета и десятки кастомных (свободных) прошивок. Установил TWRP. Отформатировал устройство Android Leagoo, накатил прошивку Resurrection Remix 6 (одна из лучших на мой взгляд). Зашел в настройки – безопасность – зашифровать данные. Зашифровал. До загрузки гаджета стал требоваться пароль (в TWRP без пароля не монтировался главный раздел). Прошил secro.img от стоковой прошивки и пароль (все шифрование) благополучно исчез. В TWRP появилась возможность монтировать раздел без ввода пароля, /data/data/… стал доступен.
Шифрование же флешь накопителя (флешка microSD для гаджета) за счет криптографии самой ОС происходит честно.

Возможно данной проблеме (проблеме шифрования устройства) подвержены и другие гаджеты, но у меня их не так много, чтобы полноценно поэкспериментировать с разными моделями девайсов.
Теги:
Хабы:
Всего голосов 73: ↑47 и ↓26 +21
Просмотры 40K
Комментарии Комментарии 69