Категория > Новости > Вкуриваем QR. Как сделать QR-код с сюрпризом - «Новости»
Вкуриваем QR. Как сделать QR-код с сюрпризом - «Новости»5-08-2020, 20:00. Автор: Сергей |
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-код. В результате любой эксплоит, который мог быть исполнен браузером (например, написанный на jаvascript), можно было передать через QR. Сканер пытался отфильтровать опасные виды атак с помощью регулярных выражений, требуя, чтобы URI имел период с последующим продлением как минимум на два символа, транспортный протокол длиной не менее двух символов, за которым следует двоеточие, и чтобы в URI не было пробелов. Если содержимому не соответствует хотя бы одному из требований, то оно определяется как обычный текст, а не URI. Этот механизм блокирует атаки вроде Р’РѕС‚ как это выглядело. ![]() ![]() ![]() Как РјС‹ можем увидеть, уведомление появилось РІ браузере, Р° значит, URI СЃ потенциально вредоносным РєРѕРґРѕРј был выполнен. Однако выполняется данный JS-РєРѕРґ лишь тогда, РєРѕРіРґР° пользователь нажимает Open Browser (то есть «Открыть РІ браузере»). Еще РѕРґРёРЅ интересный пример РёР· 2012 РіРѕРґР°: эксперт РїРѕ информационной безопасности Равишанкар Боргаонкар (Ravishankar Borgaonkar) продемонстрировал, как сканирование простейшего QR может привести Рє форматированию устройств Samsung! Что Р¶Рµ было внутри? MMI-РєРѕРґ для СЃР±СЂРѕСЃР° РґРѕ заводских настроек: Самое опасное здесь — что человек без предварительной подготовки РЅРµ может узнать содержимое РєРѕРґР°, РЅРµ отсканировав его. Рђ человек очень любопытен: РІ различных исследованиях большинство испытуемых (которые, кстати, даже РЅРµ знали РѕР± эксперименте) сканировали QR-РєРѕРґ именно РёР· любопытства, забывая Рѕ собственной безопасности. Поэтому всегда Р±СѓРґСЊ внимателен! ![]() WWWЕсли Сѓ тебя нет сканера РєРѕРґРѕРІ, РЅРѕ СѓР№РјР° СЃРІРѕР±РѕРґРЅРѕРіРѕ времени — РјРѕР¶РЅРѕ попробовать расшифровать РєРѕРґ вручную. Р?нструкция есть РЅР° Хабре. QRGen — каждому РїРѕ кодуДля демонстрации средств работы СЃ QR-кодами СЏ Р±СѓРґСѓ использовать Kali Linux 2019.2 СЃ установленным Python версии 3.7 — это необходимо для корректной работы утилит. ![]() WARNINGРќРµ забывай РїСЂРѕ уголовную ответственность Р·Р° создание Рё распространение вредоносных программ, Рє которым РІ широком смысле относятся Рё наши «заряженные» QR-РєРѕРґС‹. Начнем СЃ утилиты QRGen, которая позволяет создавать QR-РєРѕРґС‹ СЃ закодированными РІ РЅРёС… скриптами. Рта утилита (Рё вектор атаки) направлена РЅР° проверку незащищенного Рё непопулярного РџРћ либо Р¶Рµ узкоспециализированных инструментов РІСЂРѕРґРµ складских QR-сканеров, отправляющих SQL-запросы Рє базе данных компании. Большинство современных сканеров РёР· соображений безопасности РЅРµ выполняют находящийся РІ QR-РєРѕРґРµ СЃРєСЂРёРїС‚. Соответственно, вариантов развития событий после сканирования РґРІР°: сканер просто выводит содержимое нашего изображения (что для нас совсем невыгодно) либо исполняет РєРѕРґ, спрятанный РІ изображении, отправляя SQL-запрос Рє СУБД или Web API, чтобы хакер СЃРјРѕРі его захватить. QRGen позволяет использовать готовые варианты либо задать РёС… самому. Устанавливаем QRGen, РєРѕРїРёСЂСѓСЏ репозиторий, Рё переходим РІ папку СЃ содержимым.
![]() QRGen требует Python версии 3.6 и выше. Если возникает ошибка, попробуй обновить интерпретатор. Устанавливаем все зависимости и запускаем сам скрипт.
Видим справку. ![]() Аргумент
Возможные атакиТеперь давай посмотрим на примеры из каждой категории, а также разберемся, какой урон и каким устройствам они могут нанести.
Посмотреть текстовые файлы со всеми вариантами «начинки» QR-кодов ты можешь в папке Теперь пара слов Рѕ последствиях атак подобными нагрузками. Первый класс атак — SQL-инъекции — используют РїСЂРё взломе БД Рё нарушении работы веб-сайтов. Например, запрос может вызывать зависание сайта. Следующий пример (РїРѕРґ номером 2) демонстрирует эксплуатацию XSS-уязвимости РїСЂРё атаке РЅР° веб-приложения СЃ использованием SVG (Scalable Vector Graphic). Рљ чему может привести XSS, ты, думаю, Рё без меня прекрасно знаешь, так что РїРѕРґСЂРѕР±РЅРѕ РЅР° этом останавливаться РЅРµ Р±СѓРґСѓ. Третий РїСѓРЅРєС‚ выводит РЅР° экран жертвы содержимое файла Четвертый пример представляет СЃРѕР±РѕР№ выражение, которое вызовет переполнение буфера (buffer overflow). РћРЅРѕ возникает, РєРѕРіРґР° объем данных для записи или чтения больше, чем вмещает буфер, Рё СЃРїРѕСЃРѕР±РЅРѕ вызвать аварийное завершение или зависание программы, ведущее Рє отказу РІ обслуживании (denial of service, DoS). Отдельные РІРёРґС‹ переполнений дают злоумышленнику возможность загрузить Рё выполнить произвольный машинный РєРѕРґ РѕС‚ имени программы Рё СЃ правами учетной записи, РѕС‚ которой РѕРЅР° выполняется, что делает эту ошибку довольно опасной. Пятый РїРѕ счету класс атак (XXE Injections) представляет СЃРѕР±РѕР№ вариант получения скрытой информации веб-сервера СЃ помощью анализа вывода XML-файлов. Конкретно РІ нашем примере РїСЂРё запросе Рє серверу тот ответит зашифрованным РІ Base64 содержимым файла Атаки форматной строки (пример 6) — это класс уязвимостей, который включает РІ себя предоставление специфичных для языка маркеров формата для выполнения произвольного РєРѕРґР° или СЃР±РѕСЏ программы. Вместо этого маловразумительного объяснения предлагаю РґСЂСѓРіРѕРµ: это класс атак, РєРѕРіРґР° приложение некорректно очищает пользовательский РІРІРѕРґ РѕС‚ управляющих конструкций, которые Рё выполняются. Если ты программировал РЅР° РЎ, то, конечно, помнишь те интересности СЃ выводом переменных через Седьмой РїСѓРЅРєС‚ представляет СЃРѕР±РѕР№ вариант command injection, которая выполняет определенный РєРѕРґ РЅР° стороне сервера. Р’ моем примере будет выполнена команда И наконец, последняя категория — это LFI-уязвимости (Local File Inclusion; включение локальных файлов), позволяющие просмотреть на уязвимых (или неправильно настроенных) серверах файлы и папки, которые не должны были быть видны всем. Один из возможных вариантов — просмотреть файл ![]() Обрати внимание, что в качестве тестового веб-приложения используется DVWA (Damn Vulnerable Web Application), который был специально разработан для обучения пентесту. Многие атаки на веб-приложения можно отработать на нем. ПрактикаА сейчас перейдем к практике — протестируем эту утилиту сами. Перейти обратно к новости |