Квишинг: когда фишинг прячется за QR-кодом
«Отсканируйте этот код, чтобы подписать документ». Фраза выглядит безобидно, как и маленький чёрно-белый квадрат. Но за этим QR-кодом часто скрывается поддельная страница входа. У приёма есть название: квишинг (quishing), слияние слов «QR» и «фишинг». Разберёмся, почему он так хорошо работает и как разоблачить, а затем заблокировать сайт, который за ним прячется.
Что такое квишинг?
QR-код — это всего лишь текст, записанный маленькими квадратиками. Чаще всего этот текст — веб-адрес. Когда мы сканируем код, телефон читает текст и предлагает открыть страницу.
Квишинг повторяет классические сценарии фишинга, но вместо ссылки подсовывает QR-код:
- документ, который нужно «подписать» или который «вам открыли»;
- двухфакторную аутентификацию, которую «нужно переподключить до вечера»;
- задержанную посылку, штраф, возврат денег.
Он встречается и за пределами почты: наклейки поверх настоящих QR-кодов на паркоматах, зарядных станциях или в меню ресторанов. Принцип тот же: заставить отсканировать, а потом заставить ввести данные.
Почему QR-код проскальзывает сквозь сети
Почтовые фильтры отлично умеют одно: читать текст письма, находить ссылки и проверять, куда они ведут. Но QR-код — не ссылка, а картинка. Для фильтра, который не умеет её расшифровать, в письме… вообще нет ссылок. Оно выглядит даже чище обычного.
Некоторые фильтры уже научились читать QR-коды. Мошенники отвечают тем, что усложняют чтение:
- QR-код кладут во вложенный PDF, а не в текст письма;
- его рисуют таблицей из цветных ячеек или символами, а не картинкой;
- его режут на две картинки, поставленные рядом, или слегка искажают.
Для человеческого глаза ничего не меняется: телефон легко читает код. Для робота это ещё одна загадка. Это та же игра в прятки, что описана в руководстве Фишинг: как мошенники доставляют свои письма.
Большой прыжок: с компьютера на смартфон
Настоящая сила квишинга в другом: он заставляет нас сменить устройство. Письмо приходит на компьютер, который часто защищает компания: веб-фильтр, антивирус, проверка ссылок. Но чтобы отсканировать код, мы берём телефон. И тут всё меняется:
- телефон часто личный, подключён через 4G или 5G, вне сети и защиты компании;
- экран маленький: адрес страницы обрезан или вообще скрыт;
- мы входим быстро, по привычке, между двумя делами.
Иначе говоря, ловушка срабатывает не там, где стоит охрана. Страницы квишинга часто рассчитаны именно на телефон. И многие из них — страницы-«посредники», способные обойти двухфакторную аутентификацию: об этом руководство AiTM: когда фишинг крадёт вашу сессию, а не только пароль.
Как прочитать скрытый адрес… не открывая его
Чтобы разобрать кампанию квишинга, первым делом нужно превратить QR-код в текст, ни разу не заходя на страницу. Способов несколько:
- Камера телефона обычно показывает адрес перед открытием. Мы его читаем, но не нажимаем.
- Приложение для чтения QR-кодов, настроенное показывать текст, не открывая браузер.
- На компьютере делаем снимок экрана с кодом и расшифровываем его офлайн-декодером, например свободной утилитой
zbarimg:
$ zbarimg capture.png
QR-Code:https://sho.rt.example/x7Kp
Получаем адрес, как любой другой. Бережно сохраняем его: это улика.
Определяем домен и инфраструктуру
Веб-адрес читается немного как почтовый адрес, записанный задом наперёд. Главное имя, домен, стоит прямо перед первым «/» после https://. Всё, что левее, владелец может выбрать как угодно.
https://login.docs-m1crosoft.example/auth
Здесь домен — docs-m1crosoft.example, а вовсе не Microsoft. Слово «login» в начале ничего не доказывает. Та же ловушка с microsoft.com.verification.example: настоящий домен — verification.example. Некоторые домены идут дальше и используют буквы других алфавитов, похожие на латинские: см. Punycode и омографы: когда поддельный домен похож на настоящий.
Найдя домен, ищем, кто может вмешаться. Постоянно встречаются три участника:
- Регистратор — это «ЗАГС» доменного имени: компания, у которой его купили. Он может заблокировать домен, и тогда отключатся все страницы, которые его используют. Его находят запросом RDAP или WHOIS по домену, который заодно показывает дату создания: домен «банка», созданный три дня назад, — очень плохой знак.
- Хостинг — владелец здания: компания, чей сервер показывает страницу. Он может удалить страницу или отключить сервер.
- CDN (например, Cloudflare) — ресепшен перед зданием: отдаёт страницу вместо сервера и скрывает его настоящий адрес. CDN принимает жалобы, может показать предупреждение и передаёт жалобу хостингу.
Что делать, если QR-код ведёт на несколько доменов?
Так бывает очень часто: QR-код ведёт не прямо на страницу-ловушку, а в цепочку переадресаций. Сокращатель ссылок, затем законный сервис, который используют для перенаправления, иногда проверка «Вы человек?» и, наконец, поддельная страница входа.
У каждого звена свой ответственный, и на каждое звено можно пожаловаться:
- Сначала на конечную страницу: её домен (регистратору) и сервер (хостингу или CDN).
- Затем на первое звено, записанное в QR-коде. Это слабое место мошенника: напечатанный или разосланный QR-код уже не изменить. Если отключить эту первую ссылку, все уже распространённые коды станут бесполезны.
- И наконец на посредников: сокращатель ссылок обычно очень быстро блокирует злоупотребления, а законному сайту, который используют как трамплин, стоит об этом знать.
Сохраняем всю цепочку с датой и временем: мошенники часто меняют конечную точку, а жалоба с датой помогает командам, которые её получат.
Сообщаем о кампании через Baitback
QR-код не отменяет письма: его отправил сервер, который принадлежит хостингу. Вставляем полный исходный текст письма в Baitback: инструмент находит сервер отправки, его хостинг и адрес для жалоб, проверяет SPF, DKIM и DMARC и готовит жалобы, которые остаётся только отправить. Что рассказывают эти строки заголовка, объясняет руководство Как письмо путешествует от отправителя к получателю.
Адрес, расшифрованный из QR-кода, дополнительно отправляем регистратору, хостингу или CDN, найденным выше, а также на платформы защиты браузеров, о которых напоминает Baitback (Google Safe Browsing, Microsoft, Netcraft…). Уже через несколько часов страницу могут заблокировать для миллионов пользователей.
А если мы уже отсканировали код и ввели пароль?
Без паники, но и без промедления. С доверенного устройства меняем пароль от затронутой учётной записи, используем функцию «выйти на всех устройствах», если она есть, и предупреждаем IT-отдел, если это рабочий аккаунт. Одной смены пароля не всегда достаточно: почему — объясняет руководство об атаках AiTM.
- QR-код — это просто адрес, записанный квадратиками: он заслуживает того же недоверия, что и ссылка.
- Он часто проходит фильтры, потому что выглядит как картинка, а не как ссылка.
- Он переводит нас с защищённого компьютера на телефон, где защиты меньше, а экран меньше.
- Мы расшифровываем его, чтобы прочитать адрес, не открывая, и выделяем настоящий домен прямо перед первым «/».
- На каждое звено цепочки (домен, сервер, переадресации) можно пожаловаться, как и на само письмо.