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

habr.png

Из прошлого


В предыдущей своей работе Я продемонстрировал уязвимость секретных чатов 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» любой длины и сложности.

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


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

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


Интересно, что такой атаке подвержен только Telegram (из 4-х протестируемых приложений). Попробовал провести подобные атаки на keepassdrod; Сбербанк-онлайн; Яндекс деньги — эти 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 также разблокирован.


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

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

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

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


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

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

Возможно данной проблеме (проблеме шифрования устройства) подвержены и другие гаджеты, но у меня их не так много, чтобы полноценно поэкспериментировать с разными моделями девайсов.

© Habrahabr.ru