«Мы почитаем всех нулями, а единицами — себя»: как «Евгений Онегин» освоил QR-код

QR-код сейчас совершенно обыденная вещь — они встречаются повсюду, их используют как один из способов авторизации крупные сервисы вроде WhatsApp, Яндекса и AliExpress, встречаются QR-коды для подключения к Wi-Fi. Но насколько надежна эта технология? Можно ли создать такой QR-код, при сканировании которого выполнится нагрузка на девайсе жертвы? Этот вопрос мы сегодня разберем подробнее.

QR-код (англ. Quick Response Code — код быстрого реагирования) — это матричный или двумерный штрих-код, который может содержать до 4296 символов ASCII. То есть, проще говоря, картинка, в которой зашифрован текст.

История вектора атаки

В мае 2013 года специалисты компании по сетевой безопасности Lookout Mobile разработали специальные QR-коды, которые смогли скомпрометировать очки Google Glass. На тот момент очки сканировали все фотографии, «которые могут быть полезны их владельцу», — и предоставили взломщикам полный удаленный доступ к устройству. Исследователи сообщили в Google о данной уязвимости, и ее закрыли буквально за несколько недель. К счастью, исправить успели до того, как ее можно было использовать вне лаборатории, ведь взлом очков реального пользователя мог привести к большим проблемам.

В 2014 году программа Barcode Scanner для мобильных устройств из проекта ZXing практически не проверяла тип URI, передаваемый через QR-код. В результате любой эксплоит, который мог быть исполнен браузером (например, написанный на JavaScript), можно было передать через QR.

Сканер пытался отфильтровать опасные виды атак с помощью регулярных выражений, требуя, чтобы URI имел период с последующим продлением как минимум на два символа, транспортный протокол длиной не менее двух символов, за которым следует двоеточие, и чтобы в URI не было пробелов.

Если содержимое не соответствует хотя бы одному из требований, то оно определяется как обычный текст, а не URI. Этот механизм блокирует атаки вроде javascript;alert("You have won 1000 dollars! Just Click The Open Browser Button");, но, внеся пару простых изменений в код, мы получаем вариант, который программа исполняла в браузере, ведь она считала JS-код обыкновенным, «нормальным» URI!

Вот как это выглядело.

Вариант кода, который блокировался защитным механизмом сканера
Модифицированный URI, который программа не могла отфильтровать

Как мы можем увидеть, уведомление появилось в браузере, а значит, URI с потенциально вредоносным кодом был выполнен. Однако выполняется данный JS-код лишь тогда, когда пользователь нажимает Open Browser (то есть «Открыть в браузере»).

Еще один интересный пример из 2012 года: эксперт по информационной безопасности Равишанкар Боргаонкар (Ravishankar Borgaonkar) продемонстрировал, как сканирование простейшего QR может привести к форматированию устройств Samsung! Что же было внутри? MMI-код для сброса до заводских настроек: *2767*3855#, а также префикс tel: для совершения USSD-запроса.

Самое опасное здесь — что человек без предварительной подготовки не может узнать содержимое кода, не отсканировав его. А человек очень любопытен: в различных исследованиях большинство испытуемых (которые, кстати, даже не знали об эксперименте) сканировали QR-код именно из любопытства, забывая о собственной безопасности. Поэтому всегда будь внимателен!

www-icon.jpg

WWW

Если у тебя нет сканера кодов, но уйма свободного времени — можно попробовать расшифровать код вручную. Инструкция есть на Хабре.

QRGen — каждому по коду

Для демонстрации средств работы с QR-кодами я буду использовать Kali Linux 2019.2 с установленным Python версии 3.7 — это необходимо для корректной работы утилит.

warning-icon.jpg

WARNING

Не забывай про уголовную ответственность за создание и распространение вредоносных программ, к которым в широком смысле относятся и наши «заряженные» QR-коды.

Начнем с утилиты QRGen, которая позволяет создавать QR-коды с закодированными в них скриптами. Копируем репозиторий и переходим в папку с содержимым.

git clone https://github.com/h0nus/QRGen cd QRGen && ls 

info-icon.jpg

INFO

QRGen требует Python версии 3.6 и выше. Если возникает ошибка, попробуй обновить интерпретатор.

Устанавливаем все зависимости и запускаем сам скрипт.

pip3 install -r requirements.txt ## или python3 -m pip install -r requirements.txt python3 qrgen.py 

Видим справку.

Справка QRGen

Аргумент -h выведет то же самое, а вот запуск с ключом -l приведет к генерации QR-кодов из определенной категории. Всего их восемь.

  1. SQL-инъекции.
  2. XSS.
  3. Инъекции команд.
  4. QR с форматированной строкой.
  5. XXE.
  6. Фаззинг строк.
  7. SSI-инъекции.
  8. LFI или получение доступа к скрытым каталогам.

Возможные атаки

Теперь давай посмотрим на примеры из каждой категории, а также разберемся, какой урон и каким устройствам они могут нанести.

1. 0'XOR(if(now()=sysdate(),sleep(6),0))XOR'Z 2. <svg>at /etc/passwd 4. %d%d%d%d%d%d%d%d%d%d 5.  6. "A" x 33 7. 

8. ../../../../../../etc/passwd </svg></code></pre>

Посмотреть текстовые файлы со всеми вариантами «начинки» QR-кодов ты можешь в папке words (они разделены по категориям, указанным выше).

Теперь пара слов о последствиях атак подобными нагрузками.

Первый класс атак — SQL-инъекции — используют при взломе БД и нарушении работы веб-сайтов. Например, запрос может вызывать зависание сайта.

Следующий пример (под номером 2) демонстрирует эксплуатацию XSS-уязвимости при атаке на веб-приложения с использованием SVG (Scalable Vector Graphic). К чему может привести XSS, ты, думаю, и без меня прекрасно знаешь, так что подробно на этом останавливаться не буду.

Третий пункт выводит на экран жертвы содержимое файла /etc/passwd: список аккаунтов Linux-based-систем и дополнительную информацию о них (раньше — хеши паролей этих учетных записей). В подобных случаях обычно стараются получить /etc/shadow и конфигурацию сервера, но все очень сильно зависит от цели, так что какие файлы читать — решай сам.

Четвертый пример представляет собой выражение, которое вызовет переполнение буфера (buffer overflow). Оно возникает, когда объем данных для записи или чтения больше, чем вмещает буфер, и способно вызвать аварийное завершение или зависание программы, ведущее к отказу в обслуживании (denial of service, DoS). Отдельные виды переполнений дают злоумышленнику возможность загрузить и выполнить произвольный машинный код от имени программы и с правами учетной записи, от которой она выполняется, что делает эту ошибку довольно опасной.

Пятый по счету класс атак (XXE Injections) представляет собой вариант получения скрытой информации веб-сервера с помощью анализа вывода XML-файлов. Конкретно в нашем примере при запросе к серверу тот ответит зашифрованным в Base64 содержимым файла /etc/passwd, который уже упоминался. Однако расшифровать его не составит труда — достаточно лишь воспользоваться встроенной в большинство дистрибутивов Linux утилитой base64 либо же онлайн-конвертером.

Атаки форматной строки (пример 6) — это класс уязвимостей, который включает в себя предоставление «специфичных для языка маркеров формата» для выполнения произвольного кода или сбоя программы. Говоря человеческим языком, это класс атак, при которых приложение некорректно очищает пользовательский ввод от управляющих конструкций, из-за чего эти конструкции в результате исполняются. Если ты программировал на С, то, конечно, помнишь те интересности с выводом переменных через printf: надо было в первом аргументе (который строка) указать на тип выводимого значения (%d для десятичного числа и так далее).

Седьмой пункт представляет собой вариант command injection, которая выполняет определенный код на стороне сервера. В моем примере будет выполнена команда ls, которая покажет содержимое текущей директории, но, конечно, там может быть гораздо более опасный код.

И наконец, последняя категория — это LFI-уязвимости (Local File Inclusion; включение локальных файлов), позволяющие просмотреть на уязвимых (или неправильно настроенных) серверах файлы и папки, которые не должны были быть видны всем. Один из возможных вариантов — просмотреть файл /etc/passwd, о котором мы с тобой уже не раз говорили. Это может выглядеть вот так.

Обрати внимание, что в качестве тестового веб-приложения используется DVWA (Damn Vulnerable Web Application), который был специально разработан для обучения пентесту. Многие атаки на веб-приложения можно отработать на нем.

Практика

А сейчас перейдем к практике — протестируем эту утилиту сами.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Я уже участник «Xakep.ru»← Ранее Иранская хак-группа Oilrig злоупотребляет DNS-over-HTTPSДалее → Хакер поделился паролями от 900 корпоративных VPN-серверов

Scroll down to see QR Code use cases

Business Cards

See moreExamples

Flyers

See moreExamples

Brochures

See moreExamples

Labels & Stickers

See moreExamples

Product Packaging

See moreExamples

Food Packaging

See moreExamples

Banners

See moreExamples

Books

See moreExamples

Bottles & Cans

See moreExamples

Clothing

See moreExamples

Displays

See moreExamples

Newspapers & Magazines

See moreExamples

Posters

See moreExamples

Stationery

See moreExamples

Table Tents

See moreExamples

Tickets

See moreExamples

Vehicles

See moreExamples

Websites

See moreExamples

Windows

See moreExamples

Giveaways

See moreExamples

Создание QR-кодов

Выбирайте из множества функций: от отображения интерактивной кнопки «Нравится» на Facebook до кодирования прайс-листа в формате PDF. Эти инновационные функции удивят пользователей и послужат мотиватором для сканирования кодов. На следующем этапе настройте созданные QR-коды, выбрав цвета и формы и вставив логотип своей компании. Или просто используйте один из наших готовых шаблонов дизайна.

Отслеживайте эффективность кампании

После начала кампании Вы можете отслеживать статистику сканирования — сколько раз, когда, где и какими устройствами сканируются коды. Таким образом, Вы можете сразу заметить любые изменения в производительности. Вся информация представлена в виде простых для понимания графиков и диаграмм. Статистика также включает в себя необработанные таблицы данных, загружаемые в формате PDF или CSV.

Динамические QR-коды

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

Высококачественные форматы печати

Вы можете загрузить коды в нескольких пиксельных и векторных форматах: JPEG, PNG, EPS и SVG. Все файлы имеют высокое разрешение. Выберите лучший вариант для печати QR-кодов любого размера и цвета на любом носителе без каких-либо компромиссов в отношении качества.

Общий доступ к учетной записи

Организуйте эффективную совместную работу над кампаниями QR-кодов, используя гибкие возможности, предоставляемые при совместном использовании учетной записи. Приглашение других сотрудников для общего доступа к Вашей учетной записи занимает всего несколько секунд. Вы можете добавить нескольких пользователей либо в качестве администраторов, либо просто с правами просмотра статистики. Таким образом Вы оптимизируете планирование своей кампании и упрощаете сотрудничество различных подразделений.

Получайте помощь, когда Вам это нужно

У Вас есть вопрос? Свяжитесь с нашей дружелюбной службой поддержки по электронной почте или телефону. Воспользуйтесь нашим онлайновым центром поддержки с разделом «Часто задаваемые вопросы», руководствами и электронными книгами для получения советов и творческих идей. Мы помогаем Вам совершенствовать маркетинг QR-кодов.

начните всего через 30 секунд

Опробуйте все функции прямо сейчас

Отличное ПО и консультации

Помимо превосходного программного обеспечения, QR Suite также предлагает отличную поддержку. Наши дружелюбные сотрудники всегда готовы объяснить функционал и помочь с созданием кодов.

— Robert Aumer, Seal Systems AG

Опережая всех конкурентов

После основательных поисков мы сделали выбор в пользу qrsuite от QRCode-Genrator.de. Решающим для нас является простота в использовании и содержательная внутренняя составляющая. По этим критериям данный QR-генератор опережает своих конкурентов. Общую положительную картину дополняет индивидуальный сервис.

— Jan Albers, European Coastal Airlines

Увеличение количества сканирований до 173% при помощи простых приемов

1

Общайтесь с Вашими клиентами

При помощи небольшого указания на QR-коде попросите пользователя отсканировать код, достаточно указать «Отсканируй меня».

2

Сообщайте о дополнительной выгоде

Объясните, как Ваши клиенты выигрывают от сканирования Вашего кода, например, добавив сообщение типа «Получите скидку 10% прямо сейчас».

3

Создайте свой QR-код

Снабдите Ваш QR-код логотипом, создайте атмосферу доверия и пробудите интерес у Вашей целевой аудитории.

4

Размер QR-кода

Минимальный размер должен составлять 2×2 см. Даже если Ваш новый мобильный телефон сканирует QR-коды размером 1×1 см, это не означает, что более старые смартфоны способны на это.

Создайте свой собственный QR-код с логотипом

Менее чем за 5 минут

…в анализе Ваших QR-кодов

QR-коды можно анализировать — Разместите различные динамические QR-коды на Ваших печатных материалах и анализируйте Ваши маркетинговые кампании. Благодаря этому Вы, например, можете узнать, какое объявление и в какой газете является более результативным. Узнайте не только, как часто, но и когда и где были отсканированы Ваши QR-коды.

начните всего через 30 секунд

Опробуйте все функции прямо сейчас

Что Вам следует знать о QR-кодах

1

Что такое QR-код?

QR-код – это двухмерный штрихкод, который состоит из черных и белых пикселей и позволяет кодировать до нескольких сотен символов. Сохраненную в коде информацию можно затем расшифровать и посмотреть при помощи смартфона или планшета. «QR» означает «Quick Response» (быстрая реакция), такое название объясняется большой скоростью сканирования.

2

Как используются QR-коды?

Благодаря стремительному распространению смартфонов сегодня QR-коды чаще всего используются для мобильного маркетинга. Печатные материалы, такие как флаеры, плакаты, каталоги или визитки, можно дополнить цифровой информацией, например, веб-сайтами, видео, PDF, фотогалереями или контактными данными. Возможности использования QR-кодов практически безграничны.

3

Как можно создать QR-код?

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

4

Можно ли изменить QR-код визуально?

Да. Благодаря высокой невосприимчивости к ошибкам код можно модифицировать до определенной степени, не изменяя при этом его структуру, необходимую для считывания кода. Например, можно выбрать новые цвета переднего плана и фона, интегрировать логотип в коды или изменить дизайн трех характерных углов кода. Однако после визуальных изменений кода необходимо проверять его считываемость.

5

Что такое статические и динамические QR-коды?

Функции и информационное содержание динамических QR-кодов можно впоследствии изменять, не меняя при этом уже напечатанные коды. Кроме того, динамические QR-коды позволяют собирать статистические сведения о сканировании (количество, время и место сканирования). В отличии от статических кодов, которые не поддерживают эти функции, здесь используется так называемый URL-адрес перенаправления, который в свою очередь непосредственно ссылается на зашифрованную Вами информацию.

6

Как можно измерить количество сканирований QR-кодов?

Измерение количества сканирований или так называемое ‘отслеживание’ возможно при использовании динамических QR-кодов. Сохраненный в коде URL-адрес перенаправления, который соединен с сервером соответствующего поставщика услуг, собирает информацию и затем обрабатывает ее в реальном времени для пользователя в его учетной записи.

7

Что нужно учитывать при печати?

Для печати рекомендуется использовать форматы печати с высоким разрешением. Наряду с файлам в формате JPG и PNG предлагаются также векторные форматы EPS и SVG. Эти форматы подходят, прежде всего, для крупноформатной печати, так как изображения в этих форматах можно увеличить без потери качества. Перед публикацией кодов следует выполнить практический тест при помощи различных смартфонов и приложений.

8

Файлы каких форматов следует применять для печати?

Наряду с соответствующим форматом файла при печати необходимо принимать во внимание дополнительные параметры. Как правило, размер оттиска кода необходимо выбирать в зависимости от количества зашифрованных символов. Чем больше информации шифруется, тем больше требуется места. Кроме того, должно быть обеспечено удобное взаимодействие с пользователем, и код должен считываться без труда. Практика показала, что зачастую достаточно размера не менее 2 x 2 см. Следует воздержаться от размещения QR-кода на неровных поверхностях. Если проспекты или флаеры перегибаются, это также может негативно повлиять на считываемость кода.

9

Как можно сканировать QR-коды?

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

10

Как эффективно применять QR-коды?

Встаньте на место Вашей целевой аудитории и задайте себе вопрос, стали бы Вы сканировать изображенный код. Вам интересно, что скрывается за кодом? Можно ли ожидать дополнительной выгоды? Пользователи затрачивают усилия, чтобы ознакомиться с Вашей рекламой – поэтому предложите им дополнительную выгоду. Оказалось, что использование мобильного веб-сайта с интересным контентом, адаптированным к размеру экрана смартфона, является фактором успеха. К тому же, код с индивидуальным дизайном, например, с Вашим логотипом, является гарантом большего количества сканирований. Такое указание, как например, «Отсканируйте код и узнайте больше», еще более усиливает данный положительный эффект.

11

Возникновение QR-кодов

Практические свойства QR-кода были использованы еще в 1994 году. Denso Wave, японская дочерняя фирма компании Denso, поставщика корпорации Toyota, разработала коды для маркировки узлов и компонентов, чтобы ускорить логистические процессы в сфере производства автомобилей. В Японии, стране происхождения QR-кодов, они сейчас встречаются повсеместно: Практически на каждом рекламном носителе имеется такой код. Японская иммиграционная служба снабдила QR-кодами даже виды на жительство. В Европе популярность QR-кодов также стремительно растет. Сегодня они стандартизированы на международном уровне, очень надежны и считываются даже в том случае, если повреждено или скрыто до 30% их площади.

12

Применение генератора QR-кодов

Возможности применения QR-кодов практически безграничны. Особенно на базе URL-адреса можно шифровать самую разную информацию. Сюда относятся домашние страницы, веб-сайты с описанием продукции, видео, фотогалереи, купоны, розыгрыши, контактные формуляры или информационные рассылки, а также страницы в соцсетях. Кроме того, многие другие возможности применения не требуют соединения смартфона с Интернетом. Можно шифровать записи календаря о предстоящих мероприятиях, WiFi-соединения или контактные данные в виде виртуальных визиток (vCard), и затем пользователь может сохранять их в свой мобильный телефон. При этом QR-коды можно отображать на веб-сайтах, вставлять в печатные объявления или наносить на продукты, а также на все прочие ровные поверхности.

Испытайте Генератор QR-кодов PRO в течение 14 ДНЕЙ ТЕСТИРОВАНИЯ

Опробуйте все функции бесплатно и без обязательств

spark.png 24 Июля 2020 <nobr>8 780</nobr>QR-коды используются везде: в презентациях, на визитках, вывесках и других рекламных носителях. Составили список проверенных сервисов для создания QR-кодов с разным функционалом.b_5f16e388b7dd4.jpg

1. QR Coder

В этом сервисе все куда проще: доступны всего 4 вида статических кодов, зато простой интерфейс удобно использовать с мобильных устройств. Подойдет, если надо быстро сделать разовый QR-код, который не будет меняться — например, поставить в презентацию код со ссылкой на сайт вашей компании. Закодировать здесь можно ссылку, визитку и СМС-ку. Зато все без регистрации и есть выбор размера PNG-файла с кодом аж из 6 вариантов.

Перейти на сайт →

2. QR сс

Еще один сервис с разными вариантами кодов, интересен разными шаблонами (ссылки, визитки и так далее) и возможностью задать цвет и размер вашего кода.

Перейти на сайт →

3. VK QR

Встроенный генераторов кодов от VK. Плюсы: сервис бесплатный, можно выбрать цвет код, а таргетологи могут еще и автоматически собирать в отдельную аудиторию тех, кто отсканировал код, для рекламы в соцсети. Минусы: для использования нужно зайти в свой профиль в VK, в центре всех кодов логотип соцсети.

Перейти на сайт →

4. STQR

Здесь вы найдете больше 30 шаблонов для разных QR-кодов, от простых ссылок и визиток до самых разных объявлений. Поддерживает и на статические, и динамические коды (информацию в динамических можно менять, не исправляя сам код; статический править нельзя).

Большая часть функционала доступна бесплатно, но даже платные тарифы нельзя назвать слишком дорогими — они обойдутся в сумму от 60 до 1200 рублей в месяц.

Перейти на сайт →

5. QR code Generator

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

Перейти на сайт →

6. Creambee

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

Перейти на сайт →

7. businesscards.tec-it.com

Отдельно выделим этот англоязычный сервис с расширенный функционалом для создания визиток. Он не только сделает QR-код с контактами, но и предложит больше 10 шаблонов оформления визитки и сформирует pdf-файл для печати (!). Если вдруг надо срочно отдать в печать новую визитку, а дизайнера нет, то этот сайт может спасти. Не самая удобная мобильная версия, но при желании можно сделать здесь визитки даже с телефона.

Перейти на сайт →

Используемые источники:

  • https://xakep.ru/2020/08/05/qrgen/
  • https://ru.qr-code-generator.com/
  • https://spark.ru/startup/mways/blog/63527/7-udobnih-generatorov-qr-kodov

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации