Уязвимость в 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» любой длины и сложности.
Алгоритм атаки следующий
(имеем 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/… стал доступен.
Возможно данной проблеме (проблеме шифрования устройства) подвержены и другие гаджеты, но у меня их не так много, чтобы полноценно поэкспериментировать с разными моделями девайсов.