Car Hacking: Ο απόλυτος οδηγός! – Part III


Στα προηγούμενα δύο μέρη είδαμε πως εγκαθιστούμε το car simulation στο μηχάνημά μας και τα απαραίτητα προγράμματα που θα πρέπει να χρησιμοποιήσουμε μαζί με τον απαραίτητο εξοπλισμό που θα χρειαστούμε. Στο σημερινό άρθρο θα σας παρουσιάσουμε την διαδικασία του exploitation αναλυτικά.

cyberpunk neon retro hacker car se

Θα εξετάσουμε τώρα τι είναι το SavvyCAN και θα το χρησιμοποιήσουμε με το ICSIM. Μετά από αυτό, θα εξετάσουμε τον τρόπο εκτέλεσης fuzzing και scripting με το SavvyCAN.

 

 

SavvyCAN

Υπάρχουν διάφορα λογισμικά που θα σας βοηθήσουν να παρακολουθείτε και να φιλτράρετε την επικοινωνία CAN.

Υπάρχουν δαπανηρά και ιδιόκτητα εργαλεία, καθώς και δωρεάν – ανοιχτού κώδικα εργαλεία.

Ο σκοπός αυτού του άρθρου είναι να σας βοηθήσει να ξεκινήσετε με το χακάρισμα αυτοκινήτου χωρίς υψηλό κόστος. Έτσι τα ακριβά εργαλεία δεν υπάρχουν στη λίστα μας.

Έχω ήδη γράψει αναλυτικά για τη φθηνή και δωρεάν εναλλακτική για αυτά τα ακριβά εργαλεία επικοινωνίας CAN. Εργαλεία όπως τα can-utils, το Wireshark λειτουργούν μια χαρά.

Όμως το SavvyCAN παρέχει πολύ περισσότερες επιπλέον δυνατότητες. Για αρχάριους, προσφέρει ένα ωραίο GUI, το οποίο σας βοηθά να πλοηγηθείτε εύκολα, να φιλτράρετε τα πακέτα, τα αναγνωριστικά κ.λπ. Για όσους ασχολούνται ήδη με το Car hacking, το SavvyCAN προσφέρει πραγματικά εξαιρετικές δυνατότητες. Τα προσωπικά μου αγαπημένα χαρακτηριστικά περιλαμβάνουν τη δυνατότητα εκτέλεσης scripts σε CAN framework,

Ας δούμε τον ορισμό του SavvyCAN από τον ιστότοπό τους.

«Το SavvyCAN είναι ένα πρόγραμμα C++ που βασίζεται σε πολλαπλές πλατφόρμες QT. Είναι ένα εργαλείο αντίστροφης μηχανικής και σύλληψης διαύλων CAN. Αρχικά γράφτηκε για να χρησιμοποιεί υλικό EVTV όπως τα EVTVDue και CANDue. Έκτοτε έχει επεκταθεί ώστε να μπορεί να χρησιμοποιεί οποιαδήποτε συσκευή συμβατή με socketCAN καθώς και τις πλακέτες Macchina M2 και Teensy 3.x. Μπορεί να συλλάβει και να στείλει σε πολλά bus και CAN συσκευές λήψης ταυτόχρονα.”

Περισσότερες πληροφορίες θα βρείτε εδώ:  https://www.savvycan.com/

Θεωρώ ότι είναι πολύ εύκολο να χρησιμοποιήσω το SavvyCAN παρά το can-utils . Και πάλι, ας μην ξεκινήσουμε τη συζήτηση μεταξύ του ποιο εργαλείο είναι καλύτερο και ποιο όχι, εφόσον εξυπηρετεί τον σκοπό σας.

1t0o6sskp87avdbt vteidq 1 2048x864

Εγκατάσταση SavvyCAN

Η εγκατάσταση του SavvyCAN είναι μια πραγματικά εύκολη και απλή διαδικασία. Μπορείτε να κάνετε λήψη των προκατασκευασμένων δυαδικών αρχείων για Linux, Mac και Windows από τη  διεύθυνση https://www.savvycan.com

Εγκατάσταση και εκτέλεση στο Ubuntu

wget https://github.com/collin80/SavvyCAN/releases/download/V199.1/SavvyCAN-305dafd-x86_64.AppImage

Δεν απαιτείται εγκατάσταση καθώς κατεβάζετε το appimage, κάντε το εκτελέσιμο και τρέξτε το!

chmod 744 SavvyCAN-305dafd-x86_64.AppImage
# και
./SavvyCAN-305dafd-x86_64.AppImage

Μπορείτε να εκτελέσετε το SavvyCAN

1j7p1mrnqgh nqd n3jdk7q

Μπορείτε να παίξετε με τη διεπαφή SavvyCAN για λίγο. Εάν θέλετε να χρησιμοποιήσετε το SavvyCAN με Macchina M2 ή οποιοδήποτε άλλο συμβατό υλικό, δεν χρειάζεστε κάποια επιπλέον εγκατάσταση.

Σκοπεύουμε να χρησιμοποιήσουμε το SavvyCAN με το ICSim, επομένως πρέπει να εγκαταστήσουμε το  qtserialbus .

Μόλις ανοίξετε το παράθυρο SavvyCAN, εάν πλοηγηθείτε στο Connection -> Open Connection Window -> Add New Connection, και θα δείτε ότι το  qtserialbus  είναι απενεργοποιημένο.

11xi8kqwlxa 6f0iwmmzcrq

Ας ξεκινήσουμε με την εγκατάσταση του  qtserialbus  για να μπορούμε να το χρησιμοποιήσουμε με το ICSim.

Εγκατάσταση του qt5

$ wget https://download.qt.io/official_releases/qt/5.14/5.14.4/qt-opensource-linux-x64-5.14.2.run

Αφού κατεβάσετε το qt5, πρέπει να το εγκαταστήσετε/τρέξετε

$ chmod a+x ./qt-opensource-linux-x64-5.14.2.run
$ sudo ./qt-opensource-linux-x64-5.14.2.run
1gegqxcjhupyuzzzncavt6q
11xi8kqwlxa 6f0iwmmzcrq 1 1024x620

Σημειώστε το όνομα διαδρομής, θα το χρειαστείτε αργότερα.

Μόλις εγκατασταθεί το qt5, πρέπει να εγκαταστήσετε το qtserialbus, καθώς αυτό δεν συμπεριλαμβάνεται στο επίσημο αποθετήριο του Ubuntu. Πρέπει λοιπόν να το φτιάξουμε μόνοι μας.

Εγκαταστήστε το qtserialbus

$ sudo apt install qtdeclarative5-dev qttools5-dev g++
$ git clone https://github.com/qt/qtserialbus
$ cd qtserialbus
$ /home/y0g3sh/Qt5.14.2/5.14.2/gcc_64/bin/qmake .
$ make
$ sudo make install

Κατασκευάστε το SavvyCAN

Για την χρήση του qtserialbus, του SavvyCAN του  AppImage, το  αρχείο που κατεβάσατε νωρίτερα δεν θα λειτουργήσει. Το SavvyCAN πρέπει να κατασκευαστεί με το qmake.

$ git clone https://github.com/collin80/SavvyCAN
$ cd SavvyCAN
$ /home/y0g3sh/Qt5.14.2/5.14.2/gcc_64/bin/qmake CONFIG+=debug
$ make
13jlip6vd17coz7vgq6znfg

Θα χρειαστεί λίγος χρόνος για να εγκατασταθεί.

Μόλις εγκατασταθούν όλα, ξεκινήστε τον προσομοιωτή ICSim, ξεκινήστε τα πάντα εκτός από τα can-utils. Αντί να χρησιμοποιούμε το can-utils για να καταγράψουμε την επικοινωνία CAN, θα χρησιμοποιήσουμε το SocketCAN.

Εκκίνηση του SavvyCAN

Εκκινήστε το SavvyCAN που μόλις δημιουργήσαμε και όχι το appimage που κατεβάσαμε νωρίτερα.

Θυμηθείτε, εάν θέλετε να το εκτελέσετε σε ένα πραγματικό αυτοκίνητο και να μην το χρησιμοποιήσετε με το qtserialbus, μπορείτε να συνεχίσετε να χρησιμοποιείτε τα appimage και δεν χρειάζεται να περάσετε όλη αυτή την ταλαιπωρία της κατασκευής του SavvyCAN.

$ cd SavvyCAN 
$ ./SavvyCAN

Τώρα μπορείτε να ανοίξετε το παράθυρο σύνδεσης και θα παρατηρήσετε ότι το QT SerialBus έχει ενεργοποιηθεί.

1icphcwmpj0hcedvxkkjhza

Προσθήκη vcan0 στο SocketCAN

Για να κάνετε μια νέα σύνδεση στο SavvyCAN,

  1. Ανοίξτε το SavvyCAN
  2. Μετάβαση  στο  μενού Σύνδεση ->  Άνοιγμα παραθύρου σύνδεσης  ->  Προσθήκη νέας σύνδεσης συσκευής
  3. Επιλέξτε τη σύνδεση με την παρακάτω ρύθμιση

Τύπος σύνδεσης ως  QT SerialBus Devices
SerialBus Τύπος συσκευής ως  socketcan
Θύρα ως  vcan0

1pgayq6c1omsehh2vevzsuw

Στη συνέχεια, δημιουργήστε μια νέα σύνδεση.
Μόλις ολοκληρωθεί η σύνδεση, μπορείτε να δείτε τα CAN frameworks να εμφανίζονται στο παράθυρο του SavvyCAN, κάτι που είναι ένα καλό σημάδι ότι όλα λειτουργούν καλά και καλά.

1j7p1mrnqgh nqd n3jdk7q 1

Για να κατανοήσουμε καλύτερα το SavvyCAN, ας κάνουμε τα ίδια πράγματα που κάναμε νωρίτερα χρησιμοποιώντας τα can-utils, αλλά αυτή τη φορά με το SavvyCAN.

Το SavvyCAN παρέχει μια ωραία και διαισθητική διεπαφή για να φιλτράρετε τα καρέ κατά αναγνωριστικό. Μπορείτε να καταργήσετε την επιλογή των αναγνωριστικών που δεν χρειάζεστε, από το δεξί παράθυρο. Με αυτόν τον τρόπο μπορείτε να αναγνωρίσετε γρήγορα το αναγνωριστικό που σχετίζεται.

Ένα άλλο πολύ ωραίο χαρακτηριστικό είναι η “Λειτουργία αντικατάστασης”. Εάν αυτή η επιλογή είναι ενεργοποιημένη, τα καρέ θα αντικατασταθούν στην ίδια σειρά.

1yith1opww81foiq2gu6gvq

Replay Attack

Η εκτέλεση μιας Replay Attack χρησιμοποιώντας το SavvyCAN είναι πολύ πιο εύκολη. Μπορείτε να ανοίξετε τις επιλογές αναπαραγωγής στο μενού Send Frames. Μπορείτε είτε να φορτώσετε δεδομένα από ένα αρχείο είτε να τα φορτώσετε απευθείας από τα δεδομένα που καταγράφηκαν. Μπορείτε επίσης να επιλέξετε ποιο αναγνωριστικό θα επαναληφθεί από το μενού φιλτραρίσματος αναγνωριστικού.

Προσδιορισμός του arbitration ID

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

Το SavvyCAN παρέχει πολλά εργαλεία RE. Ένα από τα οποία χρησιμοποιώ συχνά είναι το “Sniffer”. Αυτό μου επιτρέπει να “ξεθωριάζω” τα ανενεργά byte και να αναγνωρίζω γρήγορα τα αναγνωριστικά.

Για παράδειγμα, ας προσπαθήσουμε να δούμε το αναγνωριστικό για το στροφόμετρο. Για να αναγνωρίσω το αναγνωριστικό στροφόμετρου, θα ανοίξω το Sniffer και θα εξαφανίσω τα ανενεργά byte.

Ο τρόπος με τον οποίο τα προσδιορίζω είναι, ας υποθέσουμε ότι υπάρχουν 20 διαθέσιμα αναγνωριστικά. Απενεργοποιώ τουλάχιστον το ένα τρίτο από αυτά — τρέχω την ενέργεια στο αυτοκίνητο/ICSim— παρατηρώ την αλλαγή στα καρέ. Το κάνω αυτό μέχρι να μείνω με ένα μόνο αναγνωριστικό.

Ας δούμε το Sniffer, ένα από τα εργαλεία RE του SavvyCAN σε δράση.

1rhef8ut1fgxzintrqcbjyq

Εδώ δεν βρήκα καμία αλλαγή στα byte που να αντιστοιχεί στη δράση μου. Οπότε θα κινηθώ για άλλα αναγνωριστικά.

1c5isd8 nzya3rsa59gzixw

Φαίνεται ότι το 0x244 είναι αυτό που ψάχνουμε. Μπορείτε να παρατηρήσετε το μοτίβο στα byte αλλαγής όταν πατηθεί το γκάζι. Καθώς η ταχύτητα αυξάνεται, το στροφόμετρο εμφανίζει την αλλαγή στο 3ο και 4ο byte (μετρώντας από Zeroth Byte)

Μπορείτε να το κάνετε αυτό για όλες τις ενέργειες που είναι διαθέσιμες στο ICSim.

Αποστολή προσαρμοσμένων frames

Το SavvyCAN έχει επίσης ένα άλλο χαρακτηριστικό που μπορείτε να τροποποιήσετε τα πακέτα εν κινήσει κατά την αποστολή προσαρμοσμένων frames. Για να το κάνετε αυτό, πρέπει να ανοίξετε το Frame Sender μέσα από το μενού Send Frames.

Ας “κοροϊδέψουμε” το στροφόμετρο. Από το παραπάνω παράδειγμα, όταν καθαρίσαμε τα πακέτα, παρατηρήσαμε πώς λειτουργεί το στροφόμετρο.

Το 3ο και το 4ο Byte αυξάνονται με την αύξηση του γκαζιού. Αυτό που θα κάνουμε λοιπόν είναι να στείλουμε το προσαρμοσμένο frame, να τροποποιήσουμε τα byte εν κινήσει για να παρατηρήσουμε την αλλαγή στο στροφόμετρο.

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

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

Η στήλη δεδομένων θα αποτελείται από δεκαεξαδικές τιμές, το αναγνωριστικό θα πρέπει να έχει τη μορφή 0x123, το έναυσμα πρέπει να είναι η τιμή σε ms, η καθυστέρηση μεταξύ κάθε καρέ και η τροποποίηση πρέπει να αποτελείται από τροποποίηση σε byte.

Παράδειγμα αυτό που θα ήθελα να κάνω είναι, θέλω να στείλω στο Bus 0, ID 0x244 (στροφόμετρο), δεδομένα ως 0x00 0x00 0x00 0x00 0x00 και να αυξάνω το 3ο byte κατά 2 κάθε φορά, οπότε στην τροποποίηση, μπορείτε να γράψετε d3 =d3+2. Μόλις τελειώσετε, βεβαιωθείτε ότι έχετε επιλέξει το πλαίσιο ελέγχου Ενεργοποίηση (EN).

1urcxnv1lph3ib4hyvzeoha

 

Κάπου εδώ τελείωσε η σειρά οδηγών Car Hacking.

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


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

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