Комментарии 84
Такое ощущение, что большинство комментаторов за деревьями не видят леса.
Берём некоего "нарушителя", сажаем в ИВС, забираем ремень, шнурки и телефон. Клонируем телегу, возвращаем вещи и отпускаем.
"Нарушитель", не видя явных следов взлома и считая правоохранительной дебилами, юзает дальше свои СЧ, а мы их параллельно читаем, а при необходимости ещё и пишем. И телега не замечает что у приватного чата внезапно 3 участника, из которых 2 — одинаковые. Если это не уязвимость телеги, то что это?
Чувак, о чём всё это? Если у тебя есть полный контроль над андроидным телефоном (рутованный же) — то опаньки, все данные приложения доступны, и оно ничего не может с этим поделать (разве что заставить пользователя на каждый чих вводить достаточно сложный пароль и шифровать всё им — и то никаких гарантий, что его не перехватит кейлоггер).
Решается только аппаратно — выделить какой-то модуль, данные из которого недоступны без аутентификации (и который, к примеру, сам проверяет отпечаток пальца или сам препятствует попыткам подбора pin-кода). Это есть в современных iOS устройствах (Secure Enclsve) и в каких-то андроидных посерьёзнее (Trusted Execution Environment (TEE), Secure Element (SE)).
Хорошо бы знать, использует ли их Телеграм, если они доступны.
Чувак, о чём всё это?Сбрутил пин из четырех цифр, вытащив хэш с рутованного устройства.
Ну да. Я и охреневаю: он что — с самого начала не знал, что это можно сделать?
Хотя, кстати, я подумал — всё-таки можно сделать защиту. Если pin будет не к локальному ключу, а ко второму, хранящемуся на сервере. Который используется для шифрования локального ключа. Тогда можно ограничить скорость подбора. Но это отход от e2e, защита начинает зависеть от сервера. Плюс работа только в онлайне, плюс, как тут уже сказали "если устройство скомпрометировано"...
Ну да. Я и охреневаю: он что — с самого начала не знал, что это можно сделать?
Знать — одно, а сделать — совершенно другое. Я бы посоветовал автору писать нормальным языком и выражаться прямо. Очень уныло читать вначале, если честно (обида, ИМХО, вот это вот всё). А так — исследование имеет право на существование.
Я вообще предполагаю, что если я под виндой просто скопирую папку с телеграмом(и профайлом юзера) на другой комп и просто запущу — то все должно работать. Даже буду удивлен, если это не так.
На самом деле, самый важный момент в статье — что Телеграм не отобразил в списке сессий еще один левый сеанс. Это явная недоработка и уязвимость протокола.
Я вообще предполагаю, что если я под виндой просто скопирую папку с телеграмом(и профайлом юзера) на другой комп и просто запущу — то все должно работать. Даже буду удивлен, если это не так.Об это и речь, что на другом ПК для доступа к скопированной учетке Telegram нужно ввести local code, который криптостойкий и Вы не сбрутите его. Поэтому не войдете в Telegram с другого ПК.
Точно не помню, что и как под виндой, но вроде системное хранилище ключей привязано к компьютеру, и его копирование представляет определённую сложность (но ничего такого, с чем нельзя справиться). В MacOS — точно именно так и сделано. Так что если программа пользуется системным хранилищем ключей — такая атака несколько затрудняется.
В iOS (на относительно новых девайсах) вообще всё ещё лучше — есть отдельный аппаратный Secure Enclave, который вы так просто не скопируете.
В Android ситуацию толком не знаю (хотя при случае спрошу у коллег из андроидного отдела), гугл выдаёт умные слова Trusted Execution Environment (TEE), Secure Element (SE) — но, как я понимаю, они не на всех девайсах есть.
На самом деле, самый важный момент в статье — что Телеграм не отобразил в списке сессий еще один левый сеанс. Это явная недоработка и уязвимость протокола.Как вроде бы описано в статье, копирование всей папки телеграма привело к тому, что и файлы хранящие активные ключи сессии были скопированы. Зачастую, эти ключи самодостаточны и содержат информацию о клиенте, в том числе и мета-информацию о устройстве. Соответственно, сервер не нашёл отличий между подключениями, т.к., видимо, информация о сессии не хранится в объекте подключения, а в этих ключах. Хотя, судя по статье, сервер через какое-то время заметил несовпадения при копи-пасте, но не сделал этого при бэкапе. Здесь явно где-то баг.
Если скопировать хром с профилем или стим например, то они начнут сигналить, мол «произведен вход с другого устройства, а давайте-ка мы это подтвердим»
А телега просто молча работает, но называет себя очень секьюрной.
Меня честно говоря не интересует реклама безопасности и приватности, потому что абсолютной безопасности не существует. Больше интересен «вектор атаки»: злоумышленник может получить root к Android устройству и тем самым угнать сессию. Единственной защитой представляется: 1) whitelisting IP addresses 2) включение в протокол проверки, что IP адрес связан с сессионным ключом 3) запрос пароля — токена при любой смене IP
В Андроид версии, ЕСТЬ возможность установить произвольный пароль, для тех кому мало 4х значного PIN
Если телефон без рута и на нем последние обновления ПО, то как?
Как троян будет работать без рута?
Проэксплуатирует одну из уязвимостей для повышения привилегий благо очень малый процент устройств на Android имеет security патчи либо в принципе поддерживает обновления
Чуть выше я написал про последнюю версию ПО, и опять же — дырявость/медленное обновление Android — это проблема платформы а не телеги
Проэксплуатирует уязвимость которая не опубликована
Ну и кстати стоит разделять 4 я и указал: последние обновления ПО опять же это самая свежая версия ОС или последняя не свежая доступная для конкретного телефона, она же тоже последняя
Очевидно без привязки к устройству, какой смысл смотреть на дырки в win95 ?
Что значит какой смысл, у меня есть телефон с версий 4.х, и он уже годами не обновляется, патчи безопасности не выходят, таких пользователей миллионы, банки даже не блокируют доступ к своим ДБО и мобильным приложением зная что у них ~16-20% таких пользователей — принимают риск что у клиента сопрут деньги, не заставлять же его новый телефон покупать
Автору: а ещё приложения можно декомпилировать!
Меня смутил только один момент — что сидя с двух устройств, телеграмм показывал только одну сессию. То есть MTProto не отслеживает, что сессия идет с разных IP/разных устройств. IMHO это все-таки уязвимость протокола.
Гм, мне всегда казалось, что пароль при вхоже в приложения должен ещё сузить список доверяемых лиц (условно если разблокироваться телефон может еще кто то помимо вас а вот в телегу пускать вы его не готовы)
Но есть одно маленькое но, точнее даже два:
1) атакуемое устройство доложено быть разблокировано
2) должен быть root доступ
На примере iOS даже если устройство разблокировано, доступ к файлам приложения получить все равно нельзя, на Android насколько мне известно все так же.
Тогда я не понимаю в чем тут взлом, точнее говоря его нет от слова совсем и отсутствие реакции команды телеграмм вполне оправдано.
А статью можно сократить до 3 пунктов:
Взламываем любое приложение!
- Делаем полный бэкап телефона
- Восстанавливаем его на точно таком же телефоне
- Мы взломали %appname% !
Но есть одно маленькое но, точнее даже два:
1) атакуемое устройство доложено быть разблокировано
2) должен быть root доступ
если Вы об Android устройстве, то по умолчанию они не все шифруют свои данные, это уже уязвимо.
Такие устройства (изьятые правоохранительными органами) делают бэкап (монтируют раздел, скачивают файлы) до загрузки OS, цифровая форензика (в статье я упомянул об этом).
Windows например тоже не каждый 2й пользователь шифрует Veracrypt к примеру, а обойти пароль на вход windows и скачать Telegram (потом его распарсить JTR, если там код 4цифры) любая live-usb подойдет.
Делаем полный бэкап телефона
Восстанавливаем его на точно таком же телефоне
Мы взломали %appname% !
Толсто конечно, но отвечу. Сделайте бэкап KeePassDroid, разверните на любом гаджете и получите запрос на ввод пароля, который Вы в ближайшие несколько лет не узнаете (если сегодня приступите ко взлому).
Тогда я не понимаю в чем тут взлом
Потому что статью не читали.
Т.е дырка скорее в системе которая не шифрует данные получается, а не в прикладном ПО
если Вы об Android устройстве, то по умолчанию они не все шифруют свои данные
Если мне не изменяет память, force encryption (включение шифрования при установке пароля на блокировку экрана) — обязательное требование для сертификации современных Android-устройств.
Если же пользователь имел несчастье приобрести телефон у китайских «брендов», которые официально за пределы Китая не продают и поэтому сертификацию не проходят… что ж, отсутствие шифрования по умолчанию это наименьшая из проблем такого пользователя на фоне неотключаемых без рута вирусов, встроенных заботливыми китайцами в системный софт.
К примеру под windows вы же не от учетки «гость» работаете, а root, в linux постоянные вызовы от root требуются. Так и на Android-e без root, ограничено все, но немного безопасней и неудобней.
А статью можно сократить до 3 пунктов:
Делаем полный бэкап телефона
Восстанавливаем его на точно таком же телефоне
Мы взломали %appname%!
Как-то слишком сложно. Почему бы просто не посмотреть содержимое чатов, заглянув через плечо владельца телефона? Шах и мат, горе-криптографы!
запись скринов из конкретного приложенияНа Android >5 Telegram предупреждает хозяина о записи экрана (на видио есть моиент)
не имеет реального примененияИзьяв гаджет правоохранители получат доступ ко всей переписке в том числе и СЧ, но то, что зашифровано по настоящему (например своим ключом gpg письма из почты) не расшифруют.
И всё ради чего? 5 минут чтения переписки, после чего файлы становятся бесполезными?за 5 минут можно сдампить всю переписку Androida, получить бан от Telegram, и дальше работать с кэшем, т.е. вся переписка остается на телефоне злоумышленника (разве кому-то понравится, что его переписку читают?).
Почему-то ни кто не поинтересовался кроме переписки что происходит в таком случае (скомпрометированном СЧ Android) со звонками, или с файлами…
Считаю, что статья имеет право на существование, т.к. показывает, что действительно е2е в телеграмме нет. Иначе невозможно было открыть секретный чат после клонирования пакета файлов на другое устройство. В этом кейсе мы видим лишь то, что пвторы и владельцы телеграм немного лукавят относительно защищенности продукта.
Я очень удивлен, что секретная сессия не привязана к какому-либо уникальному идентификатору устройства (хотя бы imei). Понятно, что и это можно отломать ) но поверхность атаки резко уменьшается, а ее сложность — возрастает.
С другой стороны, если кем-то заинтересовались органы, то есть у них есть способы получить желаемое и не через телеграм. И в этом случае пора заматываться в простынку и ползти в сторону кладбища, а не рассуждать о безопасности ТГ
А кто вам даст доступ к IMEI? Идеология сейчас такая, что приложения не должно иметь возможности однозначно идентифицировать пользователя
Насчет IMEI — наверняка есть способ получить уникальный идентификатор устройства (любой). К сожалению, я давно не следил за этой темой, поэтому либо придется сидеть и изучать вопрос, либо положиться на Ваше мнение.
Интересно, что у Apple подход совершенно другой и кроме временного ID устройства который модно менять хоть каждый день более ничего не передаётся.
Восстановление покупок кстати там завязано на внутренние API платформы и приложению не возвращается статус что за пользователь, а только есть ли данный контент или нет
действительно е2е в телеграмме нет. Иначе невозможно было открыть секретный чат после клонирования пакета файлов на другое устройство
Автор переносит приложение с одного смартфона на другой, делая "слепок" всего состояния, включая ключи. e2e как было, так и есть.
2) Секретные чаты должны быть привязаны к уникальному идентификатору оборудования
3) Смешно, но получается, что приложение сбербанка для android защищено лучше telegram.
Корпорации: Хипстеры
1:0
Молнеиносно среагировали разработчики Сбербанк, обновив свое приложение всего через пару недель после релиза iOS10. А вот канадские «хипстеры» из Agilebits закрыли «дыру» только через полтора года после выхода iOS10 и через год после того как им первый раз написал я. Самое интересное, что в ответных письмах канадцы писали, что знают о новой функции, но не хотят её добавлять из-за большого числа пользователей, которые один раз придумали пароль, включили разблокирование по отпечатку и навсегда забыли пароль. Якобы такие пользователи потеряют доступ к сейфу в будущем.
Пришлось пользоваться 1password с оглядкой на «дыру», я даже pin на телефоне сделал 6-значным.
1 — к сожалению, на нерутованном устройстве порой нельзя обеспечить ни удобство, ни безопасность.
Помнится, когда у меня был смартфон на android 4.4 — я охренел от наглости сберовского приложения, возжелавшего читать мои sms (в 4.4 ещё нельзя было просто отказать приложению в этом — если у тебя нет root).
Все вышесказанное касается Android
«Юзать пароль» можно, но шифрование осталось прежним (не криптостойкое) и например буквенно-цифровой пароль из 8 символов восстанавливается до ~14ч. (cpu+gpu, я проверил).
Поэтому рекомендация для разработчиков Telegram остается прежняя (написал в выводе статьи).
1. То что по дефолту вам предлагает любой софт зачастую не безопасно в пользу «удобства», нужно думать самому вам нужна безопасность или простота.
2. Перебор 8 символов по словарю или только цыфренно-буквенный, или вообще возможные комбинации ASCII символов? Это ведь кардинально меняет время под брутфорс.
3. Двухфакторка это маст хев любого кто дорожит безопасностью, и она же = спасение в данной ситуации. Жаль только что нету поддержки TOTP со стороны Телеграма. Перехват сим-карт становится все популярней.
4. То что я писал выше: файл не доступен на залоченом даже зарутованом устройстве. Если вы отдаете разлоченый телефон без шифрования /data или с рутом (опять таки разлоченый) или с разлоченым загрущиком другому человеку то кто вам доктор? Вы делаете всю ОС уязвимой, и поверьте не только Телеграм, тут Вы виновны делаете уязвимость, а не они. Я уверен что та же розблокировка по отпечатку пальца на розлоченом рутовом телефоне может скомпрометировать телеграм и другие приложения. С таким же успехом можно пытать человека паяльником и он сам все роскажет. P.S. У меня пароли где это возможно 32 символа вплоть до ASCII вида: «2ÿA¡?ýò.²Pu4Á%5Ô^ä:&r&µý±dxeQ*¼b» потому что я их пофиг не ввожу руками, брутфорсьте на здоровье.
4.Можно и паяльником пытать, но на сколько я знаю по закону в РФ пытки запрещенны, а изьятие, (правоохранителями) гаджетов разрешено.
То, что Вы пользуетесь паролями 32 символами, не делает Вас среднестатистическим юзером Телеги.
Приложили скрин, получили ответ. Спасибо.
4. Ну вы и наивный. Ну да ладно припустим что мир идеальный и у нас никого не избиваю/пытают, опять так предположим что они чесно изымают телефон и что они получат от среднестатистического пользователя:
- Рута нет, бутлоадер
девственнозалочен - Телефон залочен под пароль и отпечаток пальца
- Припустим они
как последние негодяиразблокировали вашим пальцем телефон без вашего на то разрешения (всеравно нарушили закон) - /data/data без root не достать, что бы поставить root нужно либо А: найти експлойт для вашей ОС, что на Android 7+ сложновато либо ставить кастомный рекавери для которой нужно розлочить загрущик что произведет к Wipe всей Userdata
- И вишенька на торте: автор не просто показывает что с помощью этой уязвимости можно прочитать чужие СЧ, он еще й говорит о том что это можно делать «незаметно», как вы все это незаметно провернете с чужим телефоном
украв его минимум на пол часа?
5. То что я юзаю 32 значные пароли и вправду не делает меня среднестатистическим юзером телеграма, но и наличие root прав на телефонах и полностью скомпрометированых заводских мер безопасности ОС Android тоже не подпадает под характеристику среднестатистического юзера телеги.
Если телеграм при клонировании сессии убивает её в течении 5 минут, то урон безопасности минимальный. Вопрос только, при всех ли сценариях это так (в статье этот вопрос не раскрыт подробно). С учетом того, что часть клонирования, требующая доступ к устройству может занять только несколько минут, то сценарии использования появляются.
Может быть кто нибудь объяснит мне в чем прикол секретных чатов телеграмм? Если вы обменивается по протоколу типа https то вас читать никто кроме самого телеграмма не сможет. Если же вы используете какой то дополнительный уровень касторового шифрования то это ещё ничего не гарантирует. Могут использоваться некриптостойкие генераторы ключей, методы шифрования с бэкдорами и тому подобное. Я бы сказал что единственное что вы делаете создавая секретный чат это помечается ваш диалог как потенциально интересный для его прочтения
Единственная полезная часть — elegram2john.py
Такое ощущение, что большинство комментаторов за деревьями не видят леса.
Берём некоего "нарушителя", сажаем в ИВС, забираем ремень, шнурки и телефон. Клонируем телегу, возвращаем вещи и отпускаем.
"Нарушитель", не видя явных следов взлома и считая правоохранительной дебилами, юзает дальше свои СЧ, а мы их параллельно читаем, а при необходимости ещё и пишем. И телега не замечает что у приватного чата внезапно 3 участника, из которых 2 — одинаковые. Если это не уязвимость телеги, то что это?
10. Как выяснилось при угоне СЧ (вход в чужую учетку с другого ip) временный бан реального/скомпрометированного аккаунта ~ через 5 минут и отмена СЧ в Telegram. В одной же сети реальной/скомпрометированной учетки, Telegram забывает банить за угон аккаунта.
Вот здесь поподробнее бы — что Telegram считает подсетью? Ведь это могут быть самые разные размеры, от /24 у небольшой организации, до очень широких пулов у мобильных операторов — и, понятно, в последнем случае при смене IP-адреса у легитимного пользователя всё должно работать без всяких запросов на вход.
Вот здесь поподробнее бы
Если атакующий входит в чужую учетку с другого IP, то Telegram выписывает бан примерно через 5 минут.
Если атакующий входит в чужую учетку с того же IP, что и реальный хозяин (атакующий и хозяин в одной wifi-сети за одним роутером), то Telegram не выдает бан, на видео это показано, что Telegram не выдает достаточно долго бан (ключик, показанный на видео означает не VPN, а был включен файрвол). В одной сети злоумышленник не получил бана даже спустя 1,5ч. активного нахождения всех задействованных лиц в чате. Но один момент, при этом СЧ все же развалились (сервер дал команду на отмену СЧ у всех лиц): один СЧ отвалился примерно в диапазоне 30 минут, другой СЧ в районе часа.
Так же на видео видно, что при общении в СЧ 3-х лиц, связь чаще полудуплексная (Алиса пишет Бобу «Привет Боб», Боб получает сообщение «Привет Боб», Ева чаще ничего не получает. Боб отвечает Алисе «Приветствую Алиса», Алиса получает ответ «Приветствую Алиса», Ева получает ответ «Приветствую Алиса»). Если общение происходит в обычных чатах, то связь полностью дуплексная (Алиса пишет «привет Боб», Боб получает входящее сообщение «привет Боб», Ева получает исходящее сообщение «привет Боб»). Задержек по времени при это практически нет в отличие о СЧ.
Уязвимость в Telegram позволяет скомпрометировать секретные чаты