![](https://habrastorage.org/getpro/habr/post_images/bd6/43c/ff1/bd643cff1a6eea7a47263793ff9cdc54.jpg)
Мохамед Басет (Mohamed Baset) — специалист по информационной безопасности, разработавший метод атаки на пользователей интернет-мессенджеров. Метод этот основан на использовании QR-кодов. Сейчас QR-коды используются для аутентификации во многих приложениях, включая WeChat, Line и WhatsApp. SQRL (Secure QR Logins) считался вполне безопасным методом, но похоже, что это не так.
Метод, показанный Басетом, включает в себя как технологии, как и социальную инженерию. Такие гибридные методы атаки применяются злоумышленниками довольно часто. Для того, чтобы атаковать пользователя интернет-мессенджера, злоумышленник должен каким-либо образом заставить жертву просканировать специальный QR-код. Легче всего здесь использовать фишинг.
![](https://habrastorage.org/getpro/habr/post_images/56f/8d4/108/56f8d41080830254977969e9aa038e53.jpg)
Метод состоит из следующих этапов:
1. Злоумышленник инициирует клиентскую QR-сессию и клонирует код QR-логина на фишинговую страницу;
2. Жертве отправляется ссылка на эту страницу. Выглядит страничка вполне безопасно;
3. Жертва сканирует поддельный QR-код, а приложение отправляет секретный токен, завершающий процесс аутентификацию;
4. Злоумышленник получает подтверждение и теперь может контролировать аккаунт жертвы.
Для того, чтобы метод оказался более-менее эффективным, атакующий должен создать скрипт, клонирующий временные QR-коды с обновлением их на фишинговом сайте. Дело в том, что QR-Login ограничивает время валидности QR-кодов. Главное условие атаки — и жертва, и злоумышленник должны находиться в онлайн-режиме одновременно.
QRLJacking уже тестировался на ряде мессенджеров, включая QRLJacking на WhatsApp, WeChat, Line, Weibo, QQ Instant Messaging, QQ Mail, Alibaba. Все атаки, по словам разработчика, были завершены успешно.
![](https://habrastorage.org/getpro/habr/post_images/c61/6c6/d3c/c616c6d3c0cd38e31b0c4c3bf0aa23fa.jpg)
Исходный код 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
Комментарии (10)
nmk2002
10.08.2016 17:40Такой атаке подвержены и простой пароль и одноразовый.
Защитой от фишинга может быть, если браузер будет генерировать QR на основании информации, полученной от сервера и текущего URL или доменного имени.Tihon_V
10.08.2016 17:45А в чем разница, если злоумышленник отдает уже сгенерированый QR?
nmk2002
10.08.2016 17:56я имею в виду, что если бы браузер мог в своем интерфейсе отображать QR(данные_полученные_от_сервера+URL/domain), то выводить QR на самой станице не надо было бы. То есть это конечно возможно, если станет стандартом.
Например, рядом с адресной строкой предусмотреть поле для QR, при наведении мышкой на которое отображается QR.
Tihon_V
10.08.2016 18:15Тогда, с технической точки зрения — злоумышленнику пришлось бы отображать qr также в интерфейсе браузера, ведь qr не имеет какой либо цифровой подписи, которая исключала бы возможность показывать его на другом домене.
rumkin
10.08.2016 18:49+1Пора перестать называть атакой то, что делается руками пользователя или по невнимательности/низкой квалификации. Каждый раз читаешь такие заголовки, вздрагиваешь, перечисляешь в голове пароли, которые следует сменить, переходишь к тексту, а там опять ловушка для дураков.
eps
10.08.2016 21:31Атака на невнимательность пользователя — это тоже атака. Вспомните, сколько malware так распространяется.
А квалификации у пользователя может не быть вообще никакой — на то он и пользователь
ZaEzzz
10.08.2016 22:00+1Я с вами согласен — охота бывает и с ружьем, и на капкан, но от способа она не перестает быть охотой.
Но все же хотелось бы в заголовках видеть что-то в роде ловушки, а не атаки, ведь стрельба ведется по конкретно определенной цели, а капкан ставится на кого попадется (не на вот этого конкретного медведя, а на медведя).
Мне кажется примерно такую мысль хотел донести товарищ rumkin.
TimsTims
Вполне обычный MITM + фишинг, ничего нового или удивительного.
Для более *убедительного* способа стоило привести пример со ссылкой типа
https://whatsapp.com....seekurity.net/, и тогда даже на скриншоте не было бы ничего подозрительного.