QR-аутентификация не так безопасна, как принято считать
Мохамед Басет (Mohamed Baset) — специалист по информационной безопасности, разработавший метод атаки на пользователей интернет-мессенджеров. Метод этот основан на использовании QR-кодов. Сейчас QR-коды используются для аутентификации во многих приложениях, включая WeChat, Line и WhatsApp. SQRL (Secure QR Logins) считался вполне безопасным методом, но похоже, что это не так.
Метод, показанный Басетом, включает в себя как технологии, как и социальную инженерию. Такие гибридные методы атаки применяются злоумышленниками довольно часто. Для того, чтобы атаковать пользователя интернет-мессенджера, злоумышленник должен каким-либо образом заставить жертву просканировать специальный QR-код. Легче всего здесь использовать фишинг.
Метод состоит из следующих этапов:
1. Злоумышленник инициирует клиентскую QR-сессию и клонирует код QR-логина на фишинговую страницу;
2. Жертве отправляется ссылка на эту страницу. Выглядит страничка вполне безопасно;
3. Жертва сканирует поддельный QR-код, а приложение отправляет секретный токен, завершающий процесс аутентификацию;
4. Злоумышленник получает подтверждение и теперь может контролировать аккаунт жертвы.
Для того, чтобы метод оказался более-менее эффективным, атакующий должен создать скрипт, клонирующий временные QR-коды с обновлением их на фишинговом сайте. Дело в том, что QR-Login ограничивает время валидности QR-кодов. Главное условие атаки — и жертва, и злоумышленник должны находиться в онлайн-режиме одновременно.
QRLJacking уже тестировался на ряде мессенджеров, включая QRLJacking на WhatsApp, WeChat, Line, Weibo, QQ Instant Messaging, QQ Mail, Alibaba. Все атаки, по словам разработчика, были завершены успешно.
Исходный код proof-of-concepp опубликован Басетом на GitHub.
Для того, чтобы опробовать скрипт в работе, нужно настроить серверную часть:
1. Загружаем «qrHandler.php» на сервер. Этот скрипт конвертирует строку base64 QR-code в валидное изображение в формате jpg. Имя файла изображения по умолчанию — tmp.jpg. Располагается он в корневой папке файлов скрипта и обновляется каждый раз при запросе php-файла. Для привлечения пользователей можно подделать страницу WhatsApp, можно создать сайт с каким-либо привлекательным приложением для пользователей мессенджера и т.п.
2. Обновляем файл «phishing.html», который и является исходником фишинговой веб-страницы.
Настройка клиента (браузер злоумышленника)
1. Открываем Firefox
2. Прописываем «about:config» и, конечно, соглашаемся быть осторожными;
3. Ищем строку «security.csp.enable» и меняем значение на false. После того, как скрипт будет опробован, лучше вернуть все обратно;
4. Устанавливаем add-on Greasemonkey, убеждаемся в том, что файл «WhatsAppQRJackingModule.js» загружен и работает.
5. Теперь все готово. Попробуйте открыть пример «web.whatsapp.com», ждем, пока загружается сессия WhatsApp. Greasemonkey начинет работать, используя WhatsApp модуль;
6. Отправляем прямую ссылку на фишинговую страницу жертве.
Смотрим на результат:
Какие ресурсы уязвимы?
По мнению разработчика, метод QRLJacking можно применять не только для интернет-мессенджеров, но и для прочих сервисов. Список уязвимых ресурсов и сервисов ниже:
Чаты : WhatsApp, WeChat, Line, Weibo, QQ Instant Messaging
Почтовики : QQ Mail, Yandex Mail
eCommerce: Alibaba, Aliexpress, Taobao, Tmall, 1688.com, Alimama, Taobao Trips
Online-банкинг: AliPay, Yandex Money, TenPay
Сервисы идентификации: Yandex Passport (Yandex Mail, Yandex Money, Yandex Maps, Yandex Videos, etc...)
Мобильное ПО: AirDroid
Другие сервисы: MyDigiPass, Zapper & Zapper WordPress Login by QR Code plugin, Trustly App, Yelophone, Alibaba Yunos
Автор: King Servers