С введением таких изменений, как End-to-end шифрования для всех пользователей, Whatsapp вырос от приложения, игнорировавшего безопасность, к приложению, которое уважают многие.
Whatsapp аккаунты основаны на телефонных номерах. Это означает, что ваш телефонный номер это ваш логин, использующийся также и для аутентификации.
Хотя это не лучшее решение с точки зрения приватности это часто сохраняет не подкованных в безопасности пользователей от того, чтобы запоминать еще один пароль, который они потенциально могут ввести при фишинговой атаке.
Краткое рассмотрение процесса входа:
Когда приложение запускается впервые пользователь должен ввести его номер телефона. Код верификации отправляется на номер в виде sms или звонка. После этого код вводится в приложение, токен аутентификации сохраняется на устройстве.
Когда пользователь использует новое устройство процесс должен быть повторен для этого устройства и старое будет деавторизованно.
Whatsapp не сохраняет старые сообщения на их серверах, так что предыдущие сообщения не будут переданы на новое устройство.
Конечно, процесс на самом деле более сложный, но это упрощение подходит в целях данной статьи.
Удобство приходит на смену безопасности. Цена этого — уязвимость к новым атаками, которые могут быть использованы, чтобы получить доступ к телефонному номеру. Это также требует доверия мобильному оператору, поскольку он имеет полный доступ к номеру и может легко получить доступ к аккаунту.
Со стороны злоумышленника
С точки зрения «мало-бюджетного» злоумышленника это трудно обойти. Тут только два обходных путя:
1) Получение доступа к телефону жертвы. Как сказано выше, это может быть получено различными атаками на сеть или мобильным провайдером. Даже если доступ к телефонному номеру может быть получен это не даст доступ к истории сообщений и жертва это заметит, так как ее телефон будет деавторизован.
2) Протроянить сам телефон и получить доступ к разделу с данными. Это дорого.
Встречайте нового игрока
В 2015 году whatsapp запустил Whatsapp web, сайт который позволяет отправлять и получать сообщения с компьютера. Чтобы это использовать, браузер должен быть «соединен» с телефоном, тогда как телефон остается «во главе» всего этого. Краткий обзор процесса:
Сканируя QR код, показанный на веб-странице Whatsapp'а, используя телефон браузер авторизуется. Пользователь после этого сможет использовать whatsapp в браузере, до тех пор пока телефон подключен к сети.
Эта процедура открывает возможность для злоумышленников. Трюк состоит в том, чтобы пользовать отсканировал QR-код и это даст полный доступ к аккаунту, включая будущие и прошлые коммуникации. Бинго!
Описание атаки
Это просто: атакующий всего-лишь должен заставить пользователя отсканировать «вредоносный» QR-код, чтобы авторизировать браузер атакующего. Это даст ему полный доступ к аккаунту whatsaupp'а.
Следующее изображение показывает, как это работает:
Чтобы это совершить, whatsapp не должен выводить статический QR-код на их странице регистрации, а генерировать разный каждые пару секунд. Это предотвращает злоумышленников от простого копированя кода и публикации на новой странице.
Демо
Эта тулза которую я разработал, используя selenium чтобы получить QR-коды и express.js + socket.io чтобы вывести их на странице. Если жертва сканирует этот код, используя ее телефон, document.cookie и localStorage selenium браузера сохраняется в файл на машине злоумышленника.
Полученные данные могут быть использованы, чтобы войти в аккаунт жертвы используя любой браузер.
Автор: FancyMalware