Не­дав­но мне на гла­за попал­ся пост при­мер­но такого содер­жания: «В Telegram выяв­лена новая уяз­вимость, свя­зан­ная с заг­рузкой виде­оро­ликов». К пос­ту при­лага­лась демонс­тра­ция: поль­зователь получа­ет видео, при тапе по которо­му Telegram пыта­ется уста­новить сто­рон­нее при­ложе­ние. При этом проб­лема не прив­лекла осо­бен­ного вни­мания. Я решил разоб­рать­ся, работа­ет ли спо­соб, и написать к нему экс­пло­ит.
 

Демонстрация уязвимости

Для начала деталь­но раз­берем, что про­исхо­дит на видео, которое демонс­три­рует работу бага.

Вна­чале мы видим коман­дную стро­ку, где ата­кующий вво­дит парамет­ры бота и отправ­ки: токен бота, ID чата, путь до фай­ла APK для заг­рузки и путь к кар­тинке (preview). Так­же пред­лага­ется ввес­ти сооб­щение и скрыть его как спой­лер. Все клю­чи и ID на видео замаза­ны.

Пос­ле вво­да парамет­ров ата­кующий видит под­твержде­ние удач­ной отправ­ки. Ата­куемый же получа­ет сооб­щение, которое выг­лядит как обыч­ный виде­офайл.

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

Да­лее поль­зователь видит стан­дар­тные зап­росы, которые при­ложе­ния дела­ют при уста­нов­ке: пре­дос­тавить пра­ва на дос­туп к кон­тактам, мик­рофону и так далее. Сами зап­росы зависят от модели телефо­на, вер­сии Android и того, что захочет заполу­чить раз­работ­чик.

Ну а в кон­це в видео показан «отстук» в панель управле­ния тро­яном и воз­можность дос­тупа к при­ват­ным дан­ным и уда­лен­ного управле­ния смар­тфо­ном. Так­же по видео мы можем кос­венно под­твер­дить, что автор из Тур­ции, так как в панели фигури­рует эта стра­на, а IP рядом ука­зан локаль­ный.

 

One-tap exploit

Итак, перед нами one-tap exploit (или one-click exploit) — экс­пло­ит одним кли­ком или тапом. Это тип уяз­вимос­ти, который поз­воля­ет зло­умыш­ленни­ку получить кон­троль над устрой­ством или акка­унтом жер­твы, если та сде­лает все­го одно нажатие. Эти экс­пло­иты менее опас­ны, чем, ска­жем, RCE, пос­коль­ку тре­буют хоть и минималь­ного, но все же дей­ствия со сто­роны поль­зовате­ля: обыч­но дос­таточ­но прос­то клик­нуть на вре­донос­ную ссыл­ку. Хороший обще­извес­тный при­мер такой уяз­вимос­ти — XSS.

Тем вре­менем я креп­ко задумал­ся, как же работа­ет най­ден­ный баг и как его мож­но вос­про­извести.

 

Как устроена уязвимость

Я перес­мотрел видео и попытал­ся соб­рать мак­симум информа­ции. Может быть, важ­ны какие‑то детали или вдруг попадут­ся рабочие кус­ки кода? Вни­матель­но наб­люда­ем за про­цес­сом под­готов­ки: ука­зыва­ется кар­тинка для видео, ука­зыва­ется сам файл, который дол­жен быть уста­нов­лен, ID бота и TGID жер­твы.

Из все­го перечис­ленно­го сле­дует, что дос­таточ­но передать любой файл, — глав­ное, что­бы кли­ент Telegram приз­нал, что это видео. «Зна­чит, проб­лема кро­ется в отправ­ке фай­лов!» — решил я и пог­рузил­ся в изу­чение API Telegram, а точ­нее — той час­ти, где мы отправ­ляем фай­лы. Осо­бое вни­мание, конеч­но, уде­ляем видео.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии