С введением таких изменений, как End-to-end шифрования для всех пользователей, Whatsapp вырос от приложения, игнорировавшего безопасность, к приложению, которое уважают многие.

Whatsapp аккаунты основаны на телефонных номерах. Это означает, что ваш телефонный номер это ваш логин, использующийся также и для аутентификации.

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

Краткое рассмотрение процесса входа:

image

Когда приложение запускается впервые пользователь должен ввести его номер телефона. Код верификации отправляется на номер в виде sms или звонка. После этого код вводится в приложение, токен аутентификации сохраняется на устройстве.

Когда пользователь использует новое устройство процесс должен быть повторен для этого устройства и старое будет деавторизованно.

Whatsapp не сохраняет старые сообщения на их серверах, так что предыдущие сообщения не будут переданы на новое устройство.

Конечно, процесс на самом деле более сложный, но это упрощение подходит в целях данной статьи.

Удобство приходит на смену безопасности. Цена этого — уязвимость к новым атаками, которые могут быть использованы, чтобы получить доступ к телефонному номеру. Это также требует доверия мобильному оператору, поскольку он имеет полный доступ к номеру и может легко получить доступ к аккаунту.

Со стороны злоумышленника


С точки зрения «мало-бюджетного» злоумышленника это трудно обойти. Тут только два обходных путя:

1) Получение доступа к телефону жертвы. Как сказано выше, это может быть получено различными атаками на сеть или мобильным провайдером. Даже если доступ к телефонному номеру может быть получен это не даст доступ к истории сообщений и жертва это заметит, так как ее телефон будет деавторизован.

2) Протроянить сам телефон и получить доступ к разделу с данными. Это дорого.

Встречайте нового игрока


В 2015 году whatsapp запустил Whatsapp web, сайт который позволяет отправлять и получать сообщения с компьютера. Чтобы это использовать, браузер должен быть «соединен» с телефоном, тогда как телефон остается «во главе» всего этого. Краткий обзор процесса:

image

Сканируя QR код, показанный на веб-странице Whatsapp'а, используя телефон браузер авторизуется. Пользователь после этого сможет использовать whatsapp в браузере, до тех пор пока телефон подключен к сети.

Эта процедура открывает возможность для злоумышленников. Трюк состоит в том, чтобы пользовать отсканировал QR-код и это даст полный доступ к аккаунту, включая будущие и прошлые коммуникации. Бинго!

Описание атаки


Это просто: атакующий всего-лишь должен заставить пользователя отсканировать «вредоносный» QR-код, чтобы авторизировать браузер атакующего. Это даст ему полный доступ к аккаунту whatsaupp'а.

Следующее изображение показывает, как это работает:

image

Чтобы это совершить, whatsapp не должен выводить статический QR-код на их странице регистрации, а генерировать разный каждые пару секунд. Это предотвращает злоумышленников от простого копированя кода и публикации на новой странице.

Демо


Эта тулза которую я разработал, используя selenium чтобы получить QR-коды и express.js + socket.io чтобы вывести их на странице. Если жертва сканирует этот код, используя ее телефон, document.cookie и localStorage selenium браузера сохраняется в файл на машине злоумышленника.
Полученные данные могут быть использованы, чтобы войти в аккаунт жертвы используя любой браузер.

> Код на гитхабе
Поделиться с друзьями
-->

Комментарии (10)


  1. AntonyMcGreen
    24.01.2017 00:53
    +1

    Сейчас новый QR-код генерируется каждые 20 секунд. Пользователь дольше будет телефон искать и приложение запускать, чем код будет актуален.


    1. FancyMalware
      24.01.2017 00:56

      Таки в статье сказано, что это решается тем, что на вредоносном сайте автоматически производится подмена на более актуальный код.


  1. avost
    24.01.2017 02:57
    +5

    Ключница переводила? "Это предотвращает злоумышленников от простого копированя"… :(


    1. FancyMalware
      24.01.2017 03:33
      -7

      Как по мне так норм, предложите свой вариант если не нравится, с удовольствием поменяю.


      1. Sphinxspb
        26.01.2017 17:44

        «Чтобы это совершить, whatsapp не должен выводить статический QR-код на их странице регистрации, а генерировать разный каждые пару секунд. Это предотвращает злоумышленников от простого копированя кода и публикации на новой странице.»

        Чтобы усложнить реализацию данной атаки, whatsapp должен выводить на их странице регистрации не статический QR-код, а генерировать новый каждые пару секунд. Это позволит предотвратить простое копирование и публикацию QR-кода злоумышленником на поддельной странице.

        Я, по крайней мере, понял это предложение так.


    1. hmpd
      24.01.2017 17:47

      Мне еще вот это понравилось:

      Тут только два обходных путя:

      Как в старом анекдоте:
      Скрытый текст
      Дежурный по вокзалу объявляет:
      — Граждане пассажиры! Поезд 314 Москва — Воркута двигается по первому путю. Тю! Не по первому
      путю, а по пятому путю! Извините, граждане пассажиры! Не по путю, а по путе. Ой, что я говорю! Граждане
      пассажиры! Не по путю и не по путе, а по рельсе. Извините, граждане пассажиры! Пока я с вами тут шутю, а
      поезд на Воркутю — тю-тю!


  1. Goodkat
    24.01.2017 13:08

    WhatsApp показывает в настройках авторизованные браузеры и позволяет отозвать токены, по одному или сразу все.
    Согласен, что большинство туда не заглядывает никогда и даже не догадывается возможности использования WhatsApp в браузере.
    Было бы неплохо показывать в заголовке программы количество активно использующихся сессий — самому пользователю это никак не помешает, так как подразумевается, что именно он в данный момент пользуется web-версией.
    А так же раз в день/неделю показывать сплэш-скрином или пуш-сообщением количество новых/существующих web-сессий c пояснением, что это такое.


  1. Loreweil
    25.01.2017 08:34
    +1

    Когда пользователь использует новое устройство процесс должен быть повторен для этого устройства и старое будет деавторизованно.

    Whatsapp не сохраняет старые сообщения на их серверах, так что предыдущие сообщения не будут переданы на новое устройство.


    Это либо неверная/устаревшая информация, либо я что-то делал не так. На днях поменял устройство и во-первых не понадобилась повторная авторизация, во-вторых, сохранились старые сообщения.


    1. Zoro
      25.01.2017 17:57
      +1

      Согласен. Тоже поменял телефон и старые сообщения появились на новом.


    1. hostgame
      26.01.2017 17:44

      База сообщений синхронизируется с google drive. Скорее всего оттуда сообщения подкачались